美文网首页
使用MyBatis遇到的问题记录

使用MyBatis遇到的问题记录

作者: 双流小二郎 | 来源:发表于2018-09-26 15:17 被阅读0次

前段时间一个项目用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

相关文章

网友评论

      本文标题:使用MyBatis遇到的问题记录

      本文链接:https://www.haomeiwen.com/subject/ezodoftx.html