美文网首页
使用mybatis多表查询出现的问题

使用mybatis多表查询出现的问题

作者: 墨色尘埃 | 来源:发表于2017-12-07 12:22 被阅读0次

    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中就是传入的整体,注意是使用#{}还是 {} [MyBatis中#{}和 {}的区别详解](http://www.jb51.net/article/90755.htm)
    分步查询可能会比较麻烦,需要在mapper.xml进行拼接易导致错误

    相关文章

      网友评论

          本文标题:使用mybatis多表查询出现的问题

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