01.mybatis

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

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

01. 创建Marven工程;

02. 配置依赖

 1 <dependencies>
 2         <!--mybatis依赖-->
 3         <dependency>
 4             <groupId>org.mybatis</groupId>
 5             <artifactId>mybatis</artifactId>
 6             <version>3.5.5</version>
 7         </dependency>
 8         <!--mySql依赖-->
 9         <dependency>
10             <groupId>mysql</groupId>
11             <artifactId>mysql-connector-java</artifactId>
12             <version>8.0.24</version>
13         </dependency>
14         <!--日志依赖-->
15         <dependency>
16             <groupId>log4j</groupId>
17             <artifactId>log4j</artifactId>
18             <version>1.2.12</version>
19         </dependency>
20         <!--测试依赖-->
21         <dependency>
22             <groupId>junit</groupId>
23             <artifactId>junit</artifactId>
24             <version>4.12</version>
25             <scope>test</scope>
26         </dependency>
27     </dependencies>

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<User> 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. 注解方式下的配置

<!--mybatis的主配置文件-->
<configuration>
    <!--配置环境-->
    <environments default="mysql">
        <!--配置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>

    <!--指定映射配置文件的位置,映射配置文件指的是每个dao独立的配置文件-->
    <mappers>
        <mapper class="org.example.dao.IUserDao"/>
    </mappers>

</configuration>

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

    <!--指定映射配置文件的位置,映射配置文件指的是每个dao独立的配置文件-->
    <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<User> users = userDao.findAll();
14         for(User user:users){
15             System.out.println(user);
16         }
17         //6.资源释放
18         sqlSession.close();
19         in.close();
20     }
21 }

 

各模式的应用说明

 

 

   

posted @ 2022-02-28 15:48  耗喜天涯  阅读(14)  评论(0编辑  收藏  举报