<select
id="" 命名空间的唯一标识符,一般是dao中对应的方法名
parameterType="" 可选属性,默认值unser,MyBatis可以通过TypeHandler推断出传入语句的参数
parameterMap=""
resultType="" 期望返回的数据类型的类的全限定名
resultMap="" 结果集映射,不可以和 resultType 同时使用。一般如果返回数据类型是常用的类型,比如 String Map List 的时候,
可以使用 resultType。如果返回的是简单 POJO 类的时候,也可以直接使用 resultType,如果是复杂的映射或者连级查询的时候就需要使用 resultMap。
flushCache="" 将其设置为 true,任何时候只要语句被调用,都会导致本地缓存和二级缓存都会被清空,默认值:false。
useCache="" 将其设置为 true,将会导致本条语句的结果被二级缓存,默认值:对 select 元素为 true。
timeout=""
fetchSize=""
statementType=""
resultSetType="">
select>
//POJO类定义
public class UserInfo{
Integer user_id;
String userName;
String password;
Integer age;
String address;
//构造器和set get方法省略了
}
//mapper xml配置
<select id="queryUserAll" resultType="util.UserInfo">
SELECT * FROM USER_INFO
</select>
// dao 接口方法定义
public interface IResmDao{
List<UserInfo> queryUserAll();
}
// test
IResmDao iResmDao = session.getMapper(IresmDao.class);
List<UserInfo> userInfo = iResmDao.queryUserAll();
返回int
//dao层定义
int queryUserAgeById(int userId);
//mapper.xml配置文件
<select id="queryUserAgeById" resultType="int">
SELECT AGE FROM USER_INFO WHERE USER_ID = #{userId}
select>
返回List集合
//dao层定义
List<UserInfo> queryUserAgeByIds(List<Integer> ids);
//mapper.xml配置文件
<select id="queryUserListByIds" resultType="util.UserInfo">
<if test="list != null and list.size > 0">
select * from user_info where user_id in
<foreach collection="list" index="index" item="item" open="(" close=")" separator=",">
#{item}
foreach>
if>
select>
返回Map集合
注解 @MapKey(“user_id”) 用于指定 Map 的 key,也是 POJO 定义的字段。例子里的 value 是封装的 POJO 类。
//dao层定义
@MapKey("user_id")
Map<Integer,UserInfo> queryUserMapByIds(List<Integer> ids);
//mapper.xml配置文件
<select id="queryUserMapByIds" resultType="util.UserInfo">
select * from user_info where user_id in
<foreach collection="list" index="index" item="item" open="(" close=")" separator=",">
#{item}
foreach>
select>
返回实体字段与数据库字段不一致的 Map 集合
//dao层
@MapKey("user_id")
Map<Integer,UserInfo> queryAllMap();
//mapper.xml
<resultMap id="userInfoEntry" type="util.UserInfo">
<result column="id" property="user_id"/>
<result column="username" property="userName"/>
<result column="password" property="password"/>
<result column="age" property="age"/>
<result column="address" property="address"/>
resultMap>
<select id="queryAllMap" resultMap="userInfoEntry">
select * from USER_INFO
select>
返回 POJO 类:
//dao层
UserInfo queryPOJOById(int userId);
//mapper.xml
<select id="queryPOJOById" resultType="util.UserInfo">
select * from user_info where user_id = #{userId}
select>
//dao层接口
List<UserInfo> queryUserByMultPara(@Param("age") Integer age, @Param("userName") String userName, @Param("address") String address);
//mapper.xml配置
<select id="queryUserByMultPara" resultType="util.UserInfo">
select * from user_info
where age = #{age} and username = #{userName} and address = #{address}
select>
使用 Map 传参
使用 Map 传参,value 值就是参数值。
#{age} 中的 age 即 Map 中的 key,#{age} 可以直接获取 Map 的 value。
//dao层
List<UserInfo> queryUserByMultMap(Map<String,Object> param);
//mapper.xml
<select id="queryUserByMultMap" resultType="util.UserInfo">
select * from user_info
where age = #{age} and username = #{userName} and address = #{address} select>
使用 POJO 来传参
#{age} 其实就是 UserInfo 的属性。
//dao 层接口定义:
List<UserInfo> queryUserByMultPOJO(UserInfo userInfo);
//mapper.xml
<select id="queryUserByMultPOJO" resultType="util.UserInfo">
select * from user_info
where age = #{age} and username = #{userName} and address = #{address}
select>
来源于:https://www.cnblogs.com/smile-shire/p/13664219.html