​MyBatis的参数传递和结果封装

MyBatis的参数传递

parameterType(输入类型)

<!--传递简单类型-->
<delete id="deleteUser" parameterType="int">
       DELETE from user where id = #{id}
</delete>
<!--传递POJO包装对象-->
<select id="findByVo" parameterType="QueryVo" resultType="fun.chenqi.ssm.domain.User">
   SELECT *  from user WHERE username = #{user.username}
</select>
<!--传递POJO对象-->
<update id="updateUser" parameterType="fun.chenqi.ssm.domain.User">
   UPDATE user  set username = #{username} ,birthday = #{birthday},sex = #{sex} ,address = #{address} WHERE  id = #{id}
</update>

MyBatis的结果封装

resultType           (输出类型)

<!--输出简单类型-->
<select id="findUserCount" resultType="int">
   SELECT count(*) from user;
</select>
<!--输出POJO列表-->
<select id="findAll" resultType="fun.chenqi.ssm.domain.User">
SELECT * FROM user;
</select>
<!--输出POJO对象-->
<select id="findUserByUsername" resultType="fun.chenqi.ssm.domain.User">
   SELECT * from user where username like '%${value}%';
</select>

resultMap 结果类型resultType 可以指定 pojo 将查询结果映射为 pojo,但需要 pojo 的属性名和 sql 查询的列名一致方可映射成功。如果 sql 查询字段名和 pojo 的属性名不一致, 可以通过 resultMap 将字段名和属性名作一个对应关系 , resultMap 实质上还需要将查询结果映射到 pojo 对象中。resultMap 可以实现将查询结果映射为复杂类型的 pojo,比如在查询结果映射对象中包括 pojo和 list 实现一对一查询和一对多查询。

<select id="findByVo" parameterType="QueryVo" resultMap="UserMap">
   SELECT id id_ ,username username_ , birthday birthday_ ,sex sex_ , address address_  from user WHERE username = #{user.username}
</select>

<resultMap id="UserMap" type="user">
   <id column="id_" property="id"></id>
   <!--<result column="id_" property="id"></result>-->
   <result column="username_" property="username"></result>
   <result column="birthday_" property="birthday"></result>
   <result column="sex_" property="sex"></result>
   <result column="address_" property="address"></result>
</resultMap>
<!--
id:此属性表示查询结果集的唯一标识,非常重要。如果是多个字段为复合唯一约束则定义多个
property:表示 User 类的属性。
column:表示 sql 查询出来的字段名。
column 和 property 放在一块儿表示将 sql 查询出来的字段映射到指定的 pojo 类属性上。
result:普通结果,即 pojo 的属性。
-->

发表评论