1.编写dao接口
-
public
interface DAO {
-
-
/**
-
* 保存对象
-
* @param str
-
* @param obj
-
* @return
-
* @throws Exception
-
*/
-
public Object save(String str, Object obj) throws Exception;
-
-
/**
-
* 修改对象
-
* @param str
-
* @param obj
-
* @return
-
* @throws Exception
-
*/
-
public Object update(String str, Object obj) throws Exception;
-
-
/**
-
* 删除对象
-
* @param str
-
* @param obj
-
* @return
-
* @throws Exception
-
*/
-
public Object delete(String str, Object obj) throws Exception;
-
-
/**
-
* 查找对象
-
* @param str
-
* @param obj
-
* @return
-
* @throws Exception
-
*/
-
public Object findForObject(String str, Object obj) throws Exception;
-
-
/**
-
* 查找对象
-
* @param str
-
* @param obj
-
* @return
-
* @throws Exception
-
*/
-
public Object findForList(String str, Object obj) throws Exception;
-
-
/**
-
* 查找对象封装成Map
-
* @param s
-
* @param obj
-
* @return
-
* @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;
-
-
/**
-
* 保存对象
-
* @param str
-
* @param obj
-
* @return
-
* @throws Exception
-
*/
-
public Object save(String str, Object obj) throws Exception {
-
return sqlSessionTemplate.insert(str, obj);
-
}
-
-
/**
-
* 批量更新
-
* @param str
-
* @param obj
-
* @return
-
* @throws Exception
-
*/
-
public Object batchSave(String str, List objs )throws Exception{
-
return sqlSessionTemplate.insert(str, objs);
-
}
-
-
/**
-
* 修改对象
-
* @param str
-
* @param obj
-
* @return
-
* @throws Exception
-
*/
-
public Object update(String str, Object obj) throws Exception {
-
return sqlSessionTemplate.update(str, obj);
-
}
-
-
/**
-
* 批量更新
-
* @param str
-
* @param obj
-
* @return
-
* @throws Exception
-
*/
-
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();
-
}
-
}
-
-
/**
-
* 批量更新
-
* @param str
-
* @param obj
-
* @return
-
* @throws Exception
-
*/
-
public Object batchDelete(String str, List objs )throws Exception{
-
return sqlSessionTemplate.delete(str, objs);
-
}
-
-
/**
-
* 删除对象
-
* @param str
-
* @param obj
-
* @return
-
* @throws Exception
-
*/
-
public Object delete(String str, Object obj) throws Exception {
-
return sqlSessionTemplate.delete(str, obj);
-
}
-
-
/**
-
* 查找对象
-
* @param str
-
* @param obj
-
* @return
-
* @throws Exception
-
*/
-
public Object findForObject(String str, Object obj) throws Exception {
-
return sqlSessionTemplate.selectOne(str, obj);
-
}
-
-
/**
-
* 查找对象
-
* @param str
-
* @param obj
-
* @return
-
* @throws Exception
-
*/
-
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;
-
-
/*
-
*通过id获取数据
-
*/
-
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="RoleMapper">
<resultMap type="Role" id="roleResultMap">
<id column="ROLE_ID" property="ROLE_ID"/>
<result column="ROLE_NAME" property="ROLE_NAME"/>
<result column="RIGHTS" property="RIGHTS"/>
</resultMap>
<!-- 字段 -->
<sql id="Field">
ROLE_ID,
ROLE_NAME,
RIGHTS,
PARENT_ID,
ADD_QX,
DEL_QX,
EDIT_QX,
CHA_QX
</sql>
<!-- 字段值 -->
<sql id="FieldValue">
#{ROLE_ID},
#{ROLE_NAME},
#{RIGHTS},
#{PARENT_ID},
#{ADD_QX},
#{DEL_QX},
#{EDIT_QX},
#{CHA_QX}
</sql>
<!--表名 -->
<sql id="tableName">
SYS_ROLE
</sql>
<!-- 列出此组下的角色 -->
<select id="listAllRolesByPId" resultMap="roleResultMap">
select
<include refid="Field"></include>
from
<include refid="tableName"></include>
where
PARENT_ID = #{ROLE_ID}
ORDER BY ROLE_ID
</select>
<!-- 通过id查找 -->
<select id="findObjectById" parameterType="pd" resultType="pd">
select
<include refid="Field"></include>
from
<include refid="tableName"></include>
where ROLE_ID = #{ROLE_ID}
</select>
<!-- 添加 -->
<insert id="insert" parameterType="pd">
insert into
<include refid="tableName"></include>
(
<include refid="Field"></include>
) values (
<include refid="FieldValue"></include>
)
</insert>
<!-- 保存修改 -->
<update id="edit" parameterType="pd">
update
<include refid="tableName"></include>
set ROLE_NAME = #{ROLE_NAME}
where ROLE_ID = #{ROLE_ID}
</update>
<!-- 删除角色 -->
<delete id="deleteRoleById" parameterType="String">
delete from
<include refid="tableName"></include>
where ROLE_ID=#{ROLE_ID}
</delete>
<!-- 给当前角色附加菜单权限 -->
<update id="updateRoleRights" parameterType="Role">
update
<include refid="tableName"></include>
set RIGHTS=#{RIGHTS}
where ROLE_ID=#{ROLE_ID}
</update>
<!-- 通过id查找 -->
<select id="getRoleById" parameterType="String" resultMap="roleResultMap">
select * from
<include refid="tableName"></include>
where ROLE_ID=#{ROLE_ID}
</select>
<!-- 给全部子角色加菜单权限 -->
<update id="setAllRights" parameterType="pd">
update
<include refid="tableName"></include>
set RIGHTS=#{rights}
where PARENT_ID=#{ROLE_ID}
</update>
<!-- 新增权限 -->
<update id="add_qx" parameterType="pd">
update
<include refid="tableName"></include>
set ADD_QX=#{value}
where ROLE_ID=#{ROLE_ID}
</update>
<!-- 删除权限 -->
<update id="del_qx" parameterType="pd">
update
<include refid="tableName"></include>
set DEL_QX=#{value}
where ROLE_ID=#{ROLE_ID}
</update>
<!-- 修改权限 -->
<update id="edit_qx" parameterType="pd">
update
<include refid="tableName"></include>
set EDIT_QX=#{value}
where ROLE_ID=#{ROLE_ID}
</update>
<!-- 查看权限 -->
<update id="cha_qx" parameterType="pd">
update
<include refid="tableName"></include>
set CHA_QX=#{value}
where ROLE_ID=#{ROLE_ID}
</update>
</mapper>
好了,就这样,是不是觉得很简单,直接释放出dao层,一个通用dao.