• 中文
    • English
  • 注册
  • 查看作者
    • MyBatis:简单使用

      一.  创建数据库

      1.  创建数据库

      CREATE DATABASE demo;

      2.  创建数据表

      CREATE TABLE BOOK(
      BOOK_ID INT(6) PRIMARY KEY AUTO_INCREMENT,
      NAME VARCHAR(100),
      AUTHOR VARCHAR(100),
      PRICE DOUBLE(6,2)
      );

      3.  插入数据

      INSERT INTO BOOK (NAME,AUTHOR,PRICE) VALUES('西游记','吴承恩',9.9);
      INSERT INTO BOOK (NAME,AUTHOR,PRICE) VALUES('水浒站','施耐庵',19.9);

      二.   添加依赖

      Mybatis官网下载最新版本,解压后将根目录的文件添加到本地项目的lieb文件夹:

      MyBatis:简单使用

      接下来打开lib目录,可以看到下面的12个jar包:

      MyBatis:简单使用

      将上面的lib目录下的所有文件也添加到本地项目的lib文件夹

      接下来再将Mysql的驱动文件添加到本地项目的lib文件夹,到这里,本地项目的lib文件夹下一共有以下14个jar包:

      MyBatis:简单使用

      在进行下一步前,我们先创建一个Book的实体类:

      package io.zhangjia.entity;
      
      public class Book {
          /*建议严格遵守驼峰命名法*/
          private Integer bookId;
          private String name;
          private String author;
          private Double price;
      
          public Integer getBookId() {
              return bookId;
          }
      
          public void setBookId(Integer bookId) {
              this.bookId = bookId;
          }
      
          public String getName() {
              return name;
          }
      
          public void setName(String name) {
              this.name = name;
          }
      
          public String getAuthor() {
              return author;
          }
      
          public void setAuthor(String author) {
              this.author = author;
          }
      
          public Double getPrice() {
              return price;
          }
      
          public void setPrice(Double price) {
              this.price = price;
          }
      
          @Override
          public String toString() {
              return "Book{" +
                      "bookId=" + bookId +
                      ", name='" + name + '\'' +
                      ", author='" + author + '\'' +
                      ", price=" + price +
                      '}';
          }
      }

      三.  配置文件

      一共需要配置两个文件:mybatis-config.xml和项目名Mapper.xml,首先配置项目名Mapper.xml:

      1.   右击src,新建一个File:

      MyBatis:简单使用

      2.  输入文件名:BookMapper.xml,点击OK

      MyBatis:简单使用

      3.  编辑BookMapper.xml,添加以下内容:

      (注意:resultType是将每条查询结果封装成什么类型,比如Book类就是Book,即使查询全部的书,resultType也不应该是List<Book>,同理,比如List<Map<String,Object>>的resultType应该是map)

      <?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:命名空间,应该设置为数据层接口的限定名,简洁起见,这里以zhangjia为例-->
      <mapper namespace="zhangjia">
          <!--
              语句对象:
                  id:是语句的唯一标识,不能重复,一般设置为数据层的方法名,同时建议数据层的方法不要重载
                  resultType:将将每条查询结果封装成什么类型,比如下面我们将每个查询结果封装成一个Book的实体类,必须是全类名
          -->
      
            <select id="queryById" resultType="io.zhangjia.entity.Book">
          <!--  查询单条语句,和JDBC中不同,占位符不再使用? 而是使用#{字段名} -->
          SELECT * FROM BOOK WHERE BOOK_ID = #{BOOK_ID}
          </select>
          <!--  查询多条语句 -->
          <select id="queryAll" resultType="io.zhangjia.entity.Book">
              SELECT * FROM BOOK;
          </select>
        
      </mapper>

      如果你直接复制上面的代码,请将红框里的内容根据自己的项目详情替换:

      MyBatis:简单使用

      接下来配置mybatis-config.xml:

      1.   右击src,新建一个File:

      MyBatis:简单使用

      2.  输入文件名:mybatis-config.xml,点击OK

      MyBatis:简单使用

      3.  编辑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">
      <configuration>
              <!--
                  开启自动驼峰命名转换为数据库的命名方式,如果不开启,那么bookId将无法获取,一直是nul
              -->
              <settings>
                  <setting name="mapUnderscoreToCamelCase" value="true"/>
              </settings>
          <environments default="development">
              <environment id="development">
                  <transactionManager type="JDBC"/>
                  <dataSource type="POOLED">
                      <property name="driver" value="com.mysql.jdbc.Driver"/>
                      <property name="url" value="jdbc:mysql://localhost:3306/数据库名(注意是数据库名,不是数据表名)"/>
                      <property name="username" value="数据库用户名"/>
                      <property name="password" value="数据库密码"/>
                  </dataSource>
              </environment>
          </environments>
          <mappers>
      <!--     如果有路径,需要这样配置:   <mapper resource="xxx/xxx/.../BlogMapper.xml"/>-->
              <mapper resource="xxx/xxx/.../项目名Mapper.xml"/>
          </mappers>
      </configuration>

      以我们的刚刚创建的数据库为例,则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">
      <configuration>
          <!--
              开启自动驼峰命名转换为数据库的命名方式,如果不开启,那么bookId将无法获取,一直是nul
          -->
          <settings>
              <setting name="mapUnderscoreToCamelCase" value="true"/>
          </settings>
          <environments default="development">
              <environment id="development">
                  <transactionManager type="JDBC"/>
                  <dataSource type="POOLED">
                      <property name="driver" value="com.mysql.jdbc.Driver"/>
                      <property name="url" value="jdbc:mysql://localhost:3306/demo"/>
                      <property name="username" value="root"/>
                      <property name="password" value="zhangjia"/>
                  </dataSource>
              </environment>
          </environments>
          <mappers>
              <mapper resource="BookMapper.xml"/>
      <!--   如果不是同级目录,需要这样配置: <mapper resource="xxx/xxx/.../BookMapper.xml"/>-->
          </mappers>
      </configuration>

      如果你直接复制上面的代码,请将红框里的内容根据自己的项目详情替换:

      MyBatis:简单使用

      四.  开启日志

      开启日志的步骤也非常简单,右击src,新建名为log4j.properties的文件后,添加以下内容即可:

      # Global logging configuration
      log4j.rootLogger=DEBUG, stdout
      #log4j.rootLogger=ERROR, stdout 如果不想开启DEBUG模式,可以将rootLogger设置为ERROR
      # MyBatis logging configuration...
      log4j.logger.org.mybatis.example.BlogMapper=TRACE
      # 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

      MyBatis:简单使用

      五.  执行sql语句

      编写测试类,执行sql语句,其中:

       resource的地址应和

      package io.zhangjia.util;
      
      import org.apache.ibatis.io.Resources;
      import org.apache.ibatis.session.SqlSession;
      import org.apache.ibatis.session.SqlSessionFactory;
      import org.apache.ibatis.session.SqlSessionFactoryBuilder;
      
      import java.io.IOException;
      import java.io.InputStream;
      import java.util.List;
      
      public class Main {
          public static void main(String[] args) throws IOException {
      //      从XML中构建SqlSessionFactory,也就是mybatis-config.xml文件的地址
              String resource = "mybatis-config.xml";
              InputStream inputStream = Resources.getResourceAsStream(resource);
              SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
      //       从sqlSessionFactory中获取SqlSession
              SqlSession sqlSession = sqlSessionFactory.openSession();
      /*      其中zhangjia是<mapper namespace="zhangjia">设置的命名空间
              queryById <select id="queryById"设置的语句唯一表示
              2是占位符,代表查询bookId = 2 的记录
              selectOne代表结果为单条
      */
              Object o = sqlSession.selectOne("zhangjia.queryById", 2);
              System.out.println("o = " + o);
      
      //           selectList代表查询结果为多条
              List<Object> objects = sqlSession.selectList("zhangjia.queryAll");
              for (Object ot : objects) {
                  System.out.println("ot = " + ot);
      
              }
              sqlSession.close();
              inputStream.close();
          }
      }

    • 0
    • 0
    • 0
    • 1.7k
    • 请登录之后再进行评论

      登录

      赞助本站

      • 支付宝
      • 微信
      • QQ

      感谢一直支持本站的所有人!

      单栏布局 侧栏位置: