01.mybatis


mybatis: 一个持久层框架,支持定制化的SQL,存储过程及高级映射;

==========================================

01. 创建Marven工程;

02. 配置依赖

 1 
 2         
 3         
 4             org.mybatis
 5             mybatis
 6             3.5.5
 7         
 8         
 9         
10             mysql
11             mysql-connector-java
12             8.0.24
13         
14         
15         
16             log4j
17             log4j
18             1.2.12
19         
20         
21         
22             junit
23             junit
24             4.12
25             test
26         
27     

03. 数据表实体类的开发 (实体类按表中列名进行配置)

 1 public class User implements Serializable {
 2     private Integer id;
 3     private String username;
 4     private Date birthday;
 5     private String sex;
 6     private String address;
 7 
 8     public Integer getId() {
 9         return id;
10     }
11 
12     public void setId(Integer id) {
13         this.id = id;
14     }
15 
16     public String getUsername() {
17         return username;
18     }
19 
20     public void setUsername(String username) {
21         this.username = username;
22     }
23 
24     public Date getBirthday() {
25         return birthday;
26     }
27 
28     public void setBirthday(Date birthday) {
29         this.birthday = birthday;
30     }
31 
32     public String getSex() {
33         return sex;
34     }
35 
36     public void setSex(String sex) {
37         this.sex = sex;
38     }
39 
40     public String getAddress() {
41         return address;
42     }
43 
44     public void setAddress(String address) {
45         this.address = address;
46     }
47 
48     @Override
49     public String toString() {
50         return "User{" +
51                 "id=" + id +
52                 ", username='" + username + '\'' +
53                 ", birthday=" + birthday +
54                 ", sex='" + sex + '\'' +
55                 ", address='" + address + '\'' +
56                 '}';
57     }
58 }

04.数据持久层接口配置 (下面代码展示的是注解方式,如果是XML配置方式,取消注解,同时在资源中配置好相应的配置文件)

public interface IUserDao {
    /**
     * 查询所有
     *
     * @return
     */
    @Select("select * from user")
    List findAll();
}

05.mybatis配置文件处理

  a. 在Resource目录下,创建配置文件 SqlMapConfig.xml  (配置文件名称可自定义,无特殊要求);

     b. 配置Config的头部约束条件

<?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">

  c. 注解方式下的配置


<configuration>
    
    <environments default="mysql">
        
        <environment id="mysql">
            
            <transactionManager type="JDBC">transactionManager>
            
            <dataSource type="POOLED">
                
                <property name="driver" value="com.mysql.cj.jdbc.Driver"/>
                <property name="url" value="jdbc:mysql://localhost:3306/framelearn"/>
                <property name="username" value="root"/>
                <property name="password" value="123456"/>
            dataSource>
        environment>
    environments>

    
    <mappers>
        <mapper class="org.example.dao.IUserDao"/>
    mappers>

configuration>

   XML配置方式下的配置如下 (mapper不同,其它一样) --> resource指定的是资源目录下的模块配置文件

    
    <mappers>
        <mapper resource="org/example/dao/IUserDao.xml"/>
    mappers>

  d. 若为XML配置模式,则需要在资源目录下,配置相应的配置文件 (注解模式下,不需要配置这个XML文件)

  配置Mapper文件头约束  

<?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 (直接粘贴在文件头下面即可)

<mapper namespace="org.example.dao.IUserDao">
    
    <select id="findAll" resultType="org.example.domain.User">
        select * from user ;
    select>
mapper>

05. 上述配置完成后,即可开始测试案例

 1 public class MybatisTest {
 2     public static void main(String[] args) throws IOException {
 3         //1.读取配置文件
 4         InputStream in = Resources.getResourceAsStream("SqlMapConfig.xml");
 5         //2.创建SqlSessionFactory工厂
 6         SqlSessionFactoryBuilder builder = new SqlSessionFactoryBuilder();
 7         SqlSessionFactory factory = builder.build(in);
 8         //3.使用工厂生产SqlSession对象
 9         SqlSession sqlSession = factory.openSession();
10         //4.使用SqlSession创建DAO接口的代理对象
11         IUserDao userDao = sqlSession.getMapper(IUserDao.class);
12         //5.使用代理对象取数
13         List users = userDao.findAll();
14         for(User user:users){
15             System.out.println(user);
16         }
17         //6.资源释放
18         sqlSession.close();
19         in.close();
20     }
21 }

各模式的应用说明