返回主键
1.XML方式

<insert id="bb" parameterType="XX.XX.XXEntity包" useGeneratedKeys="true" keyProperty="id">这里是insert语句
</insert>

2.注解方式,要在接口方法上加两个注解,一个是insert,一个是selectKey

@Insert("这里是insert语句")
@SelectKey(statement = "SELECT last_insert_id() as id", keyProperty = "id", before = false, resultType = String.class, statementType = StatementType.STATEMENT)
//entity里要有id这个属性并且有getset方法,上面的resultType要注意,你的entity里的id是什么属性,就写什么,我的id是String,所以我写String.class,如果你的是int,那么请写Integer.class
public int insert(实体类 entity);

循环
本文展示了这样一个业务:根据多个ID删除多条数据

public Integer 方法名AA(@Param("bb") String[] ids);

1.Mybatis接口方式,接口方式的循环通常很好些,因为@param可以指定名字

<delete id="方法名AA" resultMap="如果是查询记得写返回值类型">delete from 表 where id in//如果是批量插入记得删掉open和close属性<foreach collection="bb" item="item" index="index" open="("separator="," close=")">#{item}</foreach>
</delete>

2.Mybatis映射方式,如果使用映射方式,bb如果不放到map中,那么mybatis会把他的名字变成list,所以如下写,不再用item属性了

<delete id="方法名AA" resultMap="如果是查询记得写返回值类型">delete from 表 where id in//如果是批量插入记得删掉open和close属性<foreach collection="list"  index="index" item="aaa" open="("separator="," close=")">#{list[${index}]}</foreach>
</delete>

注: 当mybatis以映射方式循环的时候,你们会发现循环语句中有个item=“aaa”,虽然我下面没有用到这个,但是item必须写,哪怕是item=“bbb”,item=“ccc”,必须要写,否则mybatis报错

加前缀后缀覆盖
下面的例子展示了如果传递用户名称,则将用户名称userName和年龄userAge作为条件进行或查询,但是由于前面有一个逻辑删除表示is_deleted = 0,这导致如果不进行特殊处理,后面name+age无法在一个括号里,但是如果在一个括号里(所以使用prefix+suffix),并且name前面的OR要消失,所以使用prefixOverrides

select * from 表
where
is_deleted = 0
<trim prefix="(" suffix=")" prefixOverrides="OR"><if test="userName=null and userName!=''">OR t1.`name` = #{userName}</if><if test="userAge=null and userAge!=''">OR t1.`age` = #{userAge}</if>
</trim>

Mybatis-语法笔记相关推荐

  1. mybatis学习笔记--常见的错误

    原文来自:<mybatis学习笔记--常见的错误> 昨天刚学了下mybatis,用的是3.2.2的版本,在使用过程中遇到了些小问题,现总结如下,会不断更新. 1.没有在configurat ...

  2. Mybatis学习笔记【part03】增删改查

    Mybatis 学习笔记 Part03 1.传入参数与返回参数设置(查) <!-- 根据 id 查询 --> <select id="findById" resu ...

  3. mybatis学习笔记(13)-延迟加载

    2019独角兽企业重金招聘Python工程师标准>>> mybatis学习笔记(13)-延迟加载 标签: mybatis [TOC] resultMap可以实现高级映射(使用asso ...

  4. mybatis学习笔记(7)-输出映射

    2019独角兽企业重金招聘Python工程师标准>>> mybatis学习笔记(7)-输出映射 标签: mybatis [TOC] 本文主要讲解mybatis的输出映射. 输出映射有 ...

  5. Python爬虫:Xpath语法笔记

    Python爬虫:Xpath语法笔记 一.选取节点 常用的路劲表达式: 表达式 描述 实例   nodename 选取nodename节点的所有子节点 xpath('//div') 选取了div节点的 ...

  6. mybatis学习笔记(3)-入门程序一

    2019独角兽企业重金招聘Python工程师标准>>> mybatis学习笔记(3)-入门程序一 标签: mybatis [TOC] 工程结构 在IDEA中新建了一个普通的java项 ...

  7. MyBatis多参数传递之Map方式示例——MyBatis学习笔记之十三

    前面的文章介绍了MyBatis多参数传递的注解.参数默认命名等方式,今天介绍Map的方式.仍然以前面的分页查询教师信息的方法findTeacherByPage为例(示例源代码下载地址:http://d ...

  8. ant的下载与安装——mybatis学习笔记之预备篇(一)

    看到这个标题是不是觉得有点奇怪呢--不是说mybatis学习笔记吗,怎么扯到ant了?先别急,请容我慢慢道来. mybatis是另外一个优秀的ORM框架.考虑到以后可能会用到它,遂决定提前学习,以备不 ...

  9. SpringBoot集成Mybatis用法笔记

    今天给大家整理SpringBoot集成Mybatis用法笔记.希望对大家能有所帮助! 搭建一个SpringBoot基础项目. 具体可以参考SpringBoot:搭建第一个Web程序 引入相关依赖 &l ...

  10. mybatis学习笔记(1)-对原生jdbc程序中的问题总结

    2019独角兽企业重金招聘Python工程师标准>>> mybatis学习笔记(1)-对原生jdbc程序中的问题总结 标签:mybatis [TOC] 本文总结jdbc编程的一般步骤 ...

最新文章

  1. 作为程序员,这些梗你都答得上来吗?
  2. 万万没想到,枯燥的“机器学习”还可以这样学!
  3. networkx 中心势计算_科学网—复杂网络分析库NetworkX学习笔记(2):统计指标计算 - 闫小勇的博文...
  4. Linq中常用的方法
  5. 10000以内的素数。
  6. vue.js实现自定义输入分页
  7. 如何做软件需求分析(个人工作经验总结)
  8. 系统可用性量表评估问卷
  9. VARCHART XGantt 甘特图中的日期和夏令时
  10. 定位误差的计算机械制造,机械制造技术基础定位误差分析和计算.pdf
  11. Python学习笔记之小派读诗
  12. 【Chrome】从Google官网下载 Google Chrome 离线安装包
  13. 小程序列表多个批量倒计时
  14. wkt 画圆_PS怎么画很多小圆呈圆形排列
  15. 很实用的应用,推荐一下http://static.apk.hiapk.com/html/2012/06/625213.html?module=256info=MQA2ADMA
  16. matlab中拉式域转时间域,Bark域介绍和线性频率域转换到Bark域
  17. Java单例模式详解--七种单例模式实现+单例安全+实际应用场景
  18. 涨停板打开是不是下跌信号?
  19. 怎样学习Linux运维云计算,linux运维云计算课程学习,Linux云计算面试时遇到的问题...
  20. CSS制作鼠标移上去,三角形(箭头)旋转

热门文章

  1. OFDM系统MATLAB仿真
  2. 设计模式之工厂模式(工厂方法模式 和 抽象工厂模式)
  3. 【老军医方】在脱发过程中遇到的各种疑难杂症
  4. servlet ---- 案例(简单)优化
  5. mset redis_redis mset string 命令简介
  6. 一次SpringBoot AutoWired 注入服务为null的事件
  7. eclipse报错找不到tools.jar
  8. Java程序员面试准备-路线
  9. 微信android 流畅,【黑科技】微信只需这样操作,立刻提升流畅度和使用效率
  10. malloc calloc realloc