提供一种Spring的IoC容器与Mybatis的整合方式,其中中,Mybatis采用纯注解方式配置,Spring采用XML方式配置。数据库源采用的是C3P0数据库连接池。
1. 在Spring的XML配置文件中添加相关配置
<bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource" destroy-method="close"> <property name="driverClass" value="com.mysql.cj.jdbc.Driver"/> <property name="jdbcUrl" value="jdbc:mysql://localhost:3306/mybatis?useSSL=false&serverTimezone=Asia/Shanghai&allowPublicKeyRetrieval=true"/> <property name="user" value="root"/> <property name="password" value="password123"/> </bean> <bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean"> <property name="dataSource" ref="dataSource"/> </bean> <bean class="org.mybatis.spring.mapper.MapperScannerConfigurer"> <property name="basePackage" value="cn.titan6.spring.dao"/> <property name="sqlSessionFactoryBeanName" value="sqlSessionFactory"/> </bean> <bean id="userService" class="cn.titan6.spring.service.impl.UserServiceImpl"/>
这里采用的是mybatis-spring的MapperScannerConfigurer来实现将DAO对象置入IOC容器中,将会扫描并加入basePackage指定包下的所有DAO接口。
2. DAO接口与Service实现类
DAO简单的实现了一个查询所有信息的功能
package cn.titan6.spring.dao; import cn.titan6.spring.bean.User; import org.apache.ibatis.annotations.Select; import java.util.List; public interface UserDao { @Select("SELECT * FROM user") List<User> findAllUser(); }
UserService实现类采用Spring的注解方式自动通过构造器进行依赖注入UserDao
package cn.titan6.spring.service.impl; import cn.titan6.spring.bean.User; import cn.titan6.spring.dao.UserDao; import cn.titan6.spring.service.UserService; import org.springframework.stereotype.Component; import java.util.List; @Component("userService") public class UserServiceImpl implements UserService { private final UserDao dao; public UserServiceImpl(UserDao dao) { this.dao = dao; } @Override public List<User> findAllUser() { return dao.findAllUser(); } }
3. 进行JUnit测试
import cn.titan6.spring.bean.User; import cn.titan6.spring.config.SpringConfiguration; import cn.titan6.spring.service.UserService; import org.junit.Test; import org.springframework.context.ApplicationContext; import org.springframework.context.annotation.AnnotationConfigApplicationContext; import org.springframework.context.support.ClassPathXmlApplicationContext; import java.util.List; public class SpringTest { @Test public void findAllUser() { ApplicationContext context = new ClassPathXmlApplicationContext("Application.xml"); UserService userService = context.getBean("userService", UserService.class); List<User> allUser = userService.findAllUser(); allUser.forEach(System.out::println); } }
文章评论