mybaits中查询中对象中存在对象(可能是单一对象,可能是集合)
来源:互联网 发布:淘宝店铺名字会重名吗 编辑:程序博客网 时间:2024/06/01 08:49
User和Department数据为多对一
实体对象:
User
属性:
id Integer,name String,Department department
Department
属性
id Integer,name String,sn String
mapper.xml中配置问题件
<?xml version="1.0" encoding="UTF-8" ?><!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN""http://mybatis.org/dtd/mybatis-3-mapper.dtd"><mapper namespace="com.tabchanj.mybatis.domain.UserMapper"> <resultMap type="com.tabchanj.mybatis.domain.User" id="UserMap"> <!-- User的基本属性 --> <id property="id" column="id"/> <result property="name" column="name"/> <!-- property:表示本类中关联的对象属性 并将关联对象的列名的别名与关联对象的属性做对应 --> <association property="dept" javaType="Department"> <id column="dept_id" property="id" /> <result column="dept_name" property="name" /> <result column="dept_sn" property="sn" /> </association> </resultMap> <select id="get" parameterType="Long" resultMap="UserMap"> <!-- 此时先将department的数据一并查询出来 --> select u.*,d.name dept_name,d.sn dept_sn from t_user u LEFT JOIN t_department d on u.dept_id=d.id where u.id = #{cc} </select> <select id="list" resultMap="UserMap"> select u.*,d.name dept_name,d.sn dept_sn from t_user u LEFT JOIN t_department d on u.dept_id=d.id </select></mapper>
-----------Department的mapper映射配置文件----------<?xml version="1.0" encoding="UTF-8" ?><!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN""http://mybatis.org/dtd/mybatis-3-mapper.dtd"><mapper namespace="com.tabchanj.mybatis.domain.DepartmentMapper"> <resultMap type="Department" id="DepartmentMap"/> <select id="get" parameterType="Long" resultMap="DepartmentMap"> select * from t_department where id = #{id} </select> <select id="list" resultMap="DepartmentMap"> select * from t_department </select></mapper>
改进的User的Mapper.xml配置文件
<?xml version="1.0" encoding="UTF-8" ?><!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN""http://mybatis.org/dtd/mybatis-3-mapper.dtd"><mapper namespace="com.tabchanj.mybatis.domain.UserMapper"> <resultMap type="com.tabchanj.mybatis.domain.User" id="UserMap"> <!-- User的基本属性 --> <id property="id" column="id" /> <result property="name" column="name" /> <!-- property:表示本类中关联的对象属性 columnPrefix:表示关联对象的列名前都有 dept_ resultMap:指明返回的类型时department类型,之一resultMap路径department的mapper映射配置文件中的resultMap的路径 --> <association property="dept" javaType="Department" columnPrefix="dept_" resultMap="com.tabchanj.mybatis.domain.DepartmentMapper.DepartmentMap"> <!-- <id column="dept_id" property="id" /> --> <!-- <result column="dept_name" property="name" /> --> <!-- <result column="dept_sn" property="sn" /> --> </association> </resultMap> <select id="get" parameterType="Long" resultMap="UserMap"> <!-- 此时先将department的数据一并查询出来 --> select u.*,d.name dept_name,d.sn dept_sn from t_user u LEFT JOIN t_department d on u.dept_id=d.id where u.id = #{cc} </select> <select id="list" resultMap="UserMap"> select u.*,d.name dept_name,d.sn dept_sn from t_user u LEFT JOIN t_department d on u.dept_id=d.id </select></mapper>
Department对User是一对多
-----------------department的mapper映射配置文件-----------------------<?xml version="1.0" encoding="UTF-8" ?><!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN""http://mybatis.org/dtd/mybatis-3-mapper.dtd"><mapper namespace="com.tabchanj.mybatis.domain.DepartmentMapper"> <resultMap type="Department" id="DepartmentMap"> <id column="id" property="id" /> <result column="name" property="name" /> <result column="sn" property="sn" /> <!-- property:指明本类users属性 ofType:指明users集合中装的时User类型的数据 select:该查询语句还是使用的是user的mapper映射配置文件中的查询语句,从路径就可以看出 column:指明该查询语句中的参数时本类中的id列的值 --> <collection property="users" ofType="User" select="com.tabchanj.mybatis.domain.UserMapper.getByDeptId" column="id"> </collection> </resultMap> <select id="get" parameterType="Long" resultMap="DepartmentMap"> select * from t_department where id = #{id} </select> <select id="list" resultMap="DepartmentMap"> select * from t_department </select></mapper>
-------User的mapper映射配置文件(只保留了id="getByDeptId"的sql查询语句)--------------------
<?xml version="1.0" encoding="UTF-8" ?><!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN""http://mybatis.org/dtd/mybatis-3-mapper.dtd"><mapper namespace="com.tabchanj.mybatis.domain.UserMapper"> <resultMap type="com.tabchanj.mybatis.domain.User" id="UserMap"> <!-- User的基本属性 --> <id property="id" column="id" /> <result property="name" column="name" /> </resultMap><!-- 该语句在department的mapper映射配置文件中被引用--> <select id="getByDeptId" parameterType="Long" resultMap="UserMap"> select * from t_user where dept_id=#{id} </select></mapper>
0 0
- mybaits中查询中对象中存在对象(可能是单一对象,可能是集合)
- 集合对象中是线程安全
- 当request.setAtrrbute("存储对象","对象")存储是对象的时候,并且对象中有方法是集合,可以直接到网页中调用方法么?
- Java中数组是对象
- C++中单一对象构建
- java中Set集合是如何识别相同对象的
- (转)解决:“ScriptManager”不是已知元素。原因可能是网站中存在编译错误
- 添加一个对象到集合中时,集合里面存放的是对象的引用
- 添加一个对象到集合中时,集合里面存放的是对象的引用还是对象本身?
- 添加一个对象到集合中时,集合里面存放的是对象的引用还是对象本身?
- 添加一个对象到集合中时,集合里面存放的是对象的引用还是对象本身?
- 将对象添加到List集合中添加的是对象的引用
- 查询返回的是对象集合
- 在java的集合中是怎么判断两个对象是否相等的?(重要!)
- 解决:“ScriptManager”不是已知元素。原因可能是网站中存在编译错误。
- ***不是已知元素 原因可能是网站中存在编译错误
- 解决:“ScriptManager”不是已知元素。原因可能是网站中存在编译错误。
- 另类解决:“ScriptManager”不是已知元素。原因可能是网站中存在编译错误。
- 前端路由
- 抽象类和接口(转)
- Linux yum 保留安装包
- Unity A*寻路详解
- Nginx socket.io 反向代理配置
- mybaits中查询中对象中存在对象(可能是单一对象,可能是集合)
- 快速幂详解——2017中国大学生程序设计竞赛
- 代码重构笔记
- 【Oracle sql基础】trunc()函数的用法
- 分针网—IT教育: 关于Node.js的__dirname,__filename,process.cwd(),./文件路径的一些坑
- QT之ComboBox角色使用QAbstractListModel
- VS2013无法加载解决方案中的项目
- js:显示倒计时之后跳转另外的页面
- FileItem类的常用方法: