搭建MyBatis框架
- 创建Maven项目
- 在pom.xml配置文件中添加MyBatis框架需要的依赖``
<dependencies>
<dependency>
<groupId>log4j</groupId>
<artifactId>log4j</artifactId>
<version>1.2.16</version>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>5.1.35</version>
</dependency>
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis</artifactId>
<version>3.5.1</version>
</dependency>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>3.8.1</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-api</artifactId>
<version>1.7.28</version>
</dependency>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.12</version>
<scope>test</scope>
</dependency>
</dependencies>
<build>
<!--编译的时候同时也把包下面的xml同时编译进去-->
<resources>
<resource>
<directory>src/main/java</directory>
<includes>
<include>**/*.xml</include>
</includes>
</resource>
</resources>
</build>
- 创建MyBatis配置文件mybatis-config.xml,配置数据库信息
<properties resource="db.properties"></properties>
<environments default="development">
<environment id="development">
<transactionManager type="JDBC"/>
<dataSource type="POOLED">
<property name="driver" value="${db.driver}"/>
<property name="url" value="${db.url}"/>
<property name="username" value="${db.username}"/>
<property name="password" value="${db.password}"/>
</dataSource>
</environment>
</environments>
- 创建实体类User
public class User {
private int userId;
private String userLoginName;
private String userPwd;
private String userName;
private int state;
private Date createTime;
private int delState;
public User() {
}
public User(String userLoginName, String userPwd, String userName, int state, Date createTime, int delState) {
this.userLoginName = userLoginName;
this.userPwd = userPwd;
this.userName = userName;
this.state = state;
this.createTime = createTime;
this.delState = delState;
}
public User(int userId, String userLoginName, String userPwd, String userName, int state, Date createTime, int delState) {
this.userId = userId;
this.userLoginName = userLoginName;
this.userPwd = userPwd;
this.userName = userName;
this.state = state;
this.createTime = createTime;
this.delState = delState;
}
public int getUserId() {
return userId;
}
public void setUserId(int userId) {
this.userId = userId;
}
public String getUserLoginName() {
return userLoginName;
}
public void setUserLoginName(String userLoginName) {
this.userLoginName = userLoginName;
}
public String getUserPwd() {
return userPwd;
}
public void setUserPwd(String userPwd) {
this.userPwd = userPwd;
}
public String getUserName() {
return userName;
}
public void setUserName(String userName) {
this.userName = userName;
}
public int getState() {
return state;
}
public void setState(int state) {
this.state = state;
}
public Date getCreateTime() {
return createTime;
}
public void setCreateTime(Date createTime) {
this.createTime = createTime;
}
public int getDelState() {
return delState;
}
public void setDelState(int delState) {
this.delState = delState;
}
@Override
public String toString() {
return "User{" +
"userId=" + userId +
", userLoginName='" + userLoginName + '\'' +
", userPwd='" + userPwd + '\'' +
", userName='" + userName + '\'' +
", state=" + state +
", createTime=" + createTime +
", delState=" + delState +
'}';
}
}
- 创建UserMapper接口
public interface UserMapper {
List<User> showUser();//查询所有的用户信息
}
- 创建UserMapper接口的映射文件UserMapper.xml,定义SQL语句查询用户信息
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE mapper
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<!--namespace 定义命名空间,标记当前xml文件指向的Mapper接口-->
<mapper namespace="com.Test.mapper.UserMapper">
<select id="showUser" resultType="com.qianfeng.bean.User">
select * from t_user
</select>
</mapper>
- 将创建好的Mapper.xml文件映射到mybatis-config.xml中
<mappers>
<mapper resource="com/Test/mapper/UserMapper.xml"></mapper>
</mappers>
- 创建测试类测试执行效果,MyBatis框架搭建测试完成!
public class Demo {
@Test
public void show(){
try {
Reader reader = Resources.getResourceAsReader("mybatis-config.xml");//读取mybatis-config.xml配置文件
SqlSessionFactory ssf = new SqlSessionFactoryBuilder().build(reader);//获取一个SqlSessionFactory工厂
SqlSession session = ssf.openSession();//从SqlSessionFactory中获取一个SqlSession对象
/*
SqlSession对象中的getMapper方法,使用到了设计模式中的动态代理模式
通过反射技术,在底层动态创建了UserMapper接口的实现类,并实现了UserMapper中的方法
返回的是一个UserMapper接口实现类的实例
*/
UserMapper mapper = session.getMapper(UserMapper.class);
List<User> users = mapper.showUser();
Iterator<User> it = users.iterator();
while(it.hasNext()){
System.out.println(it.next());
}
} catch (IOException e) {
e.printStackTrace();
}
}
}
优化:
mybatis-config.xml文件:
<?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>
<properties resource="db.properties"></properties>
<!--给实体类取别名,默认是实体类类名,不区分大小写-->
<typeAliases>
<package name="com.Test.bean"/>
</typeAliases>
<environments default="development">
<environment id="development">
<transactionManager type="JDBC"/>
<dataSource type="POOLED">
<property name="driver" value="${db.driver}"/>
<property name="url" value="${db.url}"/>
<property name="username" value="${db.username}"/>
<property name="password" value="${db.password}"/>
</dataSource>
</environment>
</environments>
<mappers>
<!--
直接导入Mapper.xml文件所在的包,一次性导入所有Mapper.xml文件
注意!!!
在使用此方法时,Mapper接口名称必须与Mapper.xml文件名称一致
系统会自动匹配与xml文件命名一致的接口文件
-->
<package name="com.Test.mapper"/>
</mappers>
</configuration>
Mapper.xml文件:
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE mapper
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<!--namespace 定义命名空间,标记当前xml文件指向的Mapper接口-->
<mapper namespace="com.Test.mapper.UserMapper">
<!--resultType不区分大小写-->
<select id="showUser" resultType="uSEr">
select * from t_user
</select>
</mapper>