Spring整合Mybatis
一、回顾mybatis的编写程序
步骤:
a、导入相关jar包
junit、mybatis、mysql数据库、spring相关的、aop织入、mybatis-spring<dependencies>
<dependency> <groupId>junitgroupId> <artifactId>junitartifactId> <version>4.13.2version> <scope>testscope> dependency> <dependency> <groupId>mysqlgroupId> <artifactId>mysql-connector-javaartifactId> <version>8.0.23version> dependency> <dependency> <groupId>org.mybatisgroupId> <artifactId>mybatisartifactId> <version>3.5.6version> dependency> <dependency> <groupId>org.springframeworkgroupId> <artifactId>spring-webmvcartifactId> <version>5.3.4version> dependency> <dependency> <groupId>org.springframeworkgroupId> <artifactId>spring-jdbcartifactId> <version>5.3.4version> dependency> <dependency> <groupId>org.aspectjgroupId> <artifactId>aspectjweaverartifactId> <version>1.9.6version> dependency> <dependency> <groupId>org.mybatisgroupId> <artifactId>mybatis-springartifactId> <version>2.0.6version> dependency>
org.projectlombok
lombok
1.18.18
dependencies>
b、编写配置文件
编写实体类、编写核心配置文件、编写接口、编写Mapper.xml、测试
c、测试
二、Spring整合mybatis第一种方式:
使用:SqlSessionTemplate
1、编写数据源
2、创建sqlSessionFactory
3、sqlSessionTemplate
4、需要给接口加实现类
5、将自己写的实现类,注入到spring当中
6、测试
创建两个xml文件,
1、Spring-dap.xml:用于配置数据源,创建SqlSessionTemplate
<?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: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/aop http://www.springframework.org/schema/aop/spring-aop.xsd"> <bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource"> <property name="driverClassName" value="com.mysql.cj.jdbc.Driver"/> <property name="url" value="jdbc:mysql://localhost:3306/Mybatis?userUnicode=true;characterEncode=Utf-8"/> <property name="username" value="root"/> <property name="password" value="123456"/> bean> <bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean"> <property name="dataSource" ref="dataSource"/> <property name="configLocation" value="classpath:mapper/mybatis-config.xml"/> :mybatis配置文件可以可不要 <property name="mapperLocations" value="classpath:mapper/UserMapper.xml"/> bean> <bean id="sqlSession" class="org.mybatis.spring.SqlSessionTemplate"> <constructor-arg index="0" ref="sqlSessionFactory"/> bean> beans>
2、applicationContext.xml :把接口的实现类注入到spring当中去
<?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: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/aop http://www.springframework.org/schema/aop/spring-aop.xsd"> <import resource="spring-dao.xml"/> <bean id="userMapper" class="com.zy.dap.UserMapperImpl"> <property name="sqlSession" ref="sqlSession"/> bean> beans>
3、实体类 user
package com.zy.pojo; import lombok.Data; @Data public class User { private int id; private String name; private int age; }
4、接口类
UserMapper
package com.zy.dap; import com.zy.pojo.User; import java.util.List; public interface UserMapper { ListselectUser(); }
UserMapper.xml
<?xml version="1.0" encoding="UTF-8" ?> DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Config 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> <mapper namespace="com.zy.dap.UserMapper"> <select id="selectUser" resultType="com.zy.pojo.User"> select * from user; select> mapper>
UserMapperImpl
package com.zy.dap; import com.zy.pojo.User; import org.mybatis.spring.SqlSessionTemplate; import java.util.List; public class UserMapperImpl implements UserMapper{ /*原本,我们都使用sqlSession来操作,现在都是使用SqlSessionTemplate*/ private SqlSessionTemplate sqlSession; public void setSqlSession(SqlSessionTemplate sqlSession) { this.sqlSession=sqlSession; } @Override public ListselectUser() { UserMapper mapper = sqlSession.getMapper(UserMapper.class); return mapper.selectUser(); } }
5、测试
import com.zy.dap.UserMapper; import com.zy.pojo.User; import org.junit.Test; import org.springframework.context.ApplicationContext; import org.springframework.context.support.ClassPathXmlApplicationContext; import java.util.List; public class MyTest { @Test public void test() { ApplicationContext context=new ClassPathXmlApplicationContext("mapper/applicationContext.xml"); //注意放置xml文件的路径 UserMapper userMapper = context.getBean("userMapper", UserMapper.class); Listusers = userMapper.selectUser(); for (User user : users) { System.out.println(user); } } }
三、Spring整合mybatis第二种方式:
使用:SqlSessionDaoSupport
有些配置文件和第一种方式是一样的,只是他们的接口实现的方法不同
1、实体类
package com.zy.pojo; import lombok.Data; @Data public class User { private int id; private String name; private int age; }
2、接口、接口实现类
package com.zy.dap; import com.zy.pojo.User; import java.util.List; public interface UserMapper { ListselectUser(); }
package com.zy.dap; import com.zy.pojo.User; import org.mybatis.spring.support.SqlSessionDaoSupport; import java.util.List; public class UserMapper1Impl extends SqlSessionDaoSupport implements UserMapper{ @Override public ListselectUser() { return getSqlSession().getMapper(UserMapper.class).selectUser(); } }
3、配置文件:在applicationContext添加
<bean id="userMapper1" class="com.zy.dap.UserMapper1Impl"> <property name="sqlSessionFactory" ref="sqlSessionFactory"/> bean>
4、测试
public void test() { ApplicationContext context=new ClassPathXmlApplicationContext("mapper/applicationContext.xml"); UserMapper userMapper = context.getBean("userMapper1", UserMapper.class); Listusers = userMapper.selectUser(); for (User user : users) { System.out.println(user); }