栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

Mybatis输入输出映射及动态SQL Review

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Mybatis输入输出映射及动态SQL Review

一、输入映射

    通过parameterType指定输入参数的类型,可以是简单类型、pojo包装类、HashMap等

1、输入简单类型

 
    select * from user where id=#{id} 
 

2、输入pojo包装类

 
    select * from user where id=#{id} and username like ‘%{username}%' 
 

     参数id 和username 对应hashmap中的key-value

二、输出映射

1、resultType类型输出

     使用resultType进行输出映射,只有查询出来的列名和pojo中的属性名一致,该列才可以映射成功。适用于单表查询,级联查询时使用该类型输出需要重新创建关联pojo扩展类进行映射。

     如果查询出来的列名和pojo中的属性名全部不一致,就不会创建该pojo对象。只要查询出来的列名和pojo中的属性有一个一致,就会创建pojo对象。映射失败的查询字段返回为空。

2、resultMap类型输出

     如果查询出来的列名和pojo的属性名不一致时,可使用resultMap,通过定义一个resultMap列名和pojo属性名之间作一个映射关系。得以映射输出结果。

1)定义resultMap

 
  
   
   
   
   
  

2)使用resultMap作为statement的输出映射类型

 
 
  SELECT id id_,username username_ FROM USER WHERe id=#{value} 
 

三、动态SQL

     Mybatis核心 对sql语句进行灵活操作,通过表达式进行判断,对sql进行灵活拼接、组装。

 1、动态SQL示例

     首先创建pojo类,提供该pojo对应的mapper映射文件,对crud方法分别配置

 
  update items 
   
    
    id = #{record.id,jdbcType=INTEGER}, 
    
    
    name = #{record.name,jdbcType=VARCHAR}, 
    
    
    price = #{record.price,jdbcType=REAL}, 
    
    
    pic = #{record.pic,jdbcType=VARCHAR}, 
    
    
    createtime = #{record.createtime,jdbcType=TIMESTAMP}, 
    
    
    detail = #{record.detail,jdbcType=LONGVARCHAR}, 
    
   
   
    
   
  

2、SQL片段

     将SQL中的判断条件进行封装,提高复用

1)定义sql片段

 
   
     
       
 and user.sex = #{userCustom.sex} 
       
       
 and user.username LIKE '%${userCustom.username}%' 
       
       
       
 
       
  
 id=#{user_id} 
       
       
       
       
     
   

2)引用sql片段

 
 

注:在使用动态sql时注意

1、#{}和${}的不同

     #{}表示一个占位符号,#{}接收输入参数,类型可以是简单类型,pojo、hashmap。当使用#{}接收简单类型参数时,#{}中可以写成value或其它名称。当接收pojo对象值,写入对象的属性值,形如对象.属性.属性.属性...的方式获取。

     ${}${}表示一个拼接符号,接收输入参数,类型可以是简单类型,pojo、hashmap。接收简单类型,${}中只能写成value。接受pojo对象时,与#{}相同。注意使用$拼接,会引用sql注入,所以不建议使用${}。

2、使用where 标签,第一个and 条件为空时,自动跳过。所以可以不添加where 1=1 保证sql语法正确。

3、使用sql执行insert之后返回主键id-selectKey元素的使用&SELECT LAST_INSERT_ID() 函数的使用

1)id为自增类型

 
 
   
   
    SELECT LAST_INSERT_ID() 
   
  insert into user(username,birthday,sex,address) value(#{username},#{birthday},#{sex},#{address})     
 

2)id非自增,uuid类型-mysql select uuid()函数

 
 
  SELECT uuid() 
 
insert into user(id,username,birthday,sex,address) value(#{id},#{username},#{birthday},#{sex},#{address}) 

以上所述是小编给大家介绍的Mybatis输入输出映射及动态SQL Review,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对考高分网网站的支持!

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/147717.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号