zoukankan      html  css  js  c++  java
  • MyBatis学习(一)简介及入门案例

    1.什么是MyBatis?

      MyBatis是一个支持普通SQL查询,存储过程,和高级映射的优秀持久层框架。MyBatis去掉了几乎所有的JDBC代码和参数的手工设置以及对结果集的检索封装。MyBatis可以使用简单的XML或注解进行配置和原始映射,以将接口和Java的POJO映射成数据库中的记录。

      MyBatis作为持久层框架,主要思想是将程序中大量的SQL语句剥离出来,配置在配置文件中,以实现SQL的灵活配置。这样的好处是将SQL语句和程序代码分离,可以在不修改代码的前提下,直接在配置文件中修改SQL。

    2.MyBatis和Hibernate的区别。

      Hibernate是以一种“全自动”的ORM框架,它实现了数据库表和POJO之间的映射,以及SQL的自动生成。

      MyBatis相对于hibernate来说,是一种“半自动化”的ORM框架,MyBatis的着力点在pojo和sql之间的映射,MyBatis虽然也实现了数据库表和pojo之间的映射,但是并不能在运行期间生成SQL语句,需要程序员在配置文件中配置,将SQL需要的参数和返回的结果字段映射到指定POJO。

      Mybatis以SQL开发的工作量和数据库移植上的让步,为系统设计提供了更大的自由空间。

    3.入门案例

    3.1创建一个项目,导入数据库连接、MyBatis的jar包

    3.2创建一个数据库-mybatis,创建一个表t_user

    CREATE TABLE `t_user` (
      `id` int(11) NOT NULL AUTO_INCREMENT,
      `username` varchar(18) NOT NULL,
      `sex` char(2) NOT NULL,
      `age` int(11) NOT NULL,
      PRIMARY KEY (`id`)
    ) ENGINE=InnoDB DEFAULT CHARSET=utf8;

    3.3创建一个User类

    public class User {
    
        private Integer id;
        private String username;
        private String sex;
        private Integer age;
        public User(String username, String sex, Integer age) {
            super();
            this.username = username;
            this.sex = sex;
            this.age = age;
        }
        public User() {
            super();
        }
    //省略get、set方法
    
    }

    3.4配置这个pojo对应的UserMapper.xml

    <?xml version="1.0" encoding="UTF-8"?>
    <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
     "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
     
     <!-- namespace指用户自定义的命名空间 -->
     <mapper namespace="com.dj.mapper.UserMapper">
         <!-- 
             id="save"是唯一的标示符
            parameterType属性指明插入时使用的参数类型
            useGeneratedKeys="true"表示使用数据库的自动增长策略
          -->
         <insert id="save" parameterType="com.dj.pojo.User" useGeneratedKeys="true">
             insert into t_user(username,sex,age) values(#{username},#{sex},#{age})
         </insert>
     </mapper>

    3.5配置mybatis-config.xml

    <?xml version="1.0" encoding="UTF-8" ?>
    <!DOCTYPE configuration
      PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
      "http://mybatis.org/dtd/mybatis-3-config.dtd">
      <!--  XML 配置文件包含对 MyBatis 系统的核心设置 -->
    <configuration>
        <!-- 指定 MyBatis 所用日志的具体实现 -->
        <settings>
            <setting name="logImpl" value="LOG4J"/>
        </settings>
        <!-- 环境配置,即连接的数据库。 -->
        <environments default="mysql">
        <environment id="mysql">
        <!--  指定事务管理类型,type="JDBC"指直接简单使用了JDBC的提交和回滚设置 -->
          <transactionManager type="JDBC"/>
          <!--  dataSource指数据源配置,POOLED是JDBC连接对象的数据源连接池的实现。 -->
          <dataSource type="POOLED">
            <property name="driver" value="com.mysql.jdbc.Driver"/>
            <property name="url" value="jdbc:mysql://localhost:3306/mybatis"/>
            <property name="username" value="root"/>
            <property name="password" value="123456"/>
          </dataSource>
        </environment>
      </environments>
      <!-- mappers告诉了MyBatis去哪里找持久化类的映射文件 -->
      <mappers>
          <mapper resource="com/dj/mapper/UserMapper.xml"/>
      </mappers>
    </configuration>

    3.6编写测试类

    public class MyBatisTest {
        
        @Test
        public void save() throws Exception{
            //读取mybatis-config.xml
            InputStream inputStream = Resources.getResourceAsStream("mybatis-config.xml");
            //初始化mybatis,创建一个sqlsessionfactory类的实例
            SqlSessionFactory factory = new SqlSessionFactoryBuilder().build(inputStream);
            //创建一个SqlSession实例
            SqlSession sqlSession = factory.openSession();
            //创建一个User对象
            User user = new User("王五", "男", 12);
            sqlSession.insert("com.dj.mapper.UserMapper.save", user);
            sqlSession.commit();
            sqlSession.close();
        }
    
    }

    运行后可以看到结果

    要想控制台显示sql语句,要导入log4j的jar包和log4j.properties文件。

    # Global logging configuration
    log4j.rootLogger=ERROR, stdout
    # MyBatis logging configuration...
    log4j.logger.com.dj.mapper.UserMapper=DEBUG
    # Console output...
    log4j.appender.stdout=org.apache.log4j.ConsoleAppender
    log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
    log4j.appender.stdout.layout.ConversionPattern=%5p [%t] - %m%n
     

     

    控制台有如下显示

     源码下载路径https://files.cnblogs.com/files/dj-blog/MyBatisTest.zip

  • 相关阅读:
    apache
    zabbix 问题
    node起步
    记录一次利用cropperjs修建图片并上传的过程
    vue走过的那些坑
    关于vue传参问题
    mybatis的走过的坑
    通常如何对网站的文件和资源进行优化?
    一个页面从输入URL到页面加载显示完成,这个过程都发生什么?
    JQuery---过滤器
  • 原文地址:https://www.cnblogs.com/dj-blog/p/7544612.html
Copyright © 2011-2022 走看看