MyBatis教程之七注解式多表关系代码详解
来源:互联网 发布:北航研究生院软件学院 编辑:程序博客网 时间:2024/06/09 17:24
在之前的一篇文章中我们使用了xml配置方式实现了多表关系,那么本篇就来说说如何使用注解来实现多表关系
三个表:
购物车
用户表
订单表
关系:
用户与购物车一对一:使用@One或直接用@Result标记
用户和订单一对多:使用@Many或者使用@ResultMap
建表语句:
create table tb_cart(id int auto_increment primary key,money double,count int);create table tb_user(id int auto_increment primary key,usename varchar(16),password varchar(32),cid int, foreign key(cid) references tb_cart(id));create table tb_order(id int auto_increment primary key,money double,rname varchar(10),rphone varchar(15),uid int,foreign key(uid) references tb_user(id));
直接看接口:
public interface TbUserMapper { @Insert("insert into tb_user(usename,password,cid) values(#{usename},#{password},#{cart.id})") @Options(keyProperty="id") int save(TbUser user); @Select("select * from tb_user") @ResultType(TbUser.class) List<TbUser> queryAll(); //嵌套对象:一对一 //连接查询 @Select("select u.*,c.* from tb_user u left join tb_cart c on u.cid=c.id") @Results({ @Result(id=true,property="id",column="id"), @Result(property="usename" ,column="usename"), @Result(property="password" ,column="password"), @Result(property="cart.id",column="cid"), @Result(property="cart.money",column="money"), @Result(property="cart.count",column="count") }) List<TbUser> queryAllByOne1(); //嵌套查询 @Select("select * from tb_user") @Results({ @Result(id=true,property="id",column="id"), @Result(property="usename" ,column="usename"), @Result(property="password" ,column="password"), @Result(property="cart",column="cid", one=@One(select="org.qf.dao.TbCartMapper.queryById",fetchType=FetchType.EAGER)) }) List<TbUser> queryAllByOne2(); //一对多的实现 //嵌套查询 @Select("select * from tb_user") @Results({ @Result(id=true,property="id",column="id"), @Result(property="usename" ,column="usename"), @Result(property="password" ,column="password"), @Result(property="orders",column="id", many=@Many(fetchType=FetchType.EAGER,select="org.qf.dao.TbOrderMapper.queryByUid")) }) List<TbUser> queryAllByMany1(); //连接查询 @Select("select u.*,o.*,o.id odid from tb_user u left join tb_order o on u.id=o.uid") @ResultMap("org.qf.dao.TbUserMapper.rm1") List<TbUser> queryAllByMany2();}
对应的额@ResultMap对应的标签文件
<?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="cn.code404.dao.TbUserMapper"> <resultMap type="TbUser" id="rm1"> <id property="id" column="id"></id> <result property="usename" column="usename" /> <result property="password" column="password" /> <collection property="orders" ofType="TbOrder"> <id property="id" column="odid"/> <result property="money" column="money"/> <result property="rname" column="rname"/> <result property="rphone" column="rphone"/> </collection> </resultMap></mapper>
阅读全文
0 0
- MyBatis教程之七注解式多表关系代码详解
- MyBatis教程之六注解使用详解
- Mybatis的注解应用之关系映射
- Mybatis的注解应用之关系映射
- Mybatis的注解应用之关系映射
- MyBatis教程之四多表关系的实现
- 七、初学SpringMVC+Mybatis之SpringMVC基于注解的配置
- mybatis注解详解
- mybatis注解详解
- mybatis注解详解
- mybatis注解详解
- mybatis注解详解
- mybatis注解详解
- mybatis注解详解
- mybatis注解详解
- mybatis注解详解
- mybatis注解详解
- mybatis注解详解
- LeetCode 263. Ugly Number
- 注解(Annotation)自定义注解入门
- table的td文字过长时自动换行
- fuser命令详解
- 注解(Annotation)--注解处理器
- MyBatis教程之七注解式多表关系代码详解
- 分治法,动态规划区别
- 枚举(二)实际应用
- Android实现高定制化日历控件
- POJ
- linux下的压缩与解压缩命令(tar)
- linux下停止kibana
- 微赞/微擎中智慧考试模块,试题导入出错的解决办法。
- springMVC 的简单使用,与配置