在阅读本文章时,先说几个mybatis中容易混淆的地方: 1. mybatis中的列不是数据库里的列而是查询里的列,可以是别名(如 select user_name as userName,这时column='userName' property="userName") 2.Mysql中使用自增主键时,useGeneratedKeys 用来获得自增主键填入类型对应的id属性,之后通过get方法得到 3.Map结尾是映射,Type是类型  resultType 和restltMap re…
有时侯,我们用SQL取得的结果需要映射到类似Map<key, Bean>这样的数据结构中或是映射到多个实体类中时,我们就需要使用到resultMap.下面用3个例子说明Mybatis高级结果映射的用法. <环境准备> 请参照上一篇blog<Mybatis Guide> <数据准备> 创建班级--学生表的一对多的数据结构 --创建班级表 CREATE TABLE tempdb..test_class ( class_id int NOT NULL PRIMAR…
高级结果映射 MyBatis的创建基于这样一个思想:数据库并不是您想怎样就怎样的.虽然我们希望所有的数据库遵守第三范式或BCNF(修正的第三范式),但它们不是.如果有一个数据库能够完美映射到所有应用程序,也将是非常棒的,但也没有.结果集映射就是MyBatis为解决这些问题而提供的解决方案.例如,我们如何映射下面这条语句? <!-- Very Complex Statement --> <select id="selectBlogDetails" parameterTy…
最近在读刘增辉老师所著的<MyBatis从入门到精通>一书,很有收获,于是将自己学习的过程以博客形式输出,如有错误,欢迎指正,如帮助到你,不胜荣幸! 本篇博客主要讲解MyBatis中如何使用collection标签实现查询结果一对多映射. 1. 使用collection标签 需求:根据用户id查询用户信息的同时获取用户拥有的角色,一个用户可以拥有1个或多个角色. 一般情况下,不建议直接修改数据库表对应的实体类. 所以这里我们延用之前博客中新建的类SysUserExtend,并添加如下代码,如下…
需求:查询数特定角色下的所有用户列表 首先需要在在User类中引用Role类,因为引用了复杂的数据类型,所以要使用association属性进行映射,其实起主要作用的还是resultMap属性. /** * 根绝用户的角色id,获取该角色下的所有用户的信息 * @param roleid * @return */ public List<User> getUserListByRoleID(@Param("userRole1") Integer roleid); <re…
最近在读刘增辉老师所著的<MyBatis从入门到精通>一书,很有收获,于是将自己学习的过程以博客形式输出,如有错误,欢迎指正,如帮助到你,不胜荣幸! 本篇博客主要讲解MyBatis中实现查询结果一对一映射的3种方式: 使用别名实现自动映射 使用resultMap配置 使用resultMap的association标签配置 1. 使用别名实现自动映射 假设有这样1个需求:根据用户id查询用户信息的同时获取用户拥有的角色,为了举例,我们假设一个用户只能拥有一个角色(实际情况肯定不是这样的). 一般…
使用resultMap实现高级结果映射 resultMap的属性: 1.属性 id:resultMap的唯一标识.type:resulMap的映射结果类型(一般为Java实体类).2.子节点 id:一般对应数据库的主键 id,设置此项可以提升数据库性能.result:映射到JavaBean的某个 “ 简单类型 ” 属性,如基础数据类型,包装类等.子节点 id 和 result 均可以实现最基本的结果集映射,将列映射到简单数据类型的属性..这两者唯一不同的是:在比较对象实例时 id 将作为结果集的…
高级查询之一对多查询 查询条件:根据游戏名称,查询游戏账号信息 我们在之前创建的映射器接口 GameMapper.java 中添加接口方法,如下: /** * 根据游戏名查询游戏账号 * @param name 游戏名 * @return 游戏实体类 */ public GameEntity selectGameByName(String name); 接下来,我分别演示关联查询和子查询方式实现接口方法的映射. 关联查询方式 现在我们暂时先抛开 MyBatis 框架,直接从数据库出发写一写关联查…
-------------------------siwuxie095 MyBatis 高级查询 1.MyBatis 作为一个 ORM 框架,也对 SQL 的高级查询做了支持, MyBatis 高级查询分为如下三种: (1)一对一 (2)一对多 (3)多对多 「MyBatis 高级查询 也被称为 MyBatis 高级结果映射」 2.案例:用户.订单.订单详情.商品的关系 (1)一对一 1)场景:订单和用户的关系 2)描述:相对于订单来说,一个订单只能属于一个用户 PS:实际上,订单和用户的关系是…
在配置 mybatis mapper.xml文件时, 一不小心就会报如下类似的异常: Caused by: org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'sqlSessionFactory' defined in class path resource [testApplicationContext.xml]: Invocation of init method fa…