MyBatis多对多关系映射
来源:互联网 发布:域名有什么作用 编辑:程序博客网 时间:2024/06/06 10:43
1、使用的数据脚本为:
DROP DATABASE IF EXISTS mybatisdb ;CREATE DATABASE mybatisdb CHARACTER SET UTF8 ;USE mybatisdb ;-- 创建数据表CREATE TABLE role ( rid INT AUTO_INCREMENT , title VARCHAR(50) , CONSTRAINT pk_rid PRIMARY KEY(rid)) ;CREATE TABLE groups ( gid INT AUTO_INCREMENT , title VARCHAR(50) , CONSTRAINT pk_gid PRIMARY KEY(gid) ) ;CREATE TABLE role_groups( rid INT , gid INT , CONSTRAINT fk_rid FOREIGN KEY(rid) REFERENCES role(rid) ON DELETE CASCADE , CONSTRAINT fk_gid FOREIGN KEY(gid) REFERENCES groups(gid) ON DELETE CASCADE ) ;INSERT INTO role(title) VALUES ('超级管理员') ;INSERT INTO groups(title) VALUES ('人事管理') ;INSERT INTO groups(title) VALUES ('任务管理') ;INSERT INTO groups(title) VALUES ('商品采购') ;INSERT INTO groups(title) VALUES ('商品检修') ;INSERT INTO groups(title) VALUES ('后勤保障') ;INSERT INTO groups(title) VALUES ('财务管理') ;INSERT INTO role_groups(rid,gid) VALUES (1,1) ;INSERT INTO role_groups(rid,gid) VALUES (1,2) ;
2、准备好对应的vo类
public class Role implements Serializable { private Integer rid ; private String title ; private List<Groups> allGroups ; }public class Groups implements Serializable { private Integer gid ; private String title ; private List<Role> allRoles ; }public class RoleGroupsLink implements Serializable { private Role role ; private Groups groups ; }//省略set和get方法
3、准备MyBatis需要的配置文件;
①创建Type.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="vo.mapping.RoleNS"> <resultMap type="Type" id="TypeMap"> <id property="tid" column="tild"/> <result property="title" column="title"/> </resultMap></mapper>
②创建MemberDetails.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="vo.mapping.GroupsNS"> <resultMap type="Subtype" id="SubtypeMap"> <id property="stid" column="stid"/> <result property="title" column="title"/> </resultMap></mapper>
③定义操作别名和映射路径
<typeAliases> <typeAlias type="cn.mldn.vo.Role" alias="Role"/> <typeAlias type="cn.mldn.vo.Groups" alias="Groups"/> <typeAlias type="cn.mldn.vo.RoleGroupsLink" alias="RoleGroupsLink"/></typeAliases><mapper namespace="vo/mapping/Role"/><mapper resource="vo/mapping/Groups.xml" />
4、在Mybatis里面针对于这些数据的级联操作查询控制,一定要通过resultMap完成。
· 在Role.xml文件里面定义resultMap:
<resultMap type="Role" id="RoleMap"> <id property="rid" column="rid"/> <result property="title" column="title"/> <collection property="allGroups" javaType="java.util.List" ofType="Groups" select="vo.mapping.GroupsNS.findAllByRole" column="rid"/></resultMap> <select id="findById" parameterType="Integer" resultMap="RoleMap"> SELECT rid,title FROM role WHERE rid=#{rid} </select>
在Groups.xml文件里面定义resultMap:
<resultMap type="Groups" id="GroupsMap"> <id property="gid" column="gid"/> <result property="title" column="title"/> </resultMap> <select id="findAllByRole" parameterType="integer" resultMap="GroupsMap"> SELECT gid,title FROM groups WHERE gid IN ( SELECT gid FROM role_groups WHERE rid=#{rid}) </select>
那么此时就实现了多对多的配置关系。
0 0
- Mybatis映射关系-多对一映射
- mybatis 多对多映射关系
- MyBatis多对多关系映射
- mybatis多对多关系映射
- Mybatis 多对多关系映射
- MyBatis 多对多关系映射
- MyBatis对象关系映射--- 多对一
- mybatis映射关系——多对多映射
- mybatis关系映射之一对多和多对一
- mybatis关系映射之一对多和多对一
- mybatis关系映射之一对多和多对一
- mybatis关系映射之一对多和多对一
- mybatis关系映射之一对多和多对一
- mybatis关系映射之一对多和多对一
- mybatis关系映射之一对多和多对一
- mybatis关系映射之一对多和多对一
- mybatis关系映射之一对多和多对一
- mybatis关系映射之一对多和多对一
- caffe中solver.prototx 中的参数
- ListDialog
- opencv中角点排序
- 山东省第一届ACM省赛 problem c Hello World!
- GPLT-L2-015. 互评成绩
- MyBatis多对多关系映射
- css3 新增加的属性
- Myeclipse10.7 安装GIT插件
- Partition on HDD when installing ubuntu
- 欢迎使用CSDN-markdown编辑器
- 自定义View(二)--Paint-Paint的setMaskFilter属性
- Linux命令之"du"
- OpenCV Tutorial: 影像平滑(medianBlur、bilateralFilter)
- Error running app: Instant Run requires 'Tools | Android | Enable ADB integration' to be enabled.