Mybatis/Ibatis,数据库操作的返回值


insert,返回值是:新插入行的主键(primary key);需要包含<selectKey>语句,才会返回主键,否则返回值为null。
update/delete,返回值是:更新或删除的行数;无需指明resultClass;但如果有约束异常而删除失败,只能去捕捉异常。
queryForObject,返回的是:一个实例对象或null;需要包含<select>语句,并且指明resultMap;
queryForList,返回的是:实例对象的列表;需要包含<select>语句,并且指明resultMap;
我的配置文件如下(desktop_common_sqlMap.xml):
[html] view plaincopy在CODE上查看代码片派生到我的代码片
<typeAlias alias="UnlockTagInfo" type="com.desktop.common.bean.UnlockTagInfo" /> 
<resultMap class="UnlockTagInfo" id="UnlockTagInfoResult"> 
    <result column="id" property="id" jdbcType="INTEGER" /> 
    <result column="name" property="name" jdbcType="VARCHAR" /> 
    <result column="description" property="description" jdbcType="VARCHAR" /> 
    <result column="priority" property="priority" jdbcType="INTEGER" /> 
</resultMap> 
<insert id="insertUnlockTagInfo" parameterClass="map"> 
    <selectKey resultClass="int" keyProperty="id"> 
        select 
        nextval('desktop_unlock_tag_id_seq') as id 
    </selectKey> 
    insert into 
    desktop_unlock_tag(id,name,description,priority) 
    values(#id:INTEGER#,#name:VARCHAR#,#description:VARCHAR#,#priority:INTEGER#) 
</insert> 
<update id="updateUnlockTagInfo" parameterClass="map"> 
    update 
    desktop_unlock_tag 
    set modify_time=now(),priority=#priority:INTEGER#, 
    name=#name:VARCHAR#,description=#description:VARCHAR# 
    where 
    id=#id:INTEGER# 
</update> 
<delete id="deleteUnlockTagInfo" parameterClass="int"> 
    delete from 
    desktop_unlock_tag 
    where id=#value:INTEGER# 
</delete> 
<select id="countUnlockTagInfo" resultClass="int"> 
    select count(*) 
    from 
    desktop_unlock_tag 
</select> 
<sql id="selectUnlockTagInfo"> 
    select 
    id,name,description,priority 
    from 
    desktop_unlock_tag 
</sql> 
<select id="findUnlockTagInfoById" parameterClass="int" 
    resultMap="UnlockTagInfoResult"> 
    <include refid="selectUnlockTagInfo" /> 
    where id=#id:INTEGER# 
</select> 
<select id="listUnlockTagInfo" parameterClass="map" 
    resultMap="UnlockTagInfoResult"> 
    <include refid="selectUnlockTagInfo" /> 
    order by 
    modify_time desc limit #size:INTEGER# 
    offset #start:INTEGER# 
</select> 
我的DAO源码如下:
[java] view plaincopy在CODE上查看代码片派生到我的代码片
public class UnlockTagDaoImpl extends SqlMapClientDaoSupport implements 
        UnlockTagDao { 
    @Override 
    public Integer addItem(String name, String desc, Integer priority) { 
        SqlMapClientTemplate template = this.getSqlMapClientTemplate(); 
        Map<String, Object> args = new HashMap<String, Object>(); 
        args.put("name", name); 
        args.put("description", desc); 
        args.put("priority", priority); 
        Object key = template.insert("DesktopCommon.insertUnlockTagInfo", args); 
        return (Integer) key; 
    } 
 
    @Override 
    public boolean updateItem(Integer id, String name, String description, 
            Integer priority) { 
        SqlMapClientTemplate template = this.getSqlMapClientTemplate(); 
        Map<String, Object> args = new HashMap<String, Object>(); 
        args.put("id", id); 
        args.put("name", name); 
        args.put("description", description); 
        args.put("priority", priority); 
        try { 
            int c = template.update("DesktopCommon.updateUnlockTagInfo", args); 
            if (c > 0) { 
                return true; 
            } 
            return false; 
        } catch (Exception e) { 
            return false; 
        } 
    } 
 
    @Override 
    public boolean deleteItem(Integer id) { 
        SqlMapClientTemplate template = this.getSqlMapClientTemplate(); 
        try { 
            int c = template.delete("DesktopCommon.deleteUnlockTagInfo", id); 
            if (c > 0) { 
                return true; 
            } 
            return false; 
        } catch (Exception e) { 
            return false; 
        } 
    } 
 
    @Override 
    public UnlockTagInfo findItemById(Integer id) { 
        SqlMapClientTemplate template = this.getSqlMapClientTemplate(); 
        UnlockTagInfo item = (UnlockTagInfo) template.queryForObject( 
                "DesktopCommon.findUnlockTagInfoById", id); 
        return item; 
    } 
 
    @Override 
    public PagedList<UnlockTagInfo> listAll(Integer nStart, Integer nSize, 
            boolean bCountTotal) { 
        SqlMapClientTemplate template = this.getSqlMapClientTemplate(); 
        PagedList<UnlockTagInfo> result = new PagedList<UnlockTagInfo>(); 
        if (bCountTotal) { 
            int total = (Integer) template 
                    .queryForObject("DesktopCommon.countUnlockTagInfo"); 
            result.setTotal(total); 
        } 
        Map<String, Integer> args = new HashMap<String, Integer>(); 
        args.put("start", nStart); 
        args.put("size", nSize); 
        @SuppressWarnings("unchecked") 
        List<UnlockTagInfo> items = template.queryForList( 
                "DesktopCommon.listUnlockTagInfo", args); 
        result.setData(items); 
        return result; 
    } 

猜你喜欢

转载自1278051243-qq-com.iteye.com/blog/2062220