mybaits 学习笔记(一对多)三

本文介绍使用MyBatis实现多对一关系的数据映射方法,包括实体类设计、XML配置文件及DAO层调用的具体实现过程。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1、实体层设计

  Book.java  —— 多

    public class Book{

      private String id;

      private String bookName;

      private String userId;

      private User user; 

      ...................................//Getter AND Setter

    }

  

  User.java——一

    public Class User{

      private String id;

      private String name;

           private List<Book> bookList;

      ................................//Getter AND Setter

    }

 

2、XML文件配置

  User.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="User">

<resultMap type="bean.User" id="User">
<id column="u_id" jdbcType="INTEGER" property="id"/>
<result column="name" jdbcType="VARCHAR" property="name"/>
<collection property="bookList" resultMap="Book.BookResult"></collection>
</resultMap>

<select id="queryUserList" parameterType="bean.User" resultMap="User">
select u.id u_id, u.name,b.id,b.book_name,b.user_id from user u left join book b on
u.id = b.user_id
<where>
<if test="name != null and !&quot;&quot;.equals(name.trim())">
and a.name=#{name}
</if>
</where>
</select>

</mapper>

 

Book.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="Book">

<resultMap type="bean.Book" id="BookResult">
<id column="id" jdbcType="INTEGER" property="id"/>
<result column="book_name" jdbcType="VARCHAR" property="bookName"/>
<result column="user_id" jdbcType="VARCHAR" property="userId"/>

<association property="user" resultMap="User"></association>
</resultMap>

</mapper>

 

3、DAO层调用

    根据用户名查询数据

    User user = new User();

    user.setName("....");

    userList = sqlSession.selectList("User.queryUserList",user);

    List<Book> bookList = userList.get(0).getBookList(); //查询到的用户所有的书籍

     

    

  

  

转载于:https://www.cnblogs.com/wwwx/p/8036537.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值