<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