Mybatis数据库操作的返回值

本文介绍了使用MyBatis进行数据库操作的方法,包括插入、更新、删除和查询等基本操作。通过具体的XML配置示例展示了如何定义SQL语句、参数传递及结果映射。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

insert,返回值是:新插入行的主键(primary key);需要包含<selectKey>语句,才会返回主键,否则返回值为null。
update/delete,返回值是:更新或删除的行数;无需指明resultClass;但如果有约束异常而删除失败,只能去捕捉异常。
queryForObject,返回的是:一个实例对象或null;需要包含<select>语句,并且指明resultMap;
queryForList,返回的是:实例对象的列表;需要包含<select>语句,并且指明resultMap;

我的配置文件如下(desktop_common_sqlMap.xml):

[html]  view plain copy 在CODE上查看代码片 派生到我的代码片
  1. <typeAlias alias="UnlockTagInfo" type="com.desktop.common.bean.UnlockTagInfo" />  
  2. <resultMap class="UnlockTagInfo" id="UnlockTagInfoResult">  
  3.     <result column="id" property="id" jdbcType="INTEGER" />  
  4.     <result column="name" property="name" jdbcType="VARCHAR" />  
  5.     <result column="description" property="description" jdbcType="VARCHAR" />  
  6.     <result column="priority" property="priority" jdbcType="INTEGER" />  
  7. </resultMap>  
  8. <insert id="insertUnlockTagInfo" parameterClass="map">  
  9.     <selectKey resultClass="int" keyProperty="id">  
  10.         select  
  11.         nextval('desktop_unlock_tag_id_seq') as id  
  12.     </selectKey>  
  13.     insert into  
  14.     desktop_unlock_tag(id,name,description,priority)  
  15.     values(#id:INTEGER#,#name:VARCHAR#,#description:VARCHAR#,#priority:INTEGER#)  
  16. </insert>  
  17. <update id="updateUnlockTagInfo" parameterClass="map">  
  18.     update  
  19.     desktop_unlock_tag  
  20.     set modify_time=now(),priority=#priority:INTEGER#,  
  21.     name=#name:VARCHAR#,description=#description:VARCHAR#  
  22.     where  
  23.     id=#id:INTEGER#  
  24. </update>  
  25. <delete id="deleteUnlockTagInfo" parameterClass="int">  
  26.     delete from  
  27.     desktop_unlock_tag  
  28.     where id=#value:INTEGER#  
  29. </delete>  
  30. <select id="countUnlockTagInfo" resultClass="int">  
  31.     select count(*)  
  32.     from  
  33.     desktop_unlock_tag  
  34. </select>  
  35. <sql id="selectUnlockTagInfo">  
  36.     select  
  37.     id,name,description,priority  
  38.     from  
  39.     desktop_unlock_tag  
  40. </sql>  
  41. <select id="findUnlockTagInfoById" parameterClass="int"  
  42.     resultMap="UnlockTagInfoResult">  
  43.     <include refid="selectUnlockTagInfo" />  
  44.     where id=#id:INTEGER#  
  45. </select>  
  46. <select id="listUnlockTagInfo" parameterClass="map"  
  47.     resultMap="UnlockTagInfoResult">  
  48.     <include refid="selectUnlockTagInfo" />  
  49.     order by  
  50.     modify_time desc limit #size:INTEGER#  
  51.     offset #start:INTEGER#  
  52. </select>  
### Java 中数据库操作返回值类型及处理方式 在 Java 开发中,通过 JDBC 或 MyBats 等框架执行 SQL 操作时,不同的操作(如 `SELECT` 查询、`INSERT/UPDATE/DELETE` 增删改)会对应不同类型的返回值。 #### 1. **查询 (`SELECT`) 操作** 当执行查询语句时,通常使用 `ResultSet` 对象来存储查询结果。如果需要将数据映射到具体的对象或集合,则可以通过配置工具(如 MyBatis 的 `resultType` 或手动解析)。 - 如果是单条记录或多条记录的结果集,可以将其封装成自定义的对象列表或者 Map 集合。 - 若仅需获取某个单一值(如统计总数),可以直接设置为基本数据类型,例如 `int`, `long` 等[^1]。 ```java // 使用MyBatis查询并指定返回类型为整数 @Select("SELECT COUNT(*) FROM users") public Integer getUserCount(); ``` #### 2. **增删改 (`INSERT/UPDATE/DELETE`) 操作** 对于这些修改类的操作,默认情况下它们不会自动返回受影响行的数量或其他状态信息。然而,在实际开发过程中往往希望知道具体影响了多少行以及成功与否等情况: - 可以让方法返回布尔值表示是否完成(`boolean`); - 更常见的是利用整形变量(int)代表受此SQL命令作用的目标数目;另外还有其他可能的选择像Long等等依据项目需求而定. 示例代码如下所示: ```java // 插入新纪录, 返回受影响的行数 int rowsAffected = statement.executeUpdate("INSERT INTO table_name VALUES (...)"); if(rowsAffected >0 ){ System.out.println("Insert successful"); } ``` #### 3. **异常情况下的错误提示** 无论何种形式的数据访问都可能存在失败情形因此必须考虑如何妥善管理可能出现的各种例外状况从而保障程序稳定性与用户体验良好度. --- ### 总结 综上所述,Java 数据库操作中的返回值可以根据业务逻辑灵活设定。针对 SELECT 查询推荐采用 ResultSet 结果集进一步加工转换为目标实体模型;而对于 INSERT UPDATE DELETE 则更多倾向于简单直观反映变动幅度大小即整数值表现法最为普遍接受认可的方式之一[^2]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值