首页 > 其他分享 >parameterType、resultType和resultMap

parameterType、resultType和resultMap

时间:2022-11-01 00:35:04浏览次数:40  
标签:parameterType resultMap 映射 pojo 查询 resultType user id SELECT

一、parameterType:指定输入参数类型,mybatis通过ognl从输入对象中获取参数值拼接在sql中。

1、传递简单类型,使用 #{} 占位符或 ${} 进行sql拼接。

    <!-- 根据用户id查询用户
        1.id必须和Mapper接口方法名一致
        2.parameterType必须和接口方法参数一致
        3.resultType必须和接口方法返回值类型一致
     -->
     <select id="queryUserById" parameterType="int" resultType="com.sfwu15.pojo.User">
         SELECT * FROM `user` WHERE id=#{id}
     </select>

<!-- 根据用户名称模糊查询用户 --> <select id="queryUserByUserName" parameterType="string" resultType="com.sfwu15.pojo.User"> SELECT * FROM `user` WHERE username='%${value}%' </select>

 

2、传递pojo对象,Mybatis使用ognl表达式解析对象字段的值,#{} 或 ${} 括号中的值为pojo属性名称。

    <!-- 根保存用户 -->
     <select id="saveUser" parameterType="com.sfwu15.pojo.User">
         INSERT INTO user(username,birthday,sex,address) values(#{username},#{birthday},#{sex},#{address});
     </select>

 

3、传递pojo包装对象。包装对象:Pojo类中的一个属性是另外一个pojo。

public class QueryVo {
    
    // 包含其他的pojo
    private User user;
    
    private List<Integer> ids;
    
    public List<Integer> getIds() {
        return ids;
    }

    public void setIds(List<Integer> ids) {
        this.ids = ids;
    }

    public User getUser() {
        return user;
    }

    public void setUser(User user) {
        this.user = user;
    }
}

Mapper.xml文件。

 

     <!-- 根据用户名称模糊查询用户 -->
     <select id="queryUserByUserName" parameterType="QueryVo" resultType="com.sfwu15.pojo.User">
         SELECT * FROM `user` WHERE username='%${user.name}%'
     </select>

 

二、resultType输出结果类型。

mybatis将sql查询结果的一行记录数据映射为resultType指定类型的对象。如果有多条数据,则分别进行映射,并把对象放到容器List中。

resultType可以指定将查询结果映射为pojo,但需要pojo的属性名和sql查询的列名一致方可映射成功。

 

 

1、输出简单类型。

    <!-- 查询数据的条数 -->
    <select id="queryUserCount" resultType="int">
        SELECT count(*) FROM
            `user`
    </select>

 

2、输出pojo对象。

    <!-- 根据用户id查询用户
        1.id必须和Mapper接口方法名一致
        2.parameterType必须和接口方法参数一致
        3.resultType必须和接口方法返回值类型一致
     -->
     <select id="queryUserById" parameterType="int" resultType="com.sfwu15.pojo.User">
         SELECT * FROM `user` WHERE id=#{id}
     </select>

 

3、输出pojo列表。

     <!-- 根据用户名称模糊查询用户 -->
     <select id="queryUserByUserName" parameterType="string" resultType="com.sfwu15.pojo.User">
         SELECT * FROM `user` WHERE username='%${value}%'
     </select>

 

三、resultMap可以实现将查询结果映射为复杂类型的pojo,比如在查询结果映射对象中包括pojo和list实现一对一查询和一对多查询。

如果sql查询字段名和pojo的属性名不一致,可以通过resultMap将字段名和属性名作一个对应关系,resultMap实质上还需要将查询结果映射到pojo对象中。

mapper.xml 映射文件中的列名user_id和属性名userId不一致,需要定义它们的映射关系。

    <!-- resultMap最终还是要将结果映射到pojo上,type就是指定映射到哪一个pojo -->
    <!-- id:设置ResultMap的id -->
    <resultMap type="order" id="orderResultMap">
        <!-- 定义主键 ,非常重要。如果是多个字段,则定义多个id -->
        <!-- property:主键在pojo中的属性名 -->
        <!-- column:主键在数据库中的列名 -->
        <id property="id" column="id" />

        <!-- 定义普通属性 -->
        <result property="userId" column="user_id" />
        <result property="number" column="number" />
        <result property="createtime" column="createtime" />
        <result property="note" column="note" />
    </resultMap>

    <!-- 查询所有的订单数据 -->
    <select id="queryOrderAll" resultMap="orderResultMap">
        SELECT id, user_id,
        number,
        createtime, note FROM `order`
    </select>

包装对象:Pojo类中的一个属性是另外一个pojo。

标签:parameterType,resultMap,映射,pojo,查询,resultType,user,id,SELECT
From: https://www.cnblogs.com/sfwu/p/16846351.html

相关文章

  • Mybatis---查询resultMap-多表关联{association-collection}--延迟加载
    Mybatis查询文章目录​​Mybatis查询​​​​resultMap​​​​多表关联处理结果集​​​​association​​​​collection​​​​相关的association与collection区别​​......
  • resultType="int" 返回值是 null
    在xml中写SQL语句时,指定的resultType="int"当mysql中没查到数据时返回值不是-1,也不是0,而是null.原因:mybatis对resultType的官方描述期望从这条语......
  • MyBatis之ResultMap的association和collection标签详解
    一、前言MyBatis创建时的一个思想是:数据库不可能永远是你所想或所需的那个样子。我们希望每个数据库都具备良好的第三范式或BCNF范式,可惜它们并不都是那样。如果能有一......
  • MyBatis之ResultMap的association和collection标签详解
    一、前言MyBatis创建时的一个思想是:数据库不可能永远是你所想或所需的那个样子。我们希望每个数据库都具备良好的第三范式或BCNF范式,可惜它们并不都是那样。如果能......
  • Mybatis的返回值类型resultMap
    Mybatis的查询结果除了可以设置为resultType以外,还可以设置为resultMap.1.方式一:把resultType的值设置为Mapmapper文件:<selectid="selectReturnMap"resultType="j......
  • Mybatis的返回值类型resultType
     resultType在select查询语句当中都需要返回值类型,mybatis的返回值类型就reulstType和resultMap两种。resultType的mapper示例(Mybatis的xml配置文件):resultType是Jav......
  • <resultMap >继承 解决 Mybatis 统计类查询需求
    在使用Mybatis过程中,有需要通过SQL直接计数或求和的需求,需要自定义<resultMap>,而这些<resultMap>往往会与数据库映射直接生成的<resultMap>有关联,会用到resultMap继承,这......
  • 自定义映射resultMap
    resultMap处理字段和属性的映射关系如果字段名与实体类中的属性名不一致,该如何处理映射关系?第一种方法:为查询的字段设置别名,和属性名保持一致下面是实体类中的属性名:......
  • MyBaris-ResultMap定制化查询结果
    MyBatis的ResultMap通常来说,数据库的命名规范一般是​​xxx_xxx​​​这样子,而Java的属性命名方式一般是采用的​​小驼峰命名​​​,即eName,empNo…这样的。而MyBatis的自动......
  • 三(二)、映射文件之select返回和resultMap
    目录结构同​​三(一)、mybatis映射文件-增删改和参数处理 ​​​中的​​目录结构​​这里需要再添加一张表:CREATETABLE`tbl_department`(`id`int(11)NOTNULLAUT......