mybatis一对多的mapper写法

本文详细介绍了在MyBatis中如何实现一对多的映射关系,包括XML配置、Mapper接口方法定义以及在Java代码中的使用,旨在帮助读者深入理解MyBatis的一对多数据处理。

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

package com.stu.manage.demo.entity;

import java.util.ArrayList;
import java.util.Date;
import java.util.List;

import javax.validation.constraints.NotNull;

import org.springframework.security.core.authority.SimpleGrantedAuthority;

import com.baomidou.mybatisplus.annotation.FieldFill;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;

import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;

@Data
@Builder
@TableName(value = "tb_user", resultMap = "BaseResultMap")
@AllArgsConstructor
@NoArgsConstructor
public class TbUser {

    /**
     * 配置主键生成策略
     */
    @TableId(type = IdType.AUTO)
    private Long id;

    @TableField("username")
    @NotNull
    private String userName;

    @TableField("password")
    @NotNull
    private String passWord;

    @NotNull
    private String phone;

    private String email;

    @TableField(value = "created", fill = FieldFill.INSERT)
    @NotNull
    private Date createTime;

    @TableField(value = "updated", fill = FieldFill.INSERT_UPDATE)
    @NotNull
    private Date modifyTime;

    /**
     * 用户表和用户权限中间表是一对多的关系
     */
    private List<TbUserRole> userRoles;

    public List<SimpleGrantedAuthority> getRoles() {
        return null;
    }
}

package com.stu.manage.demo.entity;

import java.util.Date;

import javax.validation.constraints.NotNull;

import com.baomidou.mybatisplus.annotation.FieldFill;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;

import lombok.Builder;
import lombok.Data;

@Data
@Builder
public class TbUserRole {

    /**
     * 配置主键生成策略
     */
    @TableId(type = IdType.AUTO)
    private Long id;

    @TableField("user_id")
    @NotNull
    private Long userId;

    @TableField("role_id")
    @NotNull
    private Long roleId;
}

package com.stu.manage.demo.mapper;

import org.springframework.stereotype.Repository;

import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.stu.manage.demo.entity.TbRole;
import com.stu.manage.demo.entity.TbUser;

@Repository
public interface TbUserMapper extends BaseMapper<TbUser> {

    Integer findCount();
}

<?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.stu.manage.demo.mapper.TbUserMapper">
  <resultMap id="BaseResultMap" type="com.stu.manage.demo.entity.TbUser">
    <id column="id" jdbcType="BIGINT" property="id" />
    <result column="username" jdbcType="VARCHAR" property="userName" />
    <result column="password" jdbcType="VARCHAR" property="passWord" />
    <result column="phone" jdbcType="VARCHAR" property="phone" />
    <result column="email" jdbcType="VARCHAR" property="email" />
    <result column="created" jdbcType="TIMESTAMP" property="createTime" />
    <result column="updated" jdbcType="TIMESTAMP" property="modifyTime" />
    <collection
        property="userRoles"
        column="id"
        ofType="com.stu.manage.demo.entity.TbUserRole"
        select="selectUserRole"
        autoMapping="true"/>
  </resultMap>

  <select id="selectUserRole" resultType="com.stu.manage.demo.entity.TbUserRole">
        select id, user_id, role_id from tb_user_role where user_id = #{id}
  </select>
  <sql id="Base_Column_List">
    <!--@mbg.generated generated on Thu Apr 04 18:12:35 CST 2019.-->
    id, username, `password`, phone, email, created, updated
  </sql>

  <select id="findCount" resultType="integer">
    select count(1) from tb_user
  </select>
</mapper>

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值