spring-mybatis.xml
<!-- 数据源 -->
<bean id="ds" class="org.apache.tomcat.dbcp.dbcp.BasicDataSource">
<property name="url"
value="jdbc:mysql:///emp?useUnicode=true&characterEncoding=utf8"/>
<property name="driverClassName" value="com.mysql.jdbc.Driver"/>
<property name="username" value="root"/>
<property name="password" value="123456"/>
</bean>
<!-- Session工厂 -->
<bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
<property name="dataSource" ref="ds" />
<property name="mapperLocations" value="classpath:com/smybatis/mapper/StudentMapper.xml" />
</bean>
<!-- 扫描指定包下的接口并产生实例 -->
<bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">
<property name="basePackage" value="com.smybatis.mapper" />
</bean>
Student
public class Student {
private Integer studentNo;
private String name;
private String location;
private Integer age;
public Integer getStudentNo() {
return studentNo;
}
public void setStudentNo(Integer studentNo) {
this.studentNo = studentNo;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getLocation() {
return location;
}
public void setLocation(String location) {
this.location = location;
}
public Integer getAge() {
return age;
}
public void setAge(Integer age) {
this.age = age;
}
}
StudenMapper(接口)
public interface StudentMapper {
List<Student> findAll();
}
StudentMapper.xml
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//ibatis.apache.org//DTD Mapper 3.0//EN"
"http://ibatis.apache.org/dtd/ibatis-3-mapper.dtd">
<!-- 命名空间需要和Dao的命名一致 -->
<mapper namespace="com.smybatis.mapper.StudentMapper">
<select id="findAll" resultType="com.smybatis.entity.Student">
select * from student
</select>
</mapper>
TestCase
@Test
public void test8() {
String conf = "spring-mybatis.xml";
ApplicationContext ac = new ClassPathXmlApplicationContext(conf);
StudentMapper mapper = ac.getBean("studentMapper",StudentMapper.class);
List<Student> list = mapper.findAll();
for (Student student : list) {
System.out.println(student.getName()+" "+student.getAge());
}
}
-----------------------------------------------------------------------------------------------------------------------------------
spring-mybatis2.xml
<!-- 数据源 -->
<bean id="ds" class="org.apache.tomcat.dbcp.dbcp.BasicDataSource">
<property name="url"
value="jdbc:mysql:///emp?useUnicode=true&characterEncoding=utf8"/>
<property name="driverClassName" value="com.mysql.jdbc.Driver"/>
<property name="username" value="root"/>
<property name="password" value="123456"/>
</bean>
<!-- Session工厂 -->
<bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
<property name="dataSource" ref="ds" />
<property name="mapperLocations" value="classpath:com/smybatis/mapper/*.xml" />
</bean>
<!-- 扫描指定包下带有注解@MyBatisRepository的接口 -->
<bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">
<property name="basePackage" value="com.smybatis.mapper" />
<property name="annotationClass" value="com.smybatis.mapper.MyBatisRepository" />
</bean>
Teacher
public class Teacher {
private Integer teacherNo;
private String name;
private String location;
private Integer age;
public Integer getTeacherNo() {
return teacherNo;
}
public void setTeacherNo(Integer teacherNo) {
this.teacherNo = teacherNo;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getLocation() {
return location;
}
public void setLocation(String location) {
this.location = location;
}
public Integer getAge() {
return age;
}
public void setAge(Integer age) {
this.age = age;
}
}
MyBatisRepository
/*
* 使用MapperScannerConfigurer扫描带有注解的Mapper映射器
* 实现Spring整合Mybatis
* 用于标识接口,方便MapperScannerConfigurer精准扫描
*/
public @interface MyBatisRepository {
}
TeacherMapper(接口)
@MyBatisRepository
public interface TeacherMapper {
List<Teacher> findAll();
Teacher findById(int id);
void save(Teacher teacher);
void delete(int id);
void update(Teacher teacher);
}
TeacherMapper.xml
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//ibatis.apache.org//DTD Mapper 3.0//EN"
"http://ibatis.apache.org/dtd/ibatis-3-mapper.dtd">
<!-- 命名空间需要和Dao的命名一致 -->
<mapper namespace="com.smybatis.mapper.TeacherMapper">
<select id="findAll" resultType="com.smybatis.entity.Teacher">
select * from teacher
</select>
<select id="findById" parameterType="integer" resultType="com.smybatis.entity.Teacher">
select * from teacher where teacherNo=#{id}
</select>
<insert id="save" parameterType="com.smybatis.entity.Teacher">
insert into teacher(name,location,age) values(#{name},#{location},#{age})
</insert>
<delete id="delete" parameterType="integer">
delete from teacher where teacherNo=#{id}
</delete>
<update id="update" parameterType="com.smybatis.entity.Teacher">
update teacher set name=#{name},location=#{location},age=#{age} where teacherNo=#{id}
</update>
</mapper>
TestCase
@Test
public void test9() {
String conf = "spring-mybatis2.xml";
ApplicationContext ac = new ClassPathXmlApplicationContext(conf);
TeacherMapper mapper = ac.getBean("teacherMapper",TeacherMapper.class);
List<Teacher> list = mapper.findAll();
for (Teacher teacher : list) {
System.out.println(teacher.getName()+" "+teacher.getAge());
}
// 对于没有@MyBatisRepository注解的接口的测试
StudentMapper mapper2 = ac.getBean("studentMapper",StudentMapper.class);
List<Student> list2 = mapper2.findAll();
for (Student student : list2) {
System.out.println(student.getName()+" "+student.getAge());
}
}
可以看到StudentMapper接口是没有被扫描到的
-----------------------------------------------------------------------------------------------------------------------------------
spring-mybatis3.xml
<!-- 数据源 -->
<bean id="ds" class="org.apache.tomcat.dbcp.dbcp.BasicDataSource">
<property name="url"
value="jdbc:mysql:///emp?useUnicode=true&characterEncoding=utf8"/>
<property name="driverClassName" value="com.mysql.jdbc.Driver"/>
<property name="username" value="root"/>
<property name="password" value="123456"/>
</bean>
<!-- Session工厂 -->
<bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
<property name="dataSource" ref="ds" />
<property name="mapperLocations" value="classpath:com/smybatis/mapper/*.xml" />
</bean>
<!-- 定义SqlSessionTemplate -->
<bean id="sqlSessionTemplate" class="org.mybatis.spring.SqlSessionTemplate">
<constructor-arg index="0" ref="sqlSessionFactory"></constructor-arg>
</bean>
<!-- Spring注解扫描 -->
<context:component-scan base-package="com.smybatis" />
Course
public class Course {
private Integer courseNo;
private String name;
private String des;
private Integer teacherNo;
public Integer getCourseNo() {
return courseNo;
}
public void setCourseNo(Integer courseNo) {
this.courseNo = courseNo;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getDes() {
return des;
}
public void setDes(String des) {
this.des = des;
}
public Integer getTeacherNo() {
return teacherNo;
}
public void setTeacherNo(Integer teacherNo) {
this.teacherNo = teacherNo;
}
}
CourseDao
@Repository
public class CourseDao {
@Resource
private SqlSessionTemplate sessionTemplate;
public List<Course> findAll(){
List<Course> list = sessionTemplate.selectList("com.smybatis.mapper.CourseDao.findAll");
return list;
}
public Course findById(int id) {
Course course = sessionTemplate.selectOne("com.smybatis.mapper.CourseDao.findById",id);
return course;
}
public void save(Course course) {
int insert = sessionTemplate.insert("com.smybatis.mapper.CourseDao.save",course);
System.out.println(insert);
}
public void delete(int id) {
int delete = sessionTemplate.delete("com.smybatis.mapper.CourseDao.delete",id);
System.out.println(delete);
}
public void update(Course course) {
int update = sessionTemplate.update("com.smybatis.mapper.CourseDao.update",course);
System.out.println(update);
}
}
CourseMapper.xml
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//ibatis.apache.org//DTD Mapper 3.0//EN"
"http://ibatis.apache.org/dtd/ibatis-3-mapper.dtd">
<!-- 命名空间需要和Dao的命名一致 -->
<mapper namespace="com.smybatis.mapper.CourseDao">
<select id="findAll" resultType="com.smybatis.entity.Course">
select * from course
</select>
<select id="findById" parameterType="integer" resultType="com.smybatis.entity.Course">
select * from course where CourseNo=#{id}
</select>
<insert id="save" parameterType="com.smybatis.entity.Course">
insert into course(name,des,teacherNo) values(#{name},#{des},#{teacherNo})
</insert>
<delete id="delete" parameterType="integer">
delete from course where courseNo=#{id}
</delete>
<update id="update" parameterType="com.smybatis.entity.Course">
update course set name=#{name},des=#{des},teacherNo=#{teacherNo} where courseNo=#{id}
</update>
</mapper>
TestCase
@Test
public void test10() {
String conf = "spring-mybatis3.xml";
ApplicationContext ac = new ClassPathXmlApplicationContext(conf);
CourseDao mapper = ac.getBean("courseDao",CourseDao.class);
List<Course> list = mapper.findAll();
for (Course course : list) {
System.out.println(course.getName()+" "+course.getDes());
}
}
相测试的可以自己去测试一下,这里不再多测试了