作为Bean容器,spring框架提供了IOC机制,可以接管所有组件的创建工作,并管理,整合的主要目标就是将mybatis的核心组件方放到spring中。
具体的是mybatis的核心是获取sqlSession对象,而sqlSession对象依赖于SqlSessionFactroy实例,而SqlSessionFactroy实例依赖于SqlSessionFactoryBuilder,Spring通过读取mybatis的配置文件,构建这些组件,管理这些组件的生命周期。
一、阶段一:通过sqlSessionTemplate实现
1. 创建实体类Student
package com.pojo;
public class Student {
private String id;
private String name;
private String address;
private int age;
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getAddress() {
return address;
}
public void setAddress(String address) {
this.address = address;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
public Student(String id, String name, String address, int age) {
super();
this.id = id;
this.name = name;
this.address = address;
this.age = age;
}
public Student() {
super();
}
}
2. 创建访问接口StudentDao
package com.dao;
import java.util.List;
import com.pojo.Student;
public interface StudentDao {
public int getCount(); //查询总数
public List<Student> getStuList(); //返回所有信息
public int insert(Student stu); //插入信息
}
3. 创建sql映射文件StudentMapper.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.dao.StudentDao">
<resultMap type="Student" id="stuList">
<result property="id" column="id"/>
<result property="name" column="name"/>
<result property="address" column="address"/>
<result property="age" column="age"/>
</resultMap>
<select id="getCount" resultType="int">
select count(1) from student
</select>
<select id="getStuList" resultMap="stuList">
select * from student
</select>
<insert id="insert" parameterType="Student">
insert into student values (#{id},#{name},#{address},#{age})
</insert>
</mapper>
4. 配置mybatis-config.xml文件
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE configuration
PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
"http://mybatis.org/dtd/mbatis-3-config.dtd">
<configuration>
<!-- 1.设置运行时的行为,本次添加日志记录 -->
<settings>
<!-- 设置日志记录 -->
<setting name="logImpl" value="LOG4J"/>
<setting name="autoMappingBehavior" value="NONE"/>
</settings>
<!-- 2.为类定义别名 -->
<typeAliases>
<!-- 指定包名pojo,MyBatis会自动扫描下面的JavaBean -->
<package name="com.pojo"/>
</typeAliases>
</configuration>
可以看到,将数据源和mapper映射文件去掉了,我们一会在 spring 的 applicationContext.xml 配置这些。
5. 创建业务实现类StudentDaoImpl
package com.service;
import java.util.List;
import org.mybatis.spring.SqlSessionTemplate;
import com.dao.StudentDao;
import com.pojo.Student;
public class StudentDaoImpl implements StudentDao {
private SqlSessionTemplate sqlSession;
public SqlSessionTemplate getSqlSession() {
return sqlSession;
}
public v