MyBatis注解方式与映射文件方式配合实现一对一,一对多,多对多(三)
2017-11-06 19:21
519 查看
MyBatis注解方式与映射文件方式配合实现多对多
MyBatis注解方式实现多对多,配置文件与一对多一样,这里主要展示的是DAO接口的代码。这是单纯用注解实现多对多,代码如下:
package com.dao; import java.util.List; import org.apache.ibatis.annotations.Insert; import org.apache.ibatis.annotations.Many; import org.apache.ibatis.annotations.Result; i 4000 mport org.apache.ibatis.annotations.ResultMap; import org.apache.ibatis.annotations.Results; import org.apache.ibatis.annotations.Select; import com.entity4.Group; import com.entity4.User; public interface GroupDao { @Select("select * from groups") @Results( { @Result(column="groupId",property="groupId",id=true), @Result(column="groupName",property="groupName"), @Result(column="groupId",property="userSet",many = @Many(select="getUser")) } ) public List<Group> getGroup(); @Select("select * from user2 where userId in (select userId from group_user where groupId = #{groupId} )") @Results( { @Result(column="userId",property="userId",id=true), @Result(column="userName",property="userName"), } ) public List<User> getUser(); }
以下是注解配合xml映射文件的方式实现多对多,这种用法 配置文件 configuration.xml 一定要配置resource=”com/dao/groupMapper.xml” /> , mapper.xml文件一定要配置namespace=”com.dao.GroupDao”>
DAO接口GroupDao.java代码如下:
/** * 这种用法 配置文件 mapper.xml 一定要 * <mapper resource="com/dao/groupMapper.xml" /> > <mapper namespace="com.dao.GroupDao"> * @return */ @Select("select * from groups") @ResultMap("GroupMap") public List<Group> getGroup2(); @Select("select * from user2 where userId in (select userId from group_user where groupId = #{groupId} )") @ResultMap("User2Map") public List<User> getUser2();
一对一,一对多也是可以用注解和xml映射文件相互配合使用的,也是类似。
groupMapper.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.dao.GroupDao"> <resultMap type="Group" id="GroupMap"> <id column="groupId" property="groupId"/> <result column="groupName" property="groupName"/> <collection property="userSet" column="groupId" select="getUser2"></collection> </resultMap> <resultMap type="User2" id="User2Map"> <id column="userId" property="userId"/> <result column="userName" property="userName"/> </resultMap> </mapper>
测试项目目录如下:
相关文章推荐
- MyBatis注解方式与映射文件方式配合实现一对一,一对多,多对多(一)
- MyBatis注解方式与映射文件方式配合实现一对一,一对多,多对多(二)
- MyBatis中映射文件和注解的关系查询(一对一,一对多,多对多)
- 使用注解方式实现mybatis一对多
- mybatis用注解实现 一对一,一对多,多对多哟
- springboot整合mybatis(映射文件方式和注解方式)
- MyBatis模糊查询(注解方式+映射文件方式)
- Hibernate 基于注解的方式 实现的关系映射案例(一对一关系,一对多关系,多对多关系)
- mybatis 一对一的映射(两种方式)
- 使用proc文件映射的方式实现用户态跟内核态的数据交互
- hibernate注解方式实现一对多映射
- Hibernate映射文件配置(hbm.xml和注解方式)
- mybatis入门基础(六)----高级映射(一对一,一对多,多对多)
- springMVC 注解方式实现全程+文件上传
- Hibernate 一对一双向映射 注解方式
- mybatis入门基础(六)----高级映射(一对一,一对多,多对多)
- springMVC 注解方式实现全程+文件上传
- springMVC 注解方式实现全程+文件上传
- 两种方式(系统调用、映射)实现文件的创建、移动、合并
- springMVC 注解方式实现文件上传