一、Mybatis简介
MyBatis是支持定制化SQL、存储过程以及高级映射的持久层ORM框架,它通过XML配置文件的方式进行数据交互,避免了传统JDBC硬编码的种种缺陷。
二、Mybatis工作流程
三、Mybatis架构
四、实现流程
本例将在如下数据表中进行演示:
首先建立对应的实体类:
public class Users {
private Integer id;
private String username;
private String userpass;
private String nickname;
public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id = id;
}
public String getUsername() {
return username;
}
public void setUsername(String username) {
this.username = username;
}
public String getUserpass() {
return userpass;
}
public void setUserpass(String userpass) {
this.userpass = userpass;
}
public String getNickname() {
return nickname;
}
public void setNickname(String nickname) {
this.nickname = nickname;
}
@Override
public String toString() {
return "Users{" +
"id=" + id +
", username='" + username + '\'' +
", userpass='" + userpass + '\'' +
", nickname='" + nickname + '\'' +
'}';
}
}
在resources/mapper下建立一个usersMapper.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">
<!-- namespace:命名空间,用于隔离SQL-->
<mapper namespace="entity.Users">
<select id="usersList" resultType="entity.Users">
SELECT * FROM users
</select>
</mapper>
在resources下建立一个mybatis.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>
<environments default="development">
<environment id="development">
<!--使用JDBC事务管理 -->
<transactionManager type="JDBC"/>
<!-- 数据库连接池 -->
<dataSource type="POOLED">
<property name="driver" value="com.mysql.jdbc.Driver"/>
<property name="url" value="jdbc:mysql://localhost:3306/mybatis?characterEncoding=utf-8"/>
<property name="username" value="root"/>
<property name="password" value="123456"/>
</dataSource>
</environment>
</environments>
<!-- 引入映射配置文件 -->
<mappers>
<mapper resource="mapper/usersMapper.xml"/>
</mappers>
</configuration>
最后在测试类下进行相关的逻辑实现:
// 初始化Mybatis配置环境
String resource = "mybatis.xml";
InputStream is = Resources.getResourceAsStream(resource);
SqlSessionFactory factory = new SqlSessionFactoryBuilder().build(is);
// 打开与数据库之间的会话
SqlSession session = factory.openSession();
List<Users> ulist = session.selectList("usersList");
// 输出结果集
for (Users user : ulist) {
System.out.println(user);
}
// 关闭session会话
session.close();
最终成功打印了结果集:
附:
- 要使用MyBatis框架,需要引入org.mybatis.mybatis
- 要连接MySQL数据库,需要引入mysql-connector-java