(2)<select>标签与 select 语句

select语句

<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();

resultType返回值类型

返回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

你可能感兴趣的:(MyBatis与SQL语句学习,数据库,java,mybatis)