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>
另配置过程中,出现一个问题,找不到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>
配置的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>
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 }
接口对应的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>
建立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 }
建立数据库:

测试类:
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 }
开始运行测试方法。
这张图是项目总图:


浙公网安备 33010602011771号