Spring集成myBatis,其本质工作就是将使用mybatis框架时用到的一些需要自己创建的对象,交由Spring统一管理。主要有以下对象:数据源DataSource:就是保存数据库连接信息的对象,采用阿里的Druid,更加高效。SqlSessionFactory:生成sqlSession对象的。
MapperScannerConfigurer:Dao接口的实现类对象。
Service层对象:解耦。
学习下面这个例子就基本理解Spring整合Mybatis的使用流程。
准备工作:
数据库
导入依赖
<dependencies> <dependency> <groupId>junitgroupId> <artifactId>junitartifactId> <version>4.11version> <scope>testscope> dependency> <dependency> <groupId>org.springframeworkgroupId> <artifactId>spring-contextartifactId> <version>5.2.5.RELEASEversion> dependency> <dependency> <groupId>org.springframeworkgroupId> <artifactId>spring-txartifactId> <version>5.2.5.RELEASEversion> dependency> <dependency> <groupId>org.springframeworkgroupId> <artifactId>spring-jdbcartifactId> <version>5.2.5.RELEASEversion> dependency> <dependency> <groupId>org.mybatisgroupId> <artifactId>mybatisartifactId> <version>3.5.1version> dependency> <dependency> <groupId>org.mybatisgroupId> <artifactId>mybatis-springartifactId> <version>1.3.1version> dependency> <dependency> <groupId>mysqlgroupId> <artifactId>mysql-connector-javaartifactId> <version>5.1.9version> dependency> <dependency> <groupId>com.alibabagroupId> <artifactId>druidartifactId> <version>1.1.12version> dependency> dependencies>
资源插件
<build> <resources> <resource> <directory>src/main/javadirectory> <includes> <include>**/*.propertiesinclude> <include>**/*.xmlinclude> includes> <filtering>falsefiltering> resource> resources> <plugins> <plugin> <artifactId>maven-compiler-pluginartifactId> <version>3.1version> <configuration> <source>1.8source> <target>1.8target> configuration> plugin> plugins> build>
1.创建Student实体类
public class Student { private int id; private String name; private String email; private int age; //省略方法}
2.创建StudentDao接口和StudentDao.xml映射文件
public interface StudentDao { int insertStudent(Student student); ListselectStudent();}
<?xml version="1.0" encoding="UTF-8" ?>/span> PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"><mapper namespace="com.zhu.dao.StudentDao"> <insert id="insertStudent"> insert into Student values (#{id},#{name},#{email},#{age}) insert> <select id="selectStudent" resultType="com.zhu.pojo.Student"> select * from Student order by id desc select>mapper>
3.创建Service接口和实现类
public interface StudentService { int addStudent(Student student); ListqueryStudent();}
public class StudentServiceImpl implements StudentService { private StudentDao studentDao; public StudentDao getStudentDao() { return studentDao; } public void setStudentDao(StudentDao studentDao) { this.studentDao = studentDao; } @Override public int addStudent(Student student) { int nums = studentDao.insertStudent(student); return nums; } @Override public ListqueryStudent() { List students = studentDao.selectStudent(); return students; }}
4.创建mybatis主配置文件mybatis.xml
<?xml version="1.0" encoding="UTF-8" ?>/span> PUBLIC "-//mybatis.org//DTD Config 3.0//EN" "http://mybatis.org/dtd/mybatis-3-config.dtd"><configuration> <settings> <setting name="logImpl" value="STDOUT_LOGGING"/> settings> <typeAliases> <package name="com.zhu">package> typeAliases> <mappers> <package name="com.zhu.dao"/> mappers>configuration>
5.创建Spring主配置文件applicationContext.xml
1)声明数据源DataSource对象2)声明SqlSessionFactoryBean,创建SqlSessionFactory对象3)声明MyBatis的扫描器,创建Dao接口的实现类对象4)声明自定义的Service ,把3)中的Dao对象注入赋值给Service的属性
<?xml version="1.0" encoding="UTF-8"?><beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:context="http://www.springframework.org/schema/context" xmlns:aop="http://www.springframework.org/schema/aop" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd http://www.springframework.org/schema/aop https://www.springframework.org/schema/aop/spring-aop.xsd"> <bean id="myDataSource" class="com.alibaba.druid.pool.DruidDataSource" init-method="init" destroy-method="close"> <property name="url" value="jdbc:mysql://localhost:3306/jdbcstudy?useSSL=false&useUnicode=true&characterEncoding=UTF-8">property> <property name="username" value="root">property> <property name="password" value="root">property> <property name="maxActive" value="20">property> bean> <bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean"> <property name="dataSource" ref="myDataSource">property> <property name="configLocation" value="classpath:mybatis.xml">property> bean> <bean class="org.mybatis.spring.mapper.MapperScannerConfigurer"> <property name="sqlSessionFactoryBeanName" value="sqlSessionFactory">property> <property name="basePackage" value="com.zhu.dao">property> bean> <bean id="studentService" class="com.zhu.service.impl.StudentServiceImpl"> <property name="studentDao" ref="studentDao">property> bean>beans>
测试
@Test public void test3(){ String config="applicationContext.xml"; ApplicationContext context = new ClassPathXmlApplicationContext(config); StudentService service = (StudentService) context.getBean("studentService"); Student student1=new Student(); student1.setId(1004); student1.setName("大刀"); student1.setEmail("dadaowangwu@qq.com"); student1.setAge(29); int i = service.addStudent(student1); System.out.println(i); }
@Test public void test4(){ String config="applicationContext.xml"; ApplicationContext context = new ClassPathXmlApplicationContext(config); StudentService service = (StudentService) context.getBean("studentService"); List students = service.queryStudent(); for (Student student : students) { System.out.println(student); }}
通过以上例子简单认识了一下Spring整合Mybatis,更加复杂的需要自己勤加练习。