内容简介:当我们在写 mybatis的sql时 由于没有sql自动补全,写sql花时间比较多 并且很容易写错 只能通过写testcase来看 sql是不是写错了 一般项目中又用到了spring,大一点的项目启动spring就要花点时间,测试起来也比较麻烦当我们使用Intellij高级版时,Intellij高级版有一个自带的数据库, 在它的这个数据库写sql 时可以进行全自动的补全和检测sql的正确性并且Intellij 有一个 Inject Language的功能, 即我们可以把一种语言 注入到 一个字符串 或一个
当我们在写 mybatis的 sql 时 由于没有sql自动补全,写sql花时间比较多 并且很容易写错 只能通过写testcase来看 sql是不是写错了 一般项目中又用到了spring,大一点的项目启动spring就要花点时间,测试起来也比较麻烦
如果mybatis有sql的全自动补全 并且能够自己执行sql就会方便很多
当我们使用Intellij高级版时,Intellij高级版有一个自带的数据库, 在它的这个数据库写sql 时可以进行全自动的补全和检测sql的正确性
并且Intellij 有一个 Inject Language的功能, 即我们可以把一种语言 注入到 一个字符串 或一个 xml块中
因此利用Intellij高级版 我们可以把 sql这种语言注入到我们写的 mybatis的xml块中
这样mybatis的sql 就可以提供自动补全了 (前提是我们要把数据库给配置好)
截图如下
- Intellij高级版自带的sql自动补全和检测
- 执行sql
这样的补全 其实就已经方便很多了
但如果我们的sql里面添加了 include set trim where foreach这类mybatis自定义的标签的时候 在这些标签后面的sql不能进行自动补全 和识别了 由于Intellij不能识别这些标签 导致也不能执行sql
以下是截图
- 无法识别mybatis的标签 点到标签后的列 无法补全和跳转
如何解决
- 避免使用 where set trim 等标签 带标签的sql 大部分是可以转成不带标签的
如
SELECT <include refid="all_column"/>
FROM comment_p_o
<where>
<if test="pojo.id != null"> AND id = #{pojo.id} </if>
<if test="pojo.article_id != null"> AND article_id = #{pojo.article_id} </if>
</where>
复制代码
可以改写为
SELECT <include refid="all_column"/>
FROM comment_p_o
WHERE 1=1
<if test="pojo.id != null"> AND id = #{pojo.id} </if>
<if test="pojo.article_id != null"> AND article_id = #{pojo.article_id} </if>
复制代码
对于 set 和 trim这种 如果有明确会更新的字段 也是可以转的 把明确要改的字段 放在最后一个 就可以避免逗号的问题 但是对于下面这种 就没办法转了
update order_info
<set>
<if test="orderId != null">
order_id = #{orderId,jdbcType=VARCHAR},
</if>
<if test="userEmail != null">
user_email = #{userEmail,jdbcType=VARCHAR},
</if>
</set>
where id = #{id,jdbcType=INTEGER}
复制代码
改写为
update order_info
set
<if test="orderId != null">
order_id = #{orderId,jdbcType=VARCHAR},
</if>
<if test="userEmail != null">
user_email = #{userEmail,jdbcType=VARCHAR}
</if>
where id = #{id,jdbcType=INTEGER}
复制代码
就会有问题 如果 userEmail为空 sql就错了
所以这个方案不是很完美 所以有下面这个方案
由于Intellij 不支持 Mybatis的标签,要是Intellij能支持这块就好了 幸运的是,有一个Intellij 插件支持这个功能,可以正确识别Mybatis的标签 在这些标签后面的sql可以自动补全 可以识别带标签的mybatis的语句 是否正确 从此不用担心sql是否写错 地址是: github.com/gejun123456…
识别trim标签
识别set标签
识别where标签
sql是否正确检测
不过该插件是收费的,一个月3元 一年29 欢迎各位免费试用brucege.com
当然插件还有很多其他的功能 可以看插件的文档 gejun123456.github.io/MyBatisCode…
以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,也希望大家多多支持 码农网
猜你喜欢:- WiredTiger的时间戳事务设计及其正确性证明
- 流处理系统正确性基石:ExactlyOnce 的设计和实现
- 流处理系统正确性基石:ExactlyOnce的设计和实现
- Spring中循环依赖的正确性与Bean注入的顺序关系
- 月光宝盒助力全自动高覆盖回归测试
- 视频演讲: 基于 Docker 的全自动化性能测试平台
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
The Facebook Effect
David Kirkpatrick / Simon & Schuster / 2010-6-8 / USD 26.00
《Facebook 效应》的作者近距离地采访了与Facebook相关的人士,其中包括Facebook的创始人、员工、投资人、意向投资人以及合作伙伴,加起来超过了130人。这是真切详实的访谈,更是超级精彩的故事。作者以其细腻的笔触,精巧的叙事结构,解密了Facebook如何从哈佛的宿舍里萌发,创始人的内讧,权力之争,如何放弃华盛顿邮报的投资,怎样争取到第一个广告客户,而第一轮融资又如何获得一亿美元的......一起来看看 《The Facebook Effect》 这本书的介绍吧!
URL 编码/解码
URL 编码/解码
html转js在线工具
html转js在线工具