本文最后更新于:November 4, 2022 pm
                  
                
              
            
            
              
                
                MyBatis是一个持久层框架
它封装了jdbc操作的很多细节, 使开发者只需关注sql语句本身, 而无需关注注册驱动, 创建连接等繁杂过程.
它使用了ORM思想实现了结果集的封装.
ORM(Object Relational Mapping): 对象关系映射
就是把数据库表和实体类及实体类的属性对应起来
让我们可以操作实体类就实现操作数据库表.
一. MyBatis环境搭建
第一步: 创建Maven工程并导入坐标
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27
   | <dependencies>         <dependency>             <groupId>org.mybatis</groupId>             <artifactId>mybatis</artifactId>             <version>3.4.6</version>         </dependency>
          <dependency>             <groupId>mysql</groupId>             <artifactId>mysql-connector-java</artifactId>             <version>5.1.47</version>             <scope>runtime</scope>         </dependency>
          <dependency>             <groupId>junit</groupId>             <artifactId>junit</artifactId>             <version>4.12</version>             <scope>test</scope>         </dependency>
          <dependency>             <groupId>log4j</groupId>             <artifactId>log4j</artifactId>             <version>1.2.12</version>         </dependency>     </dependencies>
 
  | 
 
第二步: 创建实体类和dao的接口
User实体类:
1 2 3 4 5 6 7 8 9 10 11 12 13 14
   | package top.clearlight.domain;
  import java.util.Date;
  public class User {
      private Integer id;     private String username;     private Date birthday;     private String sex;     private String address;
       }
 
  | 
 
UserDao接口:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
   | package top.clearlight.dao;
  import top.clearlight.domain.User;
  import java.util.List;
 
 
 
  public interface UserDao {
      
 
      List<User> findAll();
  }
 
  | 
 
第三步: 创建MyBatis的主配置文件
SqlMapConfig.xml
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28
   | <?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>          <environments default="mysql">                  <environment id="mysql">                          <transactionManager type="JDBC"></transactionManager>                          <dataSource type="POOLED">                                  <property name="driver" value="com.mysql.jdbc.Driver"/>                 <property name="url" value="jdbc:mysql://localhost:3306/stu"/>                 <property name="username" value="root"/>                 <property name="password" value="123456"/>             </dataSource>         </environment>     </environments>
           <mappers>         <mapper resource="top/clearlight/dao/UserDao.xml"/>     </mappers> </configuration>
 
  | 
 
第四步: 创建映射配置文件
resources→top→clearlight→dao→UserDao.xml:
1 2 3 4 5 6 7 8 9 10 11
   | <?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"> <mapper namespace="top.clearlight.dao.UserDao">          <select id="findAll" resultType="top.clearlight.domain.User">         select *         from user     </select> </mapper>
 
  | 
 
注意事项:
创建UserDao.xml 和 UserDao.java 时是为了和之前的知识一致, 
在MyBatis中它把持久层的操作接口名称和映射文件也叫做: Mapper
所以: UserDao 和 UserMapper 是一样的
 
在idea中创建目录的时候, 它和包是不一样的
包在创建时: top.clearlight.dao它是三级结构
目录在创建时: top.clearlight.dao它是一级目录
 
MyBatis的映射配置文件位置必须和dao接口的包结构相同
 
映射配置文件的mapper标签namespace属性的取值必须是dao接口的全限定类名
 
映射配置文件的操作配置(select), id属性的取值必须是dao接口的方法名
 
当遵从第三四五点之后, 开发中就无需再写dao的实现类
测试类

注意事项:
MyBatis基于注解的入门案例:
把UserDao.xml移除, 在dao接口的方法上使用@Select注解, 并且指定SQL语句
UserDao接口:
1 2 3 4 5 6 7 8
   | public interface UserDao {
      
 
      @Select("select * from user")     List<User> findAll(); }
 
  | 
 
同时需要在SqlMapConfig.xml中的mapper配置时, 使用class属性指定dao接口的全限定类名
SqlMapConfig.xml:
1 2 3 4 5 6 7
   |  
 
      <mappers>
          <mapper class="top.clearlight.dao.UserDao"/>     </mappers>
 
  | 
 
明确:
实际开发中, 都是越简便越好, 所以都是采用不写dao实现类的方式.
不管使用XML还是注解配置.
但是MyBatis它是支持写dao实现类的.