MyBatis注解方式与映射文件方式配合实现一对一,一对多,多对多(三)

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;
import 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>

测试项目目录如下:

这里写图片描述

感谢您的阅读,欢迎参观我的个人网站:知行乐集【www.zhixinglj.cn】

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值