MyBatis 中的mapper.xml详解

<mapper namespace="com.mapper.UserMapper",为这个mapper指定一个唯一的namespace,一般习惯为mapper接口的包路径名,这样可以保值名的唯一。

1.输入参数为String类型,输出为一个实体

<mapper namespace="com.mapper.UserMapper">
    <!--通过name查询出某一个实体-->
    <select id="selectOne" parameterType="java.lang.String" resultType="com.entity.User">
        select * from User where name = #{name}
    </select>
</mapper>

2.输入参数为int类型,输出为一个实体

<mapper namespace="com.mapper.UserMapper">
    <!--通过id查询出某一个实体-->
    <select id="selectOne" parameterType="int" resultType="com.entity.User">
        select * from User where id = #{id}
    </select>
</mapper>

 3.输入参数为一个实体类型

<insert id="saveUser" parameterType="com.entity.User" useGeneratedKeys="true">
    insert into User (NAME,AGE) values (#{name},#{age})
</insert>

 注意的是:useGeneratedKeys="true" 表示的是往数据库插入一条记录时,使用该数据库的自动增长策略

 4.输入参数为map类型

<select id="getRolesByMap" parameterType="map" resultType="com.entity.Role">
    select id, name, `desc` from Role where id = #{id} and name = #{name}
</select>
#接口定义的方法
List<Role> getRolesByMap(Map parameterMap);

  当多个变量传入的时候,设置了入参为map类型,本质上map存储了入参的键值对。优点:几乎适用于所有场景。缺点:业务可读性差,必须要根据依赖于接口才能明白入参。

 5.以@Param注解方式显式指出关键字

<select id="getRolesByParam" resultType="com.entity.Role">
    select id, name, `desc` from Role where id = #{key_id} and name = #{key_name}
</select>

  在java代码中以@Param方式显式指出关键字

List<Role> getRolesByParam(@Param("key_id") int id, @Param("key_name") String name);

6.输出为一个List集合

<select id="qryList" resultType="java.lang.String">
    select userName from User
</select>

 注意:此处返回的是类型为String的List集合,如果想让List的类型为User,只需要将resultType="com.entity.User"既可,

 返回List<T>集合时,需要将resultType的值定义为集合中元素类型T,而不是返回集合本身。

 resultType:

 1、基本类型  :resultType=基本类型

 2、List类型:   resultType=List中元素的类型

 3、Map类型     resultType =map

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值