Spring整合Mybatis

在这里插入图片描述

spring-mybatis.xml

<!-- 数据源 -->
	<bean id="ds" class="org.apache.tomcat.dbcp.dbcp.BasicDataSource">
		<property name="url" 
		value="jdbc:mysql:///emp?useUnicode=true&amp;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&amp;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&amp;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());
		}
	}

在这里插入图片描述

相测试的可以自己去测试一下,这里不再多测试了

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值