spring整合mybatis(入门级简单教程3)--获取sqlSession对象
2015-09-15 13:45
886 查看
引子:sqlSession对象在mybatis中的作用是不用说的了。比如我们可以用它来commit()、rollback()以及执行我们的map代码。下面介绍获取sqlSession对象的两种方法:
(说明:本篇是在上一篇的基础之上编写的)
1、第一种方法是使用SqlSessionTemplate,它是spring-mybatis很重要的部分,实现了SqlSession 接口,并且是线程安全的。
如上图所示,在上一篇博客的基础之上增加了横线所示的包和实现类。
(注:它们实现接口,这不是必须的,什么意思?就是我们如果不实现接口,也是可以跑的)
在这个类中,就有我们需要的sqlSession对象。
如果我们要在UserMapperImpl中使用下面这个方法的话,也就是批量插入,那么,我们还需要在applicationContext中增加适当的配置:请看下面:
*********************************************SqlSessionDaoSupport****************************************************
#######################################################################################
我们已经完成了获得SqlSession的第一种方法,下面我们来讲第二种方法(第二种方法相对简单一点,只需要继承SqlSessionDaoSupport类,然后用getSqlSession()方法来获取sqlSession对象)具体请看下面:
(说明:本篇是在上一篇的基础之上编写的)
1、第一种方法是使用SqlSessionTemplate,它是spring-mybatis很重要的部分,实现了SqlSession 接口,并且是线程安全的。
如上图所示,在上一篇博客的基础之上增加了横线所示的包和实现类。
(注:它们实现接口,这不是必须的,什么意思?就是我们如果不实现接口,也是可以跑的)
在这个类中,就有我们需要的sqlSession对象。
package com.dao.impl; import org.apache.ibatis.session.SqlSession; import com.dao.UserMapper; import com.models.User; public class UserMapperImpl implements UserMapper{ private SqlSession sqlSession; public void setSqlSession(SqlSession sqlSession) { this.sqlSession = sqlSession; } @Override public User getUser(String userID) { return (User)sqlSession.selectOne("com.dao.UserMapper.getUser", userID); } @Override public void insertUser(User user) { //这里面的代码可以自己写上,形式和上面的一样。 //因为接口中已经定义了这个方法,我们可以直接使用接口的方法来完成调用 } public void insertUsers(User[] users){ for(User user : users){ sqlSession.insert("com.dao.UserMapper.insertUser", user); } } }接下来,我们需要配置applicationContext文件,我们只需要在原来这个配置文件里面添加下面的代码即可:
<!-- session --> <bean id="sqlSession" class="org.mybatis.spring.SqlSessionTemplate"> <constructor-arg index="0" ref="sqlSessionFactory" /> </bean> <bean id="userMapperImpl" class="com.dao.impl.UserMapperImpl"> <property name="sqlSession" ref="sqlSession"/> </bean>我们测试一下:
package com.test; import org.springframework.context.ApplicationContext; import org.springframework.context.support.FileSystemXmlApplicationContext; import com.dao.UserMapper; import com.dao.impl.ManagerMapperImpl; import com.dao.impl.UserMapperImpl; import com.models.Manager; import com.models.User; import com.service.TestService; public class SpringTest { public static void main(String[] args) { UserMapperImpl userMapperImpl = context.getBean(UserMapperImpl.class); User user = userMapperImpl.getUser("1"); System.out.println("user info = "+user.getId()+"; "+user.getName()+"; "+user.getPassword()); } }
如果我们要在UserMapperImpl中使用下面这个方法的话,也就是批量插入,那么,我们还需要在applicationContext中增加适当的配置:请看下面:
public void insertUsers(User[] users){ for(User user : users){ sqlSession.insert("com.dao.UserMapper.insertUser", user); } }我们只需要在原来的基础之上增肌一个<constructor-arg/>就可以了
<!-- session --> <bean id="sqlSession" class="org.mybatis.spring.SqlSessionTemplate"> <constructor-arg index="0" ref="sqlSessionFactory" /> <constructor-arg index="1" value="BATCH" /> </bean>我们测试一下:在main方法中加入下面代码:
UserMapperImpl userMapperImpl = context.getBean(UserMapperImpl.class); User[] users = new User[3]; User u1 = new User(); u1.setName("Finley1"); u1.setPassword("pass1"); User u2 = new User(); u2.setName("Finley2"); u2.setPassword("pass2"); User u3 = new User(); u3.setName("Finley3"); u3.setPassword("pass3"); users[0] = u1; users[1] = u2; users[2] = u3; userMapperImpl.insertUsers(users);#######################################################################################
*********************************************SqlSessionDaoSupport****************************************************
#######################################################################################
我们已经完成了获得SqlSession的第一种方法,下面我们来讲第二种方法(第二种方法相对简单一点,只需要继承SqlSessionDaoSupport类,然后用getSqlSession()方法来获取sqlSession对象)具体请看下面:
package com.dao.impl; import org.mybatis.spring.support.SqlSessionDaoSupport; import com.dao.ManagerMapper; import com.models.Manager; public class ManagerMapperImpl extends SqlSessionDaoSupport implements ManagerMapper{ @Override public Manager getManager(String managerID) { return (Manager)getSqlSession().selectOne("com.dao.ManagerMapper.getManager", managerID); } }对于spring的配置文件,是不是不用改动?不是的,我们还需要申明相应的bean,请看:
<bean id="managerMapperImpl" class="com.dao.impl.ManagerMapperImpl"> <property name="sqlSessionFactory" ref="sqlSessionFactory"/> </bean>我们测试一下:在main函数中加入下面的代码:
ManagerMapperImpl managerMapperImpl = context.getBean(ManagerMapperImpl.class); Manager manager = managerMapperImpl.getManager("1"); System.out.println("manager info = "+manager.getId()+"; "+manager.getName()+"; "+manager.getPassword());跑起来了吗?很简单是不是? = =
相关文章推荐
- spring整合mybatis(入门级简单教程2)
- spring整合mybatis(入门级简单教程1)--在spring中配置c3p0,并成功测试
- 使用struts2框架来实现CRUD(create、read、update、delete)
- java坦克游戏
- 贪吃蛇游戏(java)
- 考研成绩查询系统(jsp、mysql、java)
- 用java实现优先级别队列
- 用Java实现单向链表
- java飞机游戏小项目
- Spring注解@Resource和@Autowired
- Java多态性的理解
- Java 对jni的调用
- Ubuntu安装JDK及环境变量配置步骤详解
- java基础学习笔记-static和final
- Java实现验证码制作
- spring
- java web每天定时执行任务
- Ant+Junit产生java的单元测试报告
- Android 在Eclipse中使用Ant Build构建项目时出现的"crunch"
- 从命令行及java程序运行MyBatis Generator 1.3.x自动生成MyBatis 3.x代码