`
独善其身008
  • 浏览: 171319 次
  • 性别: Icon_minigender_2
  • 来自: 苏州
文章分类
社区版块
存档分类
最新评论

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; 
    } 

分享到:
评论

相关推荐

    springmybatis

    1.Configuration.xml 是 mybatis 用来建立 sessionFactory 用的,里面主要包含了数据库连接相关东西,还有 java 类所对应的别名,比如 &lt;typeAlias alias="User" type="com.yihaomen.mybatis.model.User"/&gt; 这个别名...

    mybatis3.4.1

    MyBatis 3.4.1 是一个流行的Java持久层框架,它简化了数据库操作,提供了灵活的SQL映射和对象关系映射(ORM)功能。这个版本包含了JAR源码文档,帮助开发者深入理解其内部工作原理。 1. **MyBatis 概述** MyBatis ...

    IBatis查删改查与调用存储过程 mysql数据库

    2. **工具** - 可能会提到除了IBatis之外,与数据库操作相关的其他工具或库,如MyBatis Generator用于自动生成Mapper代码,或者是数据库连接池工具如Druid或HikariCP。 **内容预期:** 在文章中,作者可能会首先...

    mybatis中查询结果为空时不同返回类型对应返回值问题

    当我们使用 MyBatis 进行数据库查询时,查询结果为空时,MyBatis 的返回值是如何处理的?这是本文要讨论的主要内容。 MyBatis 中 resultType 的定义是非常重要的,它决定了查询结果的返回类型。不同的 resultType ...

    iBatis简单入门教程.

    在实际应用中,使用iBatis进行数据库操作主要包括以下步骤: 1. 加载配置:通过SqlSessionFactoryBuilder创建SqlSessionFactory,然后通过SqlSessionFactory获取SqlSession对象。 2. 执行SQL:使用SqlSession的`...

    springMybatis

    Spring提供了一种管理业务对象和数据访问对象(DAO)的方式,而MyBatis则专注于SQL映射,两者结合能够实现灵活且高效的数据库操作。 ### MyBatis简介 MyBatis是一个优秀的持久层框架,它支持定制化SQL、存储过程...

    ibatIS调用存储过程

    ibatIS调用存储过程是数据库操作中常见的一种技术,特别是在复杂的业务逻辑处理或数据批量操作时,存储过程能够提供更高的效率和更好的性能。本文将深入探讨如何在ibatIS框架中调用存储过程,以及涉及到的相关知识点...

    mybatis是一个开源的持久层框架.docx

    MyBatis作为一个成熟且广泛使用的Java持久层框架,通过简化数据库交互、提供灵活的SQL控制和对象映射,帮助开发者更高效地进行数据库操作。无论是企业级应用程序还是中小型项目,MyBatis都能够提供强大的支持和优良...

    Spring+SpringMVC+MyBatis返回json所需jar包

    3. **MyBatis与Jackson集成**:虽然MyBatis主要处理数据库操作,但如果你需要将查询结果直接转换为JSON,可以在MyBatis的配置中指定使用Jackson。在`mybatis-config.xml`中添加`ObjectMapper`的配置: ```xml ...

    mybatis第一天

    MyBatis 可以非常简单地将接口及 POJOs(Plain Old Java Objects,普通的 Java 对象)映射成数据库中的记录。 **历史背景:** - **起源:** MyBatis 起源于 Apache 的 iBatis 项目。 - **迁移与更名:** 2010 年,该...

    ibatis与存储过程(带输出参数的应用)

    在IT行业中,数据库操作是应用程序不可或缺的一部分,而Ibatis作为一款优秀的持久层框架,极大地简化了Java应用与数据库之间的交互。本主题将深入探讨如何在Ibatis中使用存储过程,特别是涉及带有输出参数的存储过程...

    mybatis第一阶段

    综上所述,MyBatis作为一款强大的持久层框架,不仅极大地简化了JDBC操作数据库的过程,而且还提供了丰富的功能来支持动态SQL、关联查询以及与Spring的整合等高级特性。此外,IDE的改进也进一步提升了开发效率和代码...

    Ibatis-api.rar_ibatis_ibatis api

    Ibatis,全称为MyBatis,是一个优秀的Java持久层框架,它主要负责SQL映射,使得开发者能够将注意力集中在编写可复用的Java代码上,而不是处理繁琐的JDBC代码和手动参数设置。Ibatis API是这个框架的核心,提供了丰富...

    Ibatis调用Oracle存储过程返回自定义类型

    本文将深入探讨如何使用Ibatis框架来调用Oracle数据库中的存储过程,并实现返回自定义类型的处理方法。 #### Oracle自定义类型简介 Oracle支持用户自定义数据类型,这为复杂数据结构的应用提供了极大的便利。...

    ibatis的增删改查功能

    Ibatis,全称为MyBatis,是一个优秀的Java持久层框架,它主要负责SQL映射,使得开发者能够将注意力集中在编写SQL语句上,而无需关注JDBC代码的编写。Ibatis消除了几乎所有的JDBC代码和手动设置参数以及获取结果集的...

    mybatis入门

    ### MyBatis 入门与基础配置 ...通过以上详细介绍,我们可以看到MyBatis提供了一种非常灵活的方式来处理数据库操作,尤其适合需要对SQL语句有精细控制的场景。同时,它还提供了丰富的配置选项来满足不同的应用场景。

    ibatis入门

    SQL Maps是iBATIS的核心,它是XML配置文件,用于定义数据库操作的映射规则。在SQL Maps中,你可以定义SQL查询、存储过程以及它们的参数和返回值。这些映射文件将SQL语句与Java对象直接关联,使得在代码中无需手动...

    Mybatis-Study.rar

    MyBatis由SQL Map和iBATIS发展而来,是一个优秀的轻量级ORM(Object-Relational Mapping,对象关系映射)框架,它简化了数据库操作,使得开发者可以直接用Java代码来编写SQL语句,从而避免了JDBC的繁琐工作。...

    Ibatis+Spring+struts1框架搭建

    Ibatis提供了事务管理、结果映射等功能,使得数据库操作变得更加简单。 2. **Spring**: Spring框架是一个全方位的后端解决方案,它包括依赖注入(DI)、面向切面编程(AOP)、数据访问、Web应用、事务管理等多个...

    Ibatis学习指南,适合于初学者参考

    Ibatis,全称为MyBatis,是一个优秀的Java持久层框架,它主要负责简化数据库操作,使得开发者无需编写大量的SQL代码,而是将SQL语句与Java代码分离,通过XML或注解方式配置和映射原生信息,从而将接口和Java的POJOs...

Global site tag (gtag.js) - Google Analytics