使用MyBatis遇到的问题记录

前段时间一个项目用MyBatis做DAO,遇到了一些问题记录一下,希望可以帮助遇到同样问题的朋友。

1. org.apache.ibatis.binding.BindingException异常

原本代码没问题,升级MyBatis版本后遇到。原因是在较新版本中,如果参数多于一个的时候,没处理好会报这样的错误。处理方法是添加@Param参数指定参数名称

void insertData(@Param("id")String id, @Param("title")String title);

使用Map和Entity作为参数时没这个问题,建议尽量这样使用。

// 1. entity
// mapper
@InsertProvider(type = SalesOrderSqlProvider.class, method = "replace")
    void save(SalesOrder salesOrder);
// SalesOrderSqlProvider.java
public String replace(SalesOrder salesOrder) {
// 2. map
// mapper
@SelectProvider(type = SalesOrderSqlProvider.class, method = "select")
    List<Map> getList(Map<String, Object> param);
// SalesOrderSqlProvider.java
public String select(Map<String, Object> params) {

2. SpringBoot在控制台打印MyBatis sql语句

团队同事甚至还在代码中直接打印sql,这样既杂乱又无法反应出绑定变量的值。只需要在application.properties文件中添加:

logging.level.com.kian.mapper=debug

其中com.kian.mapper是我mapper的包路径
debug应用的时候就能看到如下的sql日志

2018-09-26 15:26:51.736 DEBUG 16696 --- [nio-9999-exec-4] c.n.c.w.d.m.LoginMapper.markInActive     : ==>  Preparing: update core_user_login set active = false, last_modified_date = current_timestamp where (wx_user_id = ? or email = ?) and active 
2018-09-26 15:26:51.736 DEBUG 16696 --- [nio-9999-exec-4] c.n.c.w.d.m.LoginMapper.markInActive     : ==> Parameters: test(String), test@test.com(String)
2018-09-26 15:26:51.745 DEBUG 16696 --- [nio-9999-exec-4] c.n.c.w.d.m.LoginMapper.markInActive     : <==    Updates: 1
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 1. 简介 1.1 什么是 MyBatis ? MyBatis 是支持定制化 SQL、存储过程以及高级映射的优秀的...
    笨鸟慢飞阅读 5,700评论 0 4
  • 1 Mybatis入门 1.1 单独使用jdbc编程问题总结 1.1.1 jdbc程序 上边使...
    哇哈哈E阅读 3,338评论 0 38
  • io流4天,线程2天,集合框架3天。异常1天,常用的api3天,面相对象6天。基础8天。。网络编程1天,反射1天。
    昨天的风真的很大阅读 232评论 0 0
  • 曾经听过这样一个故事 小时候,男孩上学的路上生长着一颗树,一颗美丽的樱花树。他很喜欢,每次路过时,都会伫立很久,看...
    岚风的叶子阅读 149评论 0 0
  • 尽可能地多麻烦自己,不去麻烦别人。 尽可能地承担喜怒哀乐,不去大吐苦水。才华配不上野心,就静下心努力;无法控制的难...
    艾超831阅读 391评论 0 0