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】