整合Mybatis
一、整合Mybatis
步骤
-
导入相关jar包
mybatis: <dependency> <groupId>org.mybatis</groupId> <artifactId>mybatis</artifactId> <version>3.4.6</version> </dependency> mysql: <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> <version>8.0.23</version> </dependency> spring相关: <dependency> <groupId>org.springframework</groupId> <artifactId>spring-webmvc</artifactId> <version>5.3.4</version> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-jdbc</artifactId> <version>5.3.3</version> </dependency> aspectJ AOP织入器: <dependency> <groupId>org.aspectj</groupId> <artifactId>aspectjweaver</artifactId> <version>1.9.4</version> </dependency> mybatis-spring整合包: <dependency> <groupId>org.mybatis</groupId> <artifactId>mybatis-spring</artifactId> <version>2.0.6</version> </dependency>
-
配置Maven静态资源过滤问题
<build> <resources> <resource> <directory>src/main/resources</directory> <includes> <include>**/*.properties</include> <include>**/*.xml</include> </includes> <filtering>true</filtering> </resource> <resource> <directory>src/main/java</directory> <includes> <include>**/*.properties</include> <include>**/*.xml</include> </includes> <filtering>true</filtering> </resource> </resources> </build>
-
编写配置文件
-
代码实现
1.1 Mybatis-Spring学习
要和Spring一起使用Mybatis,需要在Spring应用上下文中定义两样东西:
-
SqlSessionFactory
-
至少一个数据映射器类
在MyBatis-Spring中,可以使用SqlSessionFactoryBean来创建SqlSessionFactory。要配置这个工厂的bean,只需要在Spring配置中加入:
<bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean"> <property name="dataSource" ref="datasource"/> <property name="configLocation" value="mybatis-config.xml"/> <property name="mapperLocations" value="classpath:com/aishimin/dao/UserMapper.xml"/> </bean>
SqlSessionFactory需要一个DataSource(数据源)。
在基础的MyBatis中是通过SQLSessionFactoryBuilder来创建SQLSessionFactory的。在MyBatis-Spring中则是用过SQLSessionBean来创建。
SqlSessionFactory中有一个唯一的必要属性:用于JDBC的DataSource。
一个常用的属性是configLocation,他用来指定MyBatis的XML配置文件路径。通常在其内配置<setting> 和<typeAliases>
SQLSessionTemplate是MyBatis-Spring的核心。作为SqlSession的一个实现,也就是说相当于使用它代替SqlSession。可以使用SqlSessionFactory作为构造方法的参数来创建SqlSessionTemplate对象。
<bean id="sqlSession" class="org.mybatis.spring.SqlSessionTemplate"> <constructor-arg index="0" ref="sqlSessionFactory"/> </bean>
现在就可以将这个bean注入到java类中。
public class UserMapperImpl implements UserMapper{ private SqlSessionTemplate sqlSession; public void setSqlSession(SqlSessionTemplate sqlSession) { this.sqlSession = sqlSession; }
接下来注入SqlSessionTemplate
<bean id="UserMapper" class="com.aishimin.dao.UserMapperImpl"> <property name="sqlSession" ref="sqlSession"/> </bean>
整合实现一:
-
引入Spring配置文件spring-dao.xml
-
配置数据源替换mybatis的数据源
<bean id="datasource" class="org.springframework.jdbc.datasource.DriverManagerDataSource"> <property name="driverClassName" value="com.mysql.jdbc.Driver"/> <property name="url" value="jdbc:mysql://localhost:3306/mybatis?useSSL=true&useUnicode=true&characterEncoding=utf8"/> <property name="username" value="root"/> <property name="password" value="123456"/> </bean>
-
配置SqlSessionFactory,关联Mybatis
<bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean"> <property name="dataSource" ref="datasource"/> <property name="configLocation" value="mybatis-config.xml"/> <property name="mapperLocations" value="classpath:com/aishimin/dao/UserMapper.xml"/> </bean>
-
注册sqlSessionTemplate,关联SqlSessionFactory
<bean id="sqlSession" class="org.mybatis.spring.SqlSessionTemplate"> <constructor-arg index="0" ref="sqlSessionFactory"/> </bean>
-
增加Dao接口的实现类,私有化sqlSessionTemplate
public class UserMapperImpl implements UserMapper{ private SqlSessionTemplate sqlSession; public void setSqlSession(SqlSessionTemplate sqlSession) { this.sqlSession = sqlSession; } @Override public List<User> getUserList() { UserMapper mapper = sqlSession.getMapper(UserMapper.class); return mapper.getUserList(); } }
-
注册bean实现
<bean id="UserMapper" class="com.aishimin.dao.UserMapperImpl"> <property name="sqlSession" ref="sqlSession"/> </bean>
-
测试
public class MyTest { @Test public void test() { ApplicationContext context = new ClassPathXmlApplicationContext("applicationContext.xml"); UserMapper mapper = context.getBean("UserMapper", UserMapper.class); for(User user:mapper.getUserList()){ System.out.println(user); } } }
整合方式二
-
新建UserMapperImpl2
public class UserMapperImpl2 extends SqlSessionDaoSupport implements UserMapper { @Override public List<User> getUserList() { UserMapper userMapper = getSqlSession().getMapper(UserMapper.class); return userMapper.getUserList(); } }
-
修改bean配置
<bean id="UserMapper2" class="com.aishimin.dao.UserMapperImpl2"> <property name="sqlSessionFactory" ref="sqlSessionFactory"/> </bean>
-
测试
public class MyTest { @Test public void test() { ApplicationContext context = new ClassPathXmlApplicationContext("applicationContext.xml"); UserMapper mapper = context.getBean("UserMapper2", UserMapper.class); for(User user:mapper.getUserList()){ System.out.println(user); } } }

浙公网安备 33010602011771号