多表查询用resultType还是resultMap&Invalid bound statement (not found)解决
Posted 明天会更好new
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)