resultmap中select的查询不能用动态sql

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了resultmap中select的查询不能用动态sql相关的知识,希望对你有一定的参考价值。

resultmap中select的查询不能用动态sql可以这么做:1.自定义映射resultMap.标签select中resultMap和resultType不能同时存在也不能同时没有 ,注意不管字段和属性名一样不一样都要设置。如age、gender。2.起别名,在mapper映射文件中.工作里经常会去查视图,然后在视图里起别名。要改的话就不用动代码,重建视图就好了,更方便。 参考技术A 是的,resultmap中的select查询不能使用动态SQL语句,因为它们是静态的查询语句,必须在编译时进行解析和验证。 参考技术B MyBatis的每一个查询映射的返回类型都是ResultMap,只是当我们提供的返回类型属性是resultType的时候,MyBatis对自动的给我们把对应的值赋给resultType所指定对象的属性,而当我们提供的返回类型是resultMap的时候,将数据库中列数据复制到对象的相应属性上,可以用于复制查询,两者不能同时用。 参考技术C 查询有关资料可以知道,标签select必须设置属性resultType或resultMap,用于设置实体类和数据库表的映射关系
resultType:自动映射,用于属性名和表中字段名一致的情况
resultMap:自定义映射,用于一对多或多对一或字段名和属性名不一致的情况

MyBatisresultMap和resultType的区别

mybatis中resultMap和resultType的区别

mybatis中在查询进行select映射的时候,返回类型可以用resultType,也可以用resultMap。resultType是直接表示返回类型的,而resultMap则是对外部ResultMap的引用,但是resultType跟resultMap不能同时存在。

public class User {

  private int id;

  private String username;

  private String hashedPassword;

//省略setter/getter方法

}

使用resultType
<select id="selectUsers" parameterType="int" resultType="com.someapp.model.User">

  select id, username, hashedPassword

  from some_table

  where id = #{id}

</select>

这些情况下,MyBatis 会在幕后自动创建一个 ResultMap,基于属性名来映射列到 JavaBean 的属性上。如果列名没有精确匹配,可以在列名上使用 select 字句的别名来匹配标签。

使用resultMap
<resultMap id="userResultMap" type="User">

  <id property="id" column="user_id" />

  <result property="username" column="username"/>

  <result property="password" column="password"/>

</resultMap>

 

<select id="selectUsers" parameterType="int" resultMap="userResultMap">

  select user_id, user_name, hashed_password

  from some_table

  where id = #{id}

</select>

不同
resultType对应的是java对象中的属性,大小写不敏感;resultMap对应的是对已经定义好了id的resultTupe的引用,key是查询语句的列名,value是查询的值,大小写敏感;
使用resultType的时候,要保证结果集的列名与java对象的属性相同,而resultMap则不用。
另外,resultMap 元素,它是 MyBatis 中最重要最强大的元素,它能提供级联查询,缓存等功能。


以上是关于resultmap中select的查询不能用动态sql的主要内容,如果未能解决你的问题,请参考以下文章

在mybatis中resultMap与resultType的区别

Mybatis映射中的resultType和resultMap之代码详解

mybatis中的resultMap

Mybatis中的resultType和resultMap

Mybatis中的resultType和resultMap

Mybatis ResultMap 和 resultType 区别