MyBitis(iBitis)系列随笔之五:多表(一对多关联查询)
来源:互联网 发布:电棍在淘宝怎么搜 编辑:程序博客网 时间:2024/05/16 12:54
MyBitis(iBitis)系列随笔之一:MyBitis入门实例
MyBitis(iBitis)系列随笔之二:类型别名(typeAliases)与表-对象映射(ORM)
MyBitis(iBitis)系列随笔之三:简单实现CRUD
MyBitis(iBitis)系列随笔之四:多表(多对一查询操作)
MyBitis(iBitis)系列随笔之五:多表(一对多关联查询)
MyBitis(iBitis)系列随笔之六:mybitis与spring集成
这篇博文介绍的是多表中的一对多表关联查询
还是按照上一篇的步骤,先做一些准备工作;创建两张表:一张是用户,一张是用户所对应的移动手机,一户用户可以有部移动手机。
这是用户t_user表
这是移动电话t_mobile表
在Java实体对象对中,一对多可以根据List和Set来实现,两者在mybitis中都是通过collection标签来配合使用,稍后会做详细配置介绍
创建表对应的JavaBean对象
Mobile Bean
public class Mobile {private int id;private String telnumber;public int getId() {return id;}public void setId(int id) {this.id = id;}public String getTelnumber() {return telnumber;}public void setTelnumber(String telnumber) {this.telnumber = telnumber;}}
User Bean
package com.jefry;import java.util.List;public class User {private int id;private String userName;private String password; private List<Mobile> mobiles; //这里也可以是Set集合public List<Mobile> getMobiles() {return mobiles;}public void setMobiles(List<Mobile> mobiles) {this.mobiles = mobiles;}public String getUserName() {return userName;}public void setUserName(String userName) {this.userName = userName;}public String getPassword() {return password;}public void setPassword(String password) {this.password = password;}public int getId() {return id;}public void setId(int id) {this.id = id;}}
在上一篇的基础上改写映射文件:
<?xml version="1.0" encoding="UTF-8" ?><!DOCTYPE mapperPUBLIC "-//mybatis.org//DTD Mapper 3.0//EN""http://mybatis.org/dtd/mybatis-3-mapper.dtd"><mapper namespace="user"> <resultMap id="userResultMap" type="User"> <id property="id" column="id" javaType="int" jdbcType="INTEGER" /> <result property="userName" column="name" javaType="string" jdbcType="VARCHAR"/> <result property="password" column="pass" javaType="string" jdbcType="VARCHAR"/> <collection property="mobiles" column="userid" ofType="Mobile"> <id property="id" column="id" javaType="int" jdbcType="INTEGER"/> <result property="telnumber" column="telnumber" javaType="string" jdbcType="VARCHAR"/> </collection> </resultMap><!--多表查询操作--><select id="selectUser" parameterType="int" resultMap="userResultMap" ><!--分别为mobile的主键id与user的主键id赋值别名,避免因为两个表字段名称相同而注入到对应对象名称冲突--> select m.id m_id,m.telnumber,u.id u_id,u.name,u.pass from t_mobile m,t_user u where m.userid = u.id and u.id = #{id} </select></mapper>
最后,通过测试OK
public class Test {static String resource = "mybatis-config.xml";public static void main(String[] args) throws IOException {InputStream inputStream = Resources.getResourceAsStream(resource);SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);SqlSession session = sqlSessionFactory.openSession();try {User user = session.selectOne("user.selectUser", 1);List<Mobile> mobiles = user.getMobiles();for(Mobile mobile : mobiles) {System.out.println("user:" + user.getUserName() + ",tel:" + mobile.getTelnumber());}} finally {session.close();}}}
源码下载:http://download.csdn.net/detail/jefry_xdz/5229451
- MyBitis(iBitis)系列随笔之五:多表(一对多关联查询)
- MyBitis(iBitis)系列随笔之五:多表(一对多关联查询)
- MyBitis(iBitis)系列随笔之四:多表(多对一查询操作)
- MyBitis(iBitis)系列随笔之四:多表(多对一查询操作)
- MyBitis(iBitis)系列随笔之六:mybitis与spring集成
- MyBitis(iBitis)系列随笔之六:mybitis与spring集成
- MyBitis(iBitis)系列随笔之三:简单实现CRUD
- MyBitis(iBitis)系列随笔之三:简单实现CRUD
- MyBitis(iBitis)系列随笔之一:MyBitis入门实例
- MyBitis(iBitis)系列随笔之一:MyBitis入门实例
- MyBitis(iBitis)系列随笔之二:类型别名(typeAliases)与表-对象映射(ORM)
- MyBitis(iBitis)系列随笔之二:类型别名(typeAliases)与表-对象映射(ORM)
- orm-mybatis开发系列之二:一对多关联查询
- MyBatis一对多关联查询总结(五)
- mybatis系列八:一对多关联查询
- mybatis之入门到开发(五)之 关联查询 一对一 和一对多
- 一对多关联查询
- J2EE系列之Hibernate4学习笔记(五)--关联关系一对多映射
- JS只能输入数字,数字和字母等的正则表达式
- Android学习之SQLite
- SQL Server一些有用的语句
- Windons XP中IIS5.1与SiteWeaver6.8挂接SQL+登录后台详细图文教程
- 自己动手制作最新版struts2.3.8的chm格式的api帮助文档
- MyBitis(iBitis)系列随笔之五:多表(一对多关联查询)
- solaris event
- CentOS 安装中文输入法
- 用C#做一个与SQL server数据库连接的登录界面
- hdu2036
- mysql 权限管理详解
- 用HTML5、Css3和Javascript的特殊特性来开发Web Mobile
- Android4.1 关于Rotation相关的Configuration整体分析3
- C语言第四堂课后作业