在项目中,使用的是mybatis3.0.5,但没有采用其提供的DAO层接口映射的策略,而且在进行多种属性联合查找时,需要底层提供通用的解决方案,所以需要mybatis直接执行sql语句,各个daoImpl均可调用,减少了在每个mybatis文件中配置符合当前对象的select查询。。
(在mybatis中,需要通过传递对象,在select中判断对象属性是否为空进行where语句的拼凑,对后期的维护工作带来不小的考验,所以采用直接执行sql策略)
先说一说配置时,遇到的异常:
-
<selectid="findRecords"parameterType="String"resultMap="orderTypeResultMap">
-
${sql}
-
</select>
这样配置时,会出现:there no getter sql in java.lang.String 的异常
所以考虑:用一个适配器,将sql作为属性加入其中
首先:
-
<typeAliasalias="sqladapter"type="com.zj.logistics.util.SQLAdapter"/>
其次:
-
publicclassSQLAdapter{
-
Stringsql;
-
-
publicSQLAdapter(Stringsql){
-
this.sql=sql;
-
}
-
-
publicStringgetSql(){
-
returnsql;
-
}
-
-
publicvoidsetSql(Stringsql){
-
this.sql=sql;
-
}
-
}
最后:
-
<selectid="findRecords"parameterType="SQLAdapter"resultMap="orderTypeResultMap">
-
${sql}
-
</select>
注意,不要忘记在调用该select方法时,用new SqlAdapter("自己写的sql语句")作为参数哦。。。
搞定。。
真能折腾人的,这个直接写 value 不就可以了?
<select id="findRecords" parameterType="String" resultMap="orderTypeResultMap">
${value}
</select>
分享到:
相关推荐
NULL 博文链接:https://benworld.iteye.com/blog/1841031
主要介绍了MyBatis直接执行SQL查询及数据批量插入的相关知识,需要的朋友一起学习吧
适用于springboot(整合过mybatis的)和常规SSM项目,可以获取完整的mybatis执行的sql语句,用于直观的看到执行sql是否异常
Mybatis执行SQL语句的方式
大家对mybatis执行任意sql语句都了解,那么MyBatis执行动态SQL语句呢?下面脚本之家小编给大家解答下mybatis执行动态sql语句的方法,非常不错,感兴趣的朋友参考下吧
if 、where、set、trim、choose 、foreach等在mybatis中的具体用法,有具体实例可供参考,玩转mybatis
mybatis动态插入sql语句的编写(csdn)————程序
mybatis+spring 框架中配置日志中显示sql语句
1.网上搜索了很多,几乎都是能修改sql, 但是修改后的sql不生效,还是执行原来的sql. 2.这个版本亲测可以生效。 3.支持分页查询
把 mybatis 输出的sql日志还原成完整的sql语句。 将日志输出的sql语句中的问号 ? 替换成真正的参数值。 通过 "Tools -> MyBatis Log Plugin" 菜单或快捷键 "Ctrl+Shift+Alt+O" 启用。 点击窗口左边的 "Filter" ...
拦截器监控慢SQL并将完整的可执行的SQL语句打印在日志文件中,复制该SQL语句即可在数据库工具中执行。 使用方法: 找到你springboot项目中的配置文件,增加如下配置即可 application.yml 配置如下: sql: slow...
用于mybatis打印出sql语句。内含log4j-1.2.16.jar 和 配置好的log4j.properties文件
MyBatis动态拼接SQL
在实际开发过程中,我们往往需要编写复杂的SQL语句,拼接稍有不注意就会导致错误,Mybatis给开发者提供了动态SQL,大大降低了拼接SQL导致的错误。 动态标签 if标签 if标签通常用那个胡where语句,update语句,insert...
1.匿名内部类风格 2.Builder/Fluent 风格 3.动态条件(参数需要使用 final 修饰,以便返回值中的匿名内部类使用)
该工具可以将mybatis输出的sql日志提取出来,并将其格式化为可以直接执行的sql语句,节约开发人员时间
本篇文章主要介绍了在mybatis执行SQL语句之前进行拦击处理实例,具有一定的参考价值,感兴趣的小伙伴们可以参考一下。
适用场景:生产环境从sql日志获取可执行sql语句 使用方法:从日志中获取完整的sql片段(可以前后多复制一部分,确保准确性),打开html文件,粘贴到输入框中点击解析sql,获得可执行的sql
上篇文章说过,mybatis在执行sql语句的时候,通过id获取configuration中mappedStatements的 MappedStatement对象,每个MappedStatement对象对应着增删改查语句,也就是我们配置文件中增删改查标签配置或是注解@...