MyBatis 实现多对多查询代码模板

多对多=1对多+多对一

一对多

实验准备

  1. 准备实验环境,打开终端进行如下操作。
cd /home/project
wget https://labfile.oss.aliyuncs.com/courses/4780/MyBatisEmpDemo04-01.zip
unzip MyBatisEmpDemo04-01.zip && rm MyBatisEmpDemo04-01.zip

  1. 下载数据库文件,然后启动数据库服务,创建 MyBatisDemo 数据库和表并导入初始数据。
cd /home/project
wget https://labfile.oss.aliyuncs.com/courses/4780/staffsystem.sql
sudo service mysql start
mysql -u root  < /home/project/staffsystem.sql

执行结果如下图所示:

然后我们主要在EmpProRMapper 和test里面书写代码

@ 进入EmpProRMapper.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="org.lanqiao.mapper.EmployeeMapper">
  <select id="id名称" resuleType="返回值类型" parameterType="输入的参数">
       编写sql语句
select * from a 
</select>



<!-- 根据项目编号查询参与该项目的所有员工信息 -->
  <resultMap id="employeeResultMap" type="Employee" autoMapping="true">
  <id property="eNo" column="eNo"/>
  </resultMap>

  <select id="queryAllEmployeeByPNo" parameterType="string" resultMap="employeeResultMap">
  select e.* from employee e,emp_pro_r epr where e.eNo = epr.eNo and epr.pNo=#{pNo}
</select>

  <!-- 根据员工编号查询该员工参与的所有项目信息 -->
  <resultMap id="projectResultMap" type="Project" autoMapping="true">
  <id property="pNo" column="pNo"/>
  </resultMap>

  <select id="queryAllProjectByEno" parameterType="string" resultMap="projectResultMap">
  select p.* from project p,emp_pro_r epr where p.pNo = epr.pNo and epr.eNo=#{eNo}
</select>
</mapper>

@然后·去相应的.java文件编写接口

package 

/**
 * 定一个 EmployeeMapper 接口
 * @author lanqiao
 */
public interface EmployeeMapper {


public resuleType值 id名(入参);
/**
 * 根据项目编号查询参与该项目的所有员工信息
 * @param pNo 项目编号
 * @return 返回该项目下的所有员工信息
 */
public List<Employee> queryAllEmployeeByPno(String pNo);

/**
 * 根据员工编号查询该员工参与的所有项目信息
 * @param eNo 员工编号
 * @return 返回该员工参与的所有项目信息
 */
public List<Project> queryAllProjectByEno(String eNo);
}

@书写实体类,根据数据表

// 员工编号
    private String eNo;
    // 部门编号
    private String dNo;
    // 岗位编号
    private String jNo;
    // 员工姓名
    private String eName;
    // 员工身份证号
    private String cardId;
    // 性别
    private String sex;
    // 手机号
    private String phone;
    // 邮箱
    private String email;

    // 一个员工参与多个项目
    private List<Project> projects; 


。。。。get、set.tostring 构造器;

@最后去test里面书写代码

@Before
    public void before() throws IOException{
        String resource = "mybatis-config.xml";
        //加载 MyBatis 的配置文件
        Reader reader = Resources.getResourceAsReader(resource);
        //创建 SqlSession 的工厂
        sessionFactory = new SqlSessionFactoryBuilder().build(reader);
        //创建能够执行 SQL 映射文件中 SQL 语句的 SqlSession 对象
        session = sessionFactory.openSession();
    }
@Test
public void test() throws IOException{
XXXMapper mapper=session.getMapper(XXXMapper.class);
返回值 xx=mapper.方法名字();
session.close();
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值