mybatis中联合查询

创建两个类一个employee,一个department

package com.cn.orm;

public class Department {
    private Integer deptId;

    private String deptName;

    public Integer getDeptId() {
        return deptId;
    }

    public void setDeptId(Integer deptId) {
        this.deptId = deptId;
    }

    public String getDeptName() {
        return deptName;
    }

    public void setDeptName(String deptName) {
        this.deptName = deptName == null ? null : deptName.trim();
    }

    @Override
    public String toString() {
        return "Department{" +
                "deptId=" + deptId +
                ", deptName=‘" + deptName + ‘\‘‘ +
                ‘}‘;
    }
}

package com.cn.orm;

public class Employee {
    private Integer id;

    private String name;

    private Integer age;

    private String sex;

    private Department department;
    public Integer getId() {
        return id;
    }

    public void setId(Integer id) {
        this.id = id;
    }

    public Integer getAge() {
        return age;
    }

    public void setAge(Integer age) {
        this.age = age;
    }

    public String getSex() {
        return sex;
    }

    public void setSex(String sex) {
        this.sex = sex == null ? null : sex.trim();
    }

    public Department getDepartment() {
        return department;
    }

    public void setDepartment(Department department) {
        this.department = department;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    @Override
    public String toString() {
        return "Employee{" +
                "id=" + id +
                ", name=‘" + name + ‘\‘‘ +
                ", age=" + age +
                ", sex=‘" + sex + ‘\‘‘ +
                ", department=" + department +
                ‘}‘;
    }
}

在employeeMapper.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.cn.dao.EmployeeMapper">
  <resultMap id="BaseResultMap" type="com.cn.orm.Employee">
    <result column="id" jdbcType="INTEGER" property="id" />
    <result column="name" jdbcType="VARCHAR" property="name" />
    <result column="age" jdbcType="INTEGER" property="age" />
    <result column="sex" jdbcType="CHAR" property="sex" />
    <association property="department" javaType="com.cn.orm.Department">
      <result column="dept_id" javaType="INTEGER" property="deptId"></result>
      <result column="dept_name" jdbcType="VARCHAR" property="deptName" />
    </association>
  </resultMap>

  <select id="fetchEmployeesList" resultMap="BaseResultMap">
      select e.id,e.name,e.age,e.sex,t.id as dept_id,t.name as dept_name from employee e left join department t on e.dept_id = t.id
  </select>

</mapper>

说明两个类中具有同名属性id,name。若不指定别名,则会将属性名相同的赋值成相同的内容,无法达到联合查询的效果。

column为sql查询之后列的名称,property为java中属性字段名称

原文地址:https://www.cnblogs.com/noob-mengling/p/9338991.html

时间: 2024-10-13 12:55:47

mybatis中联合查询的相关文章

Mybatis中模糊查询使用中文无法查询

解决Mybatis中模糊查询使用中文关键字无法查询 解决方法: 在mybatis中,采用模糊查询时,如果使用中文查询则无法查询出结果:采用英文则可以 解决方法:在sqlconfig.xml中:url的value值的后面加上?useUnicode=true&characterEncoding=UTF-8 原文地址:https://www.cnblogs.com/bestjdg/p/12043867.html

mybatis中的查询语句in用法的相关问题

在开发的时候,mybatisl中使用in的时候会遇到一些问题,如果我们传的参数是String类型,以“,”来进行隔开的,例如:参数是0,1,2字符串,mybatis中的语句如下 <select id="findByName" parameterType="string" resultType="com.domain.Factory"> SELECT * FROM FACTORY WHERE ID IN (#{ids}) </se

mybatis中分页查询

1 如果在查询方法中有多个参数,可以使用map对象将所有数据都存储进去.比如分页查询,需要用到两个参数,可以将这两个参数包装到map中. 例子:分页查询 dao层方法 public List<Student> getStudentPage(int pstart, int pnumber) throws Exception{ SqlSession sqlSession = MybatisUtil.getSqlSession(); Map<String,Integer> map = n

【mybaits】Mybatis中模糊查询的各种写法

工作中用到,写三种用法吧,第四种为大小写匹配查询 1. sql中字符串拼接 SELECT * FROM tableName WHERE name LIKE CONCAT(CONCAT('%', #{text}), '%'); 2. 使用 ${...} 代替 #{...} SELECT * FROM tableName WHERE name LIKE '%${text}%'; 3. 程序中拼接 Java // String searchText = "%" + text + "

Mybatis中模糊查询的各种写法

1. sql中字符串拼接 SELECT * FROM tableName WHERE name LIKE CONCAT(CONCAT('%', #{text}), '%'); 2. 使用 ${...} 代替 #{...} SELECT * FROM tableName WHERE name LIKE '%${text}%'; 3. 程序中拼接 Java // String searchText = "%" + text + "%"; String searchTex

Sql中联合查询中的”子查询返回的值不止一个“的问题

在子查询中,如果想实现如下的功能: select lib,count(*),select sum(newsNo) from Table1 group by lib from Tabel1 T1,Table2 T2 where T1.newsNo =T2.newsNo group by lib 就会提示“子查询返回的值不止一个.”的错误,意思是子查询不能返回多个结果,只能返回一个结果. 因此可以改用如下的方式: select lib,count(*),select sum(newsNo) from

Mybatis中模糊查询的各种写法(转)

1. sql中字符串拼接 SELECT * FROM tableName WHERE name LIKE CONCAT(CONCAT('%', #{text}), '%'); 2. 使用 ${...} 代替 #{...} SELECT * FROM tableName WHERE name LIKE '%${text}%'; 3. 程序中拼接 Java // String searchText = "%" + text + "%"; String searchTex

SSM-MyBatis-15:Mybatis中关联查询(多表操作)

------------吾亦无他,唯手熟尔,谦卑若愚,好学若饥------------- 先简单提及一下关联查询的分类 1.一对多 1.1单条SQL操作的 1.2多条SQL操作的 2.多对一 2.1单条SQL操作的 2.1多条SQL操作的 3.多对多(类似一对多) 4.自关联(也有点类似一对多) 下面是具体实现,用真实代码带入进去(数据表和实体类和测试方法都给发出来,更多的要关注到xml中的使用) 我先把用到的数据库的脚本发一下,里面有测试数据,我折起来,需要使用的可以自行提取 /* SQLyo

mybatis plus 联合查询

在xml中只需要需要写如下的代码即可实现分页: <select id="selectUserList" parameterType="map" resultType="com.test.mybatisplus.pojo.User"> SELECT <include refid="Base_Column_List" /> FROM user WHERE name LIKE CONCAT("%&q