1、if条件中最后一个不应该有逗号
360截图16671021383781.png
2、if条件中可以有where和and,if放在<where>中能不能有and?
3、多表查询的时候,查询条件里应该指定具体哪张表,否则会报where clause is ambiguous错误,
多半是因为多表查询的时候几个表中同时出现了某个相同的列名,
而在查询条件WHERE后面又没有指定是那个表,
而引起的又或者是查询结果里面有两个相同的列名,而没有指定是哪个表,使用的时候可以这样,查询前面加表名可避免出现错误
ambiguous 1. 含糊不清的 2. 引起歧义的
下图的例子中改为即可
AND u.ENTERPRISE_ID = #{enterpriseId,jdbcType=VARCHAR}
360截图16251122435291.png
360截图1649121884127134.png
4、Invalid bound statement (not found)错误,一般是Mapepr.xml文件中文nameapce没有和mapper接口发生映射,导致mybatis绑定失败
可能有如下几种:
① mapper的namespace写的不对!!!注意系修改。
<mapper namespace="me.tspace.pm.dao.UserDao">
② UserDao的方法在UserDao.xml中没有,然后执行UserDao的方法会报此
③ UserDao的方法返回值是List<User>,而select元素没有正确配置ResultMap,或者只配置ResultType!
④ 如果你确认没有以上问题,请任意修改下对应的xml文件,比如删除一个空行,保存.问题解决…
5、动态sql查询,整体查询还是分步查询呢?
整体查询就是前段传过来参数,后台拼接成一条sql语句传入mapper的方法中,mapper.xml中接收这个sql。图层后台layerserver中就是传入的整体,注意是使用#{}还是 {}的区别详解](http://www.jb51.net/article/90755.htm)
分步查询可能会比较麻烦,需要在mapper.xml进行拼接易导致错误
网友评论