一,Mybatis
MyBatis是一个开源的数据持久层框架。它内部封装了通过JDBC访问数据库的操作,支持普通的SQL查询、存储过程和高级映射,几乎消除了所有的JDBC代码和参数的手工设置以及结果集的检索。MyBatis作为持久层框架,其主要思想是将程序中的大量SQL语句剥离出来,配置在配置文件中,实现SQL的灵活配置。这样做能将SQL与程序代码分离,可以在不修改程序代码的情况下,直接在配置文件中修改SQL。
简单点说就是,Mybatis的SqlSession中集成了所有数据库增删改查的功能,只要在配置文件中编写了相应的增删改查语句,那么不需要借助任何实现对象,SqlSession就能依照配置文件,帮我们完成数据库的操作。
Mybatis的核心就是SqlSession。
二,MyBatis简单实现
- 创建MyBatis核心配置文件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="database.properties"/>
<environments default="development">
<environment id="development">
<transactionManager type="JDBC"></transactionManager>
<dataSource type="POOLED">
<property name="driver" value="${driver}"/>
<property name="url" value="${url}"/>
<property name="username" value="${user}"/>
<property name="password" value="${password}"/>
</dataSource>
</environment>
</environments>
<mappers>
<mapper resource="UserMapper.xml"></mapper>
</mappers>
</configuration>
- 创建工程所需的Bean和Dao
创建Bean User
public class User {
private int userId;
private String userName;
public int getUserId() {
return userId;
}
public void setUserId(int userId) {
this.userId = userId;
}
public String getUserName() {
return userName;
}
public void setUserName(String userName) {
this.userName = userName;
}
}
创建Dao:UserMapper接口
public interface UserMapper {
public List<User> getUserList();
}
- 创建与接口同名的mapper.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.leon.dao.UserMapper">
<select id="getUserList" resultType="com.leon.pojo.User">
SELECT * FROM USER
</select>
</mapper>
- 将mapper.xml添加到核心配置文件mybatis-config.xml中。
<mappers>
<mapper resource="UserMapper.xml"></mapper>
</mappers>
- 编写测试代码。
public class MyTest {
@Test
public void mytest() throws IOException {
List<User> userList= new ArrayList<User>();
//创建SqlSession
String resource="mybatis-config.xml";
InputStream is=Resources.getResourceAsStream(resource);
SqlSessionFactory factory=new SqlSessionFactoryBuilder().build(is);
SqlSession sqlSession=factory.openSession();
//通过SqlSession执行Mapper.xml文件中的SQL语句。并得到返回结果
//前提是,接口类UserMapper.class必须与映射文件UserMapper.xml同名。
userList=sqlSession.getMapper(com.leon.dao.UserMapper.class).getUserList();
for(User user:userList){
System.out.println(user.getUserName());
}
}
}