Mybatis源码解析之环境搭建

项目相继都停了,导致最近比较清闲,遂准备学习Mybatis源码,学习源码首先要先会使用,故搭建个demo。

该demo不考虑其他东西,只使用Mybatis,使用maven构建,Mysql数据库。

pom.xml依赖的包:

<dependency>
            <groupId>junit</groupId>
            <artifactId>junit</artifactId>
            <version>4.11</version>
            <scope>test</scope>
        </dependency>

        <dependency>
            <groupId>org.mybatis</groupId>
            <artifactId>mybatis</artifactId>
            <version>3.2.8</version>
        </dependency>

        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <version>5.1.27</version>
        </dependency>
View Code

另配置过程中,出现一个问题,找不到can not found resourse com/logistics/mapper/UserMapper.xml
<mappers>
<mapper resource="com/logistics/mapper/UserMapper.xml"/>
</mappers>

build标签 加入下面代码

 1 <build>
 2         <resources>
 3             <resource>
 4                 <directory>src/main/java</directory>
 5                 <includes>
 6                     <include>**/*.xml</include>
 7                 </includes>
 8             </resource>
 9         </resources>
10     </build>
View Code

配置的mybatis配置文件如下:

 1 <?xml version="1.0" encoding="UTF-8"?>
 2 <!DOCTYPE configuration PUBLIC "-//mybatis.org//DTD Config 3.0//EN" "http://mybatis.org/dtd/mybatis-3-config.dtd">
 3 <configuration>
 4 
 5     <!--<properties>-->
 6         <!--<property name="dialect" value="mysql"/>-->
 7     <!--</properties>-->
 8 
 9     <properties resource="jdbc.properties"></properties>
10 
11 
12     <settings>
13         <!-- 使全局的映射器启用或禁用缓存。 -->
14         <setting name="cacheEnabled" value="true"/>
15         <!-- 全局启用或禁用延迟加载。当禁用时,所有关联对象都会即时加载。 -->
16         <setting name="lazyLoadingEnabled" value="true"/>
17         <!-- 当启用时,有延迟加载属性的对象在被调用时将会完全加载任意属性。否则,每种属性将会按需要加载。 -->
18         <setting name="aggressiveLazyLoading" value="false"/>
19         <!-- 允许JDBC支持生成的键。 -->
20         <setting name="useGeneratedKeys" value="false"/>
21     </settings>
22 
23     <environments default="development">
24         <environment id="development">
25             <transactionManager type="JDBC"/>
26             <!-- 配置数据库连接信息 -->
27             <dataSource type="POOLED">
28                 <property name="driver" value="${jdbc.driverClassName}"/>
29                 <property name="url" value="${jdbc.url}"/>
30                 <property name="username" value="${jdbc.username}"/>
31                 <property name="password" value="${jdbc.password}"/>
32             </dataSource>
33         </environment>
34     </environments>
35 
36     <mappers>
37         <mapper resource="com/logistics/mapper/UserMapper.xml"/>
38     </mappers>
39 
40 </configuration>
View Code

jdbc配置文件:

jdbc.driverClassName=com.mysql.jdbc.Driver
jdbc.url=jdbc:mysql://localhost:3306/logistics
jdbc.username=root
jdbc.password=123456

接口:

1 public interface UserMapper {
2 
3     UserVO getUserById(String userId);
4 }
View Code

接口对应的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" >
<mapper namespace="com.logistics.mapper.UserMapper">

    <select id="getUserById" parameterType="java.lang.String" resultType="com.logistics.base.vo.UserVO"
            flushCache="true">
        SELECT u.id,u.username,u.password,u.phone,u.email,u.`status` FROM userinfo u WHERE u.id = #{id}
    </select>
</mapper>
View Code

建立User对象:

 1 package com.logistics.base.po;
 2 
 3 /**
 4  * Created by dell on 2017-07-03.
 5  */
 6 public class UserVO {
 7 
 8     private String id;
 9     private String username;
10     private String password;
11     private String phone;
12     private String email;
13     private String status;
14 
15     public String getId() {
16         return id;
17     }
18 
19     public void setId(String id) {
20         this.id = id;
21     }
22 
23     public String getUsername() {
24         return username;
25     }
26 
27     public void setUsername(String username) {
28         this.username = username;
29     }
30 
31     public String getPassword() {
32         return password;
33     }
34 
35     public void setPassword(String password) {
36         this.password = password;
37     }
38 
39     public String getPhone() {
40         return phone;
41     }
42 
43     public void setPhone(String phone) {
44         this.phone = phone;
45     }
46 
47     public String getEmail() {
48         return email;
49     }
50 
51     public void setEmail(String email) {
52         this.email = email;
53     }
54 
55     public String getStatus() {
56         return status;
57     }
58 
59     public void setStatus(String status) {
60         this.status = status;
61     }
62 }
View Code

建立数据库:

测试类:

 1 public class UserTest {
 2     @Test
 3     public void test_0() {
 4         String mybatis = "mybatis-config.xml";
 5         try {
 6             Reader reader = Resources.getResourceAsReader(mybatis);
 7             SqlSessionFactory factory = new SqlSessionFactoryBuilder().build(reader);
 8             SqlSession session = factory.openSession();
 9 
10             UserVO userVO = session.selectOne("com.logistics.mapper.UserMapper.getUserById", "C-0002");
11             System.out.println(userVO.getUsername());
12         } catch (IOException e) {
13             e.printStackTrace();
14         }
15     }
16 }
View Code

开始运行测试方法。

这张图是项目总图:

 

posted @ 2017-07-03 16:18  ToFlyer  阅读(505)  评论(0)    收藏  举报