Mybatis中查询语句map的使用

Posted

tags:

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

参考技术A map作为参数,如果一个表有很多列,但是我查询语句只需要用到其中的一个列,如果让实体类作为参数可能会不太方便,使用map作为参数,然后将需要用到的列的字段作为key,put相应的值就能解决这个问题。

map作为结果集来接收,这个时候要使用到一个属性resultMap,然后配合resultMap标签使用。sql语句中resultMap属性的参数,作为resultMap标签的id属性值,返回的真正类型用实体类全限定名。这样可以使得实体类中的属性和表中的列不用严格的一一对应,而是可以自己设置对应关系。

mybatis框架中parameterType为Map的用法 和 数据库语句多层嵌套

当需用到参数Map里面的数据时,直接写传进去的key,例Map map = new HashMap(); map.put("currPage1",10); 在mybatis的xml文件中需要引用的地方写上currPage1,如下文

数据库语句多层嵌套时,先执行最里层的语句,表的别名定义语句的最里层,红色字体是多表联查时定义的查询最大记录数

例:

<select id="query" parameterType="java.util.Map" resultMap="CsSmbmsBill1">
  select * from (select b.*,rownum rn from
  (select b.*,p.PRONAME,count(b.id)over() min from CS_SMBMS_BILL b inner join CS_SMBMS_PROVIDER p on b.Providerid=p.id where 1=1
  <if test="pp.Productname!=null">and b.productname like concat(concat(‘%‘,#{pp.Productname}),‘%‘)</if> 
  <if test="pp.PROVIDERID!=0">and p.id=#{pp.PROVIDERID}</if>
  <if test="pp.Ispayment!=0"> and b.ispayment=#{pp.Ispayment}</if> 
  )b where rownum &lt;=#{pageSize1}) b where rn > #{currPage1}   
 </select>

以上是关于Mybatis中查询语句map的使用的主要内容,如果未能解决你的问题,请参考以下文章

MyBatis 中SQL语句怎么样使用两种类型的参数带条件查询

mybatis怎么一对多查询语句

Mybatis使用IN语句查询(模糊查询)

Mybatis使用IN语句查询(模糊查询)

使用mybatis返回一个Map时,如果sql语句查询没有记录,如何让sql中的字段为Map中的key

mybatis 使用自定义sql 语句