多表查询用resultType还是resultMap&Invalid bound statement (not found)解决
Posted liu++
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了多表查询用resultType还是resultMap&Invalid bound statement (not found)解决相关的知识,希望对你有一定的参考价值。
多表查询用resultType还是resultMap&Invalid bound statement (not found)解决
多表查询用resultType还是resultMap
如果在对应的entity里面又有自定义的类,必须用resultMap,resultMap绝对的强大,可以体现一对一( association )、一对多( collection )的关系。
比如
public class Student{
private String id;
private ClassRoom classroom;
}
学生类里面还有一个教室类,这是resultType处理不了的,必须用resultMap,但是如果是以下这种:
@Data
public class MenuANDEntityDTO implements Serializable {
private Integer id;
private String menu_name;
private String menu_icon;
private Integer parent_id;
private String path;
private Integer status;
private Integer sort;
private Integer eid;
private String entity_name;
private String entity_property;
}
全都是String这样普通的类,用resultType就够了,即使是这里面的属性不是在一张表里面的(但是在一个查询视图里面)。
还有使用resultMap的情况就是数据库字段与java实体类里面属性名不一样。需要配置对应一下。
<resultMap id="" type="">
<result property="menuName" column="menu_name"/>
</resultMap>
property是javabean里面的属性,column是数据库里面的字段名。
Invalid bound statement (not found)
mybatis常见错误,可以用配置错误来概括,常见原因有:
-
方法名在interface里面没有(或者写错了)
-
xml里面mapper的namespace写错了
-
xml里面result写的不对
-
用的springboot的话
@SpringBootApplication @EnableTransactionManagement @MapperScan(basePackages = {"edu.hebeu.fast_security_admin.mapper","edu.hebeu.fast_security_admin.dao"}) public class FastAdminApplication { public static void main(String[] args) { SpringApplication.run(FastAdminApplication.class,args); } }
@MapperScan要写对
-
springboot配置文件要写对
mybatis: mapper-locations: - classpath: edu/hebeu/fast_security_admin/dao/*.xml - classpath*: edu/hebeu/fast_security_admin/mapper/*.xml
我今天碰到的问题:
文件夹要放对,编译出来应该是Dao.class和.xml在一个文件里面。
之前是这样的:
这样不行,反正我是不行,有的人可以,很玄学。
以上是关于多表查询用resultType还是resultMap&Invalid bound statement (not found)解决的主要内容,如果未能解决你的问题,请参考以下文章
Mabitis 多表查询resultType=“java.util.hashMap”
MyBatis resultType 与 resultMap多表查询(association,collection)动态SQL的使用(iftrimwheresetforeach)