<select id="findByParent" resultType="com.cy.store.entity.District">
SELECT *
FROM t_dict_district
WHERE parent = #{parent}
ORDER BY CODE ASC;
select>
<resultMap id="resultUser" type="com.cy.store.entity.User">
<result column="created_user" property="createdUser">result>
<result column="created_time" property="createdTime">result>
<result column="modified_user" property="modifiedUser">result>
<result column="modified_time" property="modifiedTime">result>
resultMap>
<select id="findByUsername" resultMap="resultUser">
select *
from t_user
where username = #{username}
select>
注意:column为数据库表的字段名称,property为实体的属性名称
要想理解parameterType和parameterMap的区别
我们以下面这个mapper接口中的方法为例
Cart findByUidAndPid(
@Param(“uid”) Integer uid,
@Param(“pid”) Integer pid
);
//行内参数映射
<select id="findByUidAndPid" parameterType="java.lang.Integer">
SELECT *
FROM t_cart
WHERE uid = #{uid}
AND pid = #{pid};
select>
注意:要把占位符#{}改为?
<parameterMap id="cart" type="com.cy.store.entity.Cart">
<parameter property="uid"/>
<parameter property="pid"/>
</parameterMap>
<select id="findByUidAndPid" parameterMap="cart">
SELECT *
FROM t_cart
WHERE uid = ?
AND pid = ?;
</select>
(1)观看上面两种方法,我们会发现使用行内参数映射比parameterMap配置看起来更直观,阅读性更强,这里只是两个参数,所以是两个?,如果我们有100个参数呢?
(2)实际上,parameterMap元素很少被使用,因为他和select|insert|update|delete元素的parameterType属性的作用类似。
而且就连parameterType属性也很少使用,因为mybatis可以通过类型处理器(TypeHandler)推断出具体传入语句的参数类型: