mybatis学习笔记(四)
resultType 语句返回值类型的完整类名或别名
- resultType 返回的是一个map集合,key是列名,value是对应的值
使用resultMap实现联表查询
- resultMap 查询的结果集与java Bean 之间建立映射关系
- 多表查询sql语句
SELECT su.*,r.rolename FROM sys_user su,"role" r WHERE su.roleid =r.id AND r.id =1;
- 查询的结果集
- 多表查询sql语句
- 为结果集与实体类建立映射关系,在User实体类中添加需要展示的字段,roleName,roleId
- 使用resultMap建立需要展示的数据,property表示实体类的属性,column表示表的字段
- 测试类
- 控制台输出
注意:在dao层接口中的方法必须与mapper文件中的sql语句相对应。例如下列错误
- junit报错如下
- 控制台输出
15:01:39.643 [main] DEBUG org.apache.ibatis.logging.LogFactory - Logging initialized using 'class org.apache.ibatis.logging.log4j2.Log4j2Impl' adapter.
15:01:39.649 [main] DEBUG org.apache.ibatis.io.VFS - Class not found: org.jboss.vfs.VFS
15:01:39.650 [main] DEBUG org.apache.ibatis.io.JBoss6VFS - JBoss 6 VFS API is not available in this environment.
15:01:39.650 [main] DEBUG org.apache.ibatis.io.VFS - Class not found: org.jboss.vfs.VirtualFile
15:01:39.651 [main] DEBUG org.apache.ibatis.io.VFS - VFS implementation org.apache.ibatis.io.JBoss6VFS is not valid in this environment.
15:01:39.651 [main] DEBUG org.apache.ibatis.io.VFS - Using VFS adapter org.apache.ibatis.io.DefaultVFS
15:01:39.652 [main] DEBUG org.apache.ibatis.io.DefaultVFS - Find JAR URL: file:/D:/program/jee-2020-03/workspace/mybatis-demo/build/classes/cn/bdqn/pojo
15:01:39.652 [main] DEBUG org.apache.ibatis.io.DefaultVFS - Not a JAR: file:/D:/program/jee-2020-03/workspace/mybatis-demo/build/classes/cn/bdqn/pojo
15:01:39.696 [main] DEBUG org.apache.ibatis.io.DefaultVFS - Reader entry: Role.class
15:01:39.698 [main] DEBUG org.apache.ibatis.io.DefaultVFS - Reader entry: User.class
15:01:39.699 [main] DEBUG org.apache.ibatis.io.DefaultVFS - Listing file:/D:/program/jee-2020-03/workspace/mybatis-demo/build/classes/cn/bdqn/pojo
15:01:39.699 [main] DEBUG org.apache.ibatis.io.DefaultVFS - Find JAR URL: file:/D:/program/jee-2020-03/workspace/mybatis-demo/build/classes/cn/bdqn/pojo/Role.class
15:01:39.699 [main] DEBUG org.apache.ibatis.io.DefaultVFS - Not a JAR: file:/D:/program/jee-2020-03/workspace/mybatis-demo/build/classes/cn/bdqn/pojo/Role.class
15:01:39.700 [main] DEBUG org.apache.ibatis.io.DefaultVFS - Reader entry: ����
原因是在RoleMapper接口中写方法,没有在相应的xml文件中写sql语句
- RoleMapper.java
- RoleMapper.xml
- 当数据库的列名与实体类不一样时,需要使用resultMap映射
- 联合查询时,也需要resultMap做关联映射
配置mybatis的log实现为log4j2,在后台打印输出时会打印sql语句
使用association来关联java Bean实现查询
- 当一个实体类是另一个实休类的属性时,如:
- 当一个实体类是另一个实休类的属性时,如:
- 使用resultMap 的子属性association来实现
- 还可以单独写一个resultMap 然后在association中引用,如:
- 测试结果是一样的
- 当实体类中存在集合时
- 使用resultMap 中的collection来关联实现
- 测试类
- 测试结果