2019年6月24日
MyBatis与Spring的整合
在学习Spring框架,今天的第一个博客
Spring在整合Batista时,需要依次完成并加载MyBatis配置信息、构建SqlSessionFactory和SqlSession实例,完成对业务逻辑对象的依赖注入等工作。
JAR包
mybatis-spring-2.0.1.jar
spring-jdbc-5.1.8.RELEASE.jar
spring-tx-5.1.8.RELEASE.jar
-
一、配置数据源
任何持久化解决方案,数据库连接都是首先要解决的问题。在Spring中,数据源作为一个重要组件可以单独进行配置和维护。
我们使用Spring整合MyBatis可以Spring中配置数据源。在Spring中配置数据源。
使用dbcp数据源进行配置。
dbcp隶属于Apache Commons项目
JAR包
commons-dbcp-5.1.8.RELEASE.jar
commons-pool-5.1.8.RELEASE.jar
建立Spring配置文件<bean id="dataSource" class="org.apache.commons.dbcp2.BasicDataSource" destroy-method="close"> <property name="driverClassName" value="com.mysql.jdbc.Driver" /> <property name="url"> <value><![CDATA[jdbc:mysql://127.0.0.1:3306/数据库名?useUnicode=true&characterEncoding=utf-8]]></value> </property> <property name="username" value="root" /> <property name="password" value="root" /> </bean>
-
二、配置SqlSessionFactoryBean
配置完数据源,就可以在此基础上集合SQL映射文件信息以及配置MyBatis文件中其他信息,和创建SqlSessionFactory实例。<bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean"> <property name="dataSource" ref="dataSource" /> <property name="configLocation" value="classpath:mybatis-config.xml" /> <property name="mapperLocations"> <list> <value>classpath:cn/smbms/dao/**/*.xml</value> </list> </property> </bean>
-
三、使用SqlSessionTemplate实现数据库的操作
public class UserMapperImpl implements UserMapper { private SqlSessionTemplate sqlSession; public List<User> getUserList(User user) { return sqlSession.selectList("cn.test.UserMapper.getUserList",user); } public SqlSessionTemplate getSqlSession(){ return sqlSession; } public void setSqlSession(SqlSessionTemplate sqlSession){ this.sqlSession=sqlSession; }
}
创建SqlSessionTemplate实例时,需要通过其构造方法注入SqlSessionFactory实例。
这里引用的时前文配置过的id为sqlSessionFactory的Bean
与MyBatis中默认的SqlSession实现不同,SqlSessionTemplate时线程安全的,可以单例模式配置并被多个DAO对象共用,而不必为每个DAO单独配置一个SqlSessionTemplate实例。
<bean id="sqlSessionTemplate" class="org.mybatis.spring.SqlSessionTemplate">
<constructor-arg name="sqlSessionFactory" ref="sqlSessionFactory"/>
</bean>
<!-- 配置DAO组件并注入SqlSessionTemplate实例-->
<bean id="userMapper" class="cn.smbms.dao.UserMapperImpl">
<property name="sqlSession" ref="sqlSessionTemplate" />
</bean>
业务类实现代码
private UserMapper userMapper;//声明UserMapperFactoryBean接口引用
public UserMapper getUserMapper() {
return userMapper;
}
public void setUserMapper(UserMapper userMapper) {
this.userMapper = userMapper;
}
public List<User> findUsersWithConditions(User user) {
return null;
}
测试代码
public void testSpringMybatis(){
ApplicationContext ctx= new ClassPathXmlApplicationContext("applicationContext-mybatis.xml");
UserService userService=(UserService)ctx.getBean("userService");
User userCond=new User();
userCond.setUserName("赵公子");
userCond.setUserRole(3);
List<User> userList =new ArrayList<User>();
userList = userService.findUsersWithConditions(userCond);
for (User userResult:userList) {
System.out.println(userResult.toString());
}
}
上一篇: 滑动返回手势探究
下一篇: CSS3动画:动画文本ヾ(゚∀゚ゞ)