在springMVC+mybatis框架开发时,通常我们会写多的dao,如userDao,roleDao,departDao等等,这样开发效果就很慢,不是很好,所以编写个通用dao.
1.编写dao接口
- public interface DAO {
-
-
-
-
-
-
-
-
- public Object save(String str, Object obj) throws Exception;
-
-
-
-
-
-
-
-
- public Object update(String str, Object obj) throws Exception;
-
-
-
-
-
-
-
-
- public Object delete(String str, Object obj) throws Exception;
-
-
-
-
-
-
-
-
- public Object findForObject(String str, Object obj) throws Exception;
-
-
-
-
-
-
-
-
- public Object findForList(String str, Object obj) throws Exception;
-
-
-
-
-
-
-
-
- public Object findForMap(String sql, Object obj, String key , String value) throws Exception;
-
- }
2.编写dao 实现类
- public class DaoSupport implements DAO {
-
- @Resource(name = "sqlSessionTemplate")
- private SqlSessionTemplate sqlSessionTemplate;
-
-
-
-
-
-
-
-
- public Object save(String str, Object obj) throws Exception {
- return sqlSessionTemplate.insert(str, obj);
- }
-
-
-
-
-
-
-
-
- public Object batchSave(String str, List objs )throws Exception{
- return sqlSessionTemplate.insert(str, objs);
- }
-
-
-
-
-
-
-
-
- public Object update(String str, Object obj) throws Exception {
- return sqlSessionTemplate.update(str, obj);
- }
-
-
-
-
-
-
-
-
- public void batchUpdate(String str, List objs )throws Exception{
- SqlSessionFactory sqlSessionFactory = sqlSessionTemplate.getSqlSessionFactory();
-
- SqlSession sqlSession = sqlSessionFactory.openSession(ExecutorType.BATCH,false);
- try{
- if(objs!=null){
- for(int i=0,size=objs.size();i<size;i++){
- sqlSession.update(str, objs.get(i));
- }
- sqlSession.flushStatements();
- sqlSession.commit();
- sqlSession.clearCache();
- }
- }finally{
- sqlSession.close();
- }
- }
-
-
-
-
-
-
-
-
- public Object batchDelete(String str, List objs )throws Exception{
- return sqlSessionTemplate.delete(str, objs);
- }
-
-
-
-
-
-
-
-
- public Object delete(String str, Object obj) throws Exception {
- return sqlSessionTemplate.delete(str, obj);
- }
-
-
-
-
-
-
-
-
- public Object findForObject(String str, Object obj) throws Exception {
- return sqlSessionTemplate.selectOne(str, obj);
- }
-
-
-
-
-
-
-
-
- public Object findForList(String str, Object obj) throws Exception {
- return sqlSessionTemplate.selectList(str, obj);
- }
-
- public Object findForMap(String str, Object obj, String key, String value) throws Exception {
- return sqlSessionTemplate.selectMap(str, obj, key);
- }
-
- }
3.那么怎么使用呢?
- public class UserService {
-
- @Resource(name = "daoSupport")
- private DaoSupport dao;
-
-
-
-
- public User getUserAndRoleById(String userid) throws Exception {
- return (User) dao.findForObject("UserMapper.getUserAndRoleById", <span style="font-family: Arial, Helvetica, sans-serif;">userid</span>);
- }
-
- }
4. UserMapper.xml中的配置
- <?xml version="1.0" encoding="UTF-8"?>
- <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
- "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
- <mapper namespace="UserMapper">
- <select id="getUserById" parameterType="String" resultType="User">
- select * from SYS_USER where userId=#{userId}
- </select>
- lt;/mapper>
好了,就这样,是不是觉得很简单,直接释放出dao层,一个通用dao.