环境
mysql 、 springboot 、 mybatis 、java1.8 、 idea
1.消灭where 1=1
- 在ibatis里有大量where 1=1的代码
![9bce970d4cc56fbb2885befb96f0fe5c.jpeg](https://i-blog.csdnimg.cn/blog_migrate/2d13de8e6cf4392cc2e96c8b254beb08.jpeg)
- Mybatis可以用下面标签,消灭1=1恶心代码,最下面有完整例子
<trim prefix="" suffix="" suffixOverrides="" prefixOverrides=""></trim>
prefix:在trim标签内sql语句加上前缀。
suffix:在trim标签内sql语句加上后缀。
suffixOverrides:指定去除多余的后缀内容,如:suffixOverrides=",",去除trim标签内sql语句多余的后缀","。
prefixOverrides:指定去除多余的前缀内容
2. 防止被转义
Ibatis里的一样的
<![CDATA[ ]]>
如果写的sql中有一些特殊的字符的话,在解析xml文件的时候会被转义,但我们不希望他被转义,所以我们要使用<![CDATA[ ]]>来解决
3. foreach批量插入,in(多值)
- Ibatis里是 <iterate conjunction=",">
![9cbf773b43b0cee7783392f27ffb25d6.jpeg](https://i-blog.csdnimg.cn/blog_migrate/c30d73dce379285fe433b39e7e1c4d4b.jpeg)
- Mybatis见下面例子 <foreach collection="extInfos" item="extInfo" open="(" close=")" separator=",">
foreach元素的属性主要有 item,index,collection,open,separator,close。
item表示集合中每一个元素进行迭代时的别名,
index指 定一个名字,用于表示在迭代过程中,每次迭代到的位置,
open表示该语句以什么开始,
separator表示在每次进行迭代之间以什么符号作为分隔 符,
close表示以什么结束。
4.非空
- Mybatis <if test="value !=null" >
- ibatis 是这样的
![7962217c20959b0c37f1c6883b595cb5.jpeg](https://i-blog.csdnimg.cn/blog_migrate/cef237814c2147edd415da91162ddcc2.jpeg)
将插入数据的主键返回到 对象中
![bd1938c165f044e4c63e8d6c194f4404.jpeg](https://i-blog.csdnimg.cn/blog_migrate/a0303441dfd60839f37863f6475b1143.jpeg)
![7713209a9a4b730a2e7a0592bfe6738d.jpeg](https://i-blog.csdnimg.cn/blog_migrate/97d3d66c8d3d7c2d1e2217cce906a21c.jpeg)
运行效果
![685d60c9fd3f6a66606240a2f832edb1.jpeg](https://i-blog.csdnimg.cn/blog_migrate/3e5995f8662a6e7af28ec8b8588416ac.jpeg)
![3bbb1876ea7a41f6a1f6f5616306ea75.jpeg](https://i-blog.csdnimg.cn/blog_migrate/960de8ca724a9a633fab863f388e6f8d.jpeg)
自定义入参例子
![f1dceab0cf49aac01e79e9c988fabeca.jpeg](https://i-blog.csdnimg.cn/blog_migrate/e65b708deb8150952c5cf08c9824f593.jpeg)
![73f83a897eefb5916ae31b3b1cfa228c.jpeg](https://i-blog.csdnimg.cn/blog_migrate/eee7aa6a4377231a79733e1f535a5beb.jpeg)
![2226ecc7a7ec2655a28d2d7e1bf7cc82.jpeg](https://i-blog.csdnimg.cn/blog_migrate/065c751887961266dd86bde55ac0d9af.jpeg)
![3488b5977bf233f61c8adf2fcbc78e91.jpeg](https://i-blog.csdnimg.cn/blog_migrate/51b7de9d9a7ef7df4e62fd6ac45c01f9.jpeg)
Mybatis里的例子分析
一个分页查询、一个批量新增
注意分页查询入参是map类型,map比较灵活只要key 与xml里匹配正确就行。
![f88d267ca5706177adbea4d343186282.jpeg](https://i-blog.csdnimg.cn/blog_migrate/4a1261e0b01850874bca18ff0389bb97.jpeg)
![0b3d6237d83d68fd7bb006935f269745.jpeg](https://i-blog.csdnimg.cn/blog_migrate/ecd5cda3ea7a4280982de9fa3f370606.jpeg)
分页条件查询例子
分页条件查询应该是SQL比较复杂情况,本例子包含 like 、 = 、in,基本的情况覆盖 一般 in 用在状态字段
![e13f339b13f68778dfd171d9cd670d10.jpeg](https://i-blog.csdnimg.cn/blog_migrate/c247917ac892d1306841ec1f80a6e14b.jpeg)
![3ef798a218d540b669a6193ed0771da5.jpeg](https://i-blog.csdnimg.cn/blog_migrate/0c5f5e300ef819fb528ed3320aba9857.jpeg)
批量插入例子
注意 collection=”configs” 跟代码要匹配
![b8aae2fe679f55bcb3114562b62c4904.jpeg](https://i-blog.csdnimg.cn/blog_migrate/403f7bf58d673ac459da26a508926ceb.jpeg)
这里的命名一样要注意
![80d2e5d093b7b9e708cb21130db0aae2.jpeg](https://i-blog.csdnimg.cn/blog_migrate/8e56b4ba663d283ef8489259c41200bf.jpeg)
![cbd4434d75b24a42e81778fd0659da12.jpeg](https://i-blog.csdnimg.cn/blog_migrate/0bc352ac134b23f71e2090f621a6a24c.jpeg)
Mybatis的加字段【请注意】
![13ceb468919af8e0cff5a3ec62dbfffc.jpeg](https://i-blog.csdnimg.cn/blog_migrate/debabf991b36554a000fd97b382c6f53.jpeg)
建议所有SQL都增加此新增字段
![84601093daaa0d3f890218f939528923.jpeg](https://i-blog.csdnimg.cn/blog_migrate/a01959012f9e5d693cb1066fc9435981.jpeg)
新增字段,加resultMap、Base_Column_List
![f513575fd1da2437159456b6d5a4fa9c.jpeg](https://i-blog.csdnimg.cn/blog_migrate/f0d20f916b6dc665462de73c0abcc28a.jpeg)
运行效果
![74ca4c4058dbc04039fdde700d5fea08.jpeg](https://i-blog.csdnimg.cn/blog_migrate/391d1edb315606be5988295050b4f249.jpeg)
![3d04eba54246fd4097d29346882743c7.jpeg](https://i-blog.csdnimg.cn/blog_migrate/0b1c88e9acf4691d6df29cdc251135dd.jpeg)
分页演示了,name like 模糊查询 ;value=查询;
![147162f6b06697d6807bbe4e68512f35.jpeg](https://i-blog.csdnimg.cn/blog_migrate/27e500021427b9c025b085f24d809083.jpeg)
想学demo例子具体怎么玩的 传送门 SSM框架DEMO