MyBatis集成Spring开发 讲解

MyBatis集成Spring开发 讲解

简介:Spring集成Mybatis开发简述有两种方式,第一种是在applicationContext.xml中配置接口扫描类(同时也扫描了sql.xml配置文件)或者注入接口类(MapperScannerConfigurer、MapperFactoryBean这两个在test中有讲解如何配置),第二种是原生的Mybatis,不用接口开发,而在applicationContext.xml中当配置sqlSessionFactory时候,配置如conf.xml文件,让Mybatis自己扫描,从而在程序中使用原生Mybatis做CRUD操作。

注意点,在上一篇文章中写到了Mybatis的注解方式也是接口,在spring中的接口和注解方式是不一样的,注解方式的时候定义了接口,要在接口中写入配置,比如@Select("select * from Users where id = #{id}")等,不需要对应的sql.xml配置文件,二在Spring中,写入了接口,还需要对应的sql.xml配置文件,而这个文件的namespace就是对应的接口全名,,使用MapperScannerConfigurer扫描了接口类型后,在调用的时候使用接口类型.save()等方法来实现CRUD。

1、项目清单

2、顺序源码package com.bjsxt.bean;public class User {//shift+alt+sprivate int id;private String name;private int age;public User(int id, String name, int age) {super();this.id = id;this.name = name;this.age = age;}public User() {super();}public int getId() {return id;}public void setId(int id) {this.id = id;}public String getName() {return name;}public void setName(String name) {this.name = name;}public int getAge() {return age;}public void setAge(int age) {this.age = age;}@Overridepublic String toString() {return "User [id=" + id + ", name=" + name + ", age=" + age + "]";}}package com.bjsxt.user.dao;import java.util.List;import com.bjsxt.bean.User;public interface UserMapper {void save(User user);void update(User user);void delete(int id);User findById(int id);List<User> findAll();}package com.bjsxt.user.dao;import java.util.List;import com.bjsxt.bean.User;public interface UserMapper2 {void save(User user);void update(User user);void delete(int id);User findById(int id);List<User> findAll();}<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" ""><!– spring集成Mybatis namespace 必须是接口的全类名 –><mapper namespace="com.bjsxt.user.dao.UserMapper"><insert id="save" parameterType="User" >insert into users(name,age) values(#{name},#{age})</insert></mapper><?xml version="1.0" encoding="UTF-8"?><!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" ""><!– spring集成Mybatis namespace 必须是接口的全类名 –><mapper namespace="com.bjsxt.user.dao.UserMapper2"><insert id="save" parameterType="User" >insert into users(name,age) values(#{name},#{age})</insert></mapper>package com.test;import org.apache.ibatis.session.SqlSession;import org.apache.ibatis.session.SqlSessionFactory;import org.springframework.beans.factory.annotation.Autowired;import org.springframework.context.ApplicationContext;import org.springframework.context.support.ClassPathXmlApplicationContext;import org.springframework.stereotype.Component;import com.bjsxt.bean.User;import com.bjsxt.user.dao.UserMapper;import com.bjsxt.user.dao.UserMapper2;/** * 配置了这个,<bean * class="org.mybatis.spring.mapper.MapperScannerConfigurer">,就不在需要配置 * org.mybatis.spring.mapper.MapperFactoryBean了.前者配置一次,自动注入不同的接口类就可以了 * 后者也是通过封装成了单个前者,而且还需要配置多个,所以用前者自动扫面,所有的接口和sql配置文件 * ,在下面的测试类中注入一个接口类,配置的MapperScannerConfigurer会自动的 * 解析出所有的接口提供方法的使用,MapperScannerConfigurer不用配置id了,没有什么意义了 * * */@Componentpublic class Test {@Autowiredprivate UserMapper userMapper;@Autowiredprivate UserMapper2 userMapper2;/** * 下面两个是测试不同的接口类的实现 */@org.junit.Testpublic void saveUser1() {ApplicationContext ac = new ClassPathXmlApplicationContext("applicationContext.xml");SqlSessionFactory sf = (SqlSessionFactory) ac.getBean("sqlSessionFactory");SqlSession session = sf.openSession();Test t = (Test) ac.getBean("test");System.out.println(t.userMapper);t.userMapper.save(new User(-1, "连发2", 1));}@org.junit.Testpublic void saveUser2() {ApplicationContext ac = new ClassPathXmlApplicationContext("applicationContext.xml");SqlSessionFactory sf = (SqlSessionFactory) ac.getBean("sqlSessionFactory");SqlSession session = sf.openSession();Test t = (Test) ac.getBean("test");System.out.println(t.userMapper2);t.userMapper2.save(new User(-1, "连发2", 1));}/** * application.xml mybatis.spring.mapper.MapperFactoryBean 配置的实现与测试 * 如果有多个接口那么久需要多次这样的配置,根据id来识别具体的接口类型 */@org.junit.Testpublic void saveUser3() {ApplicationContext ac = new ClassPathXmlApplicationContext("applicationContext.xml");SqlSessionFactory sf = (SqlSessionFactory) ac.getBean("sqlSessionFactory");SqlSession session = sf.openSession();UserMapper mapper = (UserMapper) ac.getBean("UserMapper");mapper.save(new User(-1, "连发3", 1));}/** * application.xml中引入了conf.xml配置文件的测试 */@org.junit.Testpublic void saveUser4() {ApplicationContext ac = new ClassPathXmlApplicationContext("applicationContext.xml");SqlSessionFactory sf = (SqlSessionFactory) ac.getBean("sqlSessionFactory");SqlSession session = sf.openSession(true);session.insert("com.bjsxt.user.dao.UserMapper.save",new User(-1, "老婆", 27));}public static void main(String[] args) {new Test().saveUser4();}}人生有一半掌握在上帝那里,另一半攥在自己的手中。

MyBatis集成Spring开发 讲解

相关文章:

你感兴趣的文章:

标签云: