当前位置:   article > 正文

Mybatis常见查询总结,仅限于初级程序员阅读_mybatis 只查询某一列

mybatis 只查询某一列

情况描述:

本人初次接触Mybatis,然后对于其中的一些基础查询做一些简单总结,一次用来记录他的用法,便于以后查漏补缺。

1、Mybatis中查询特定的列:(单列)

如果查询指定列为Long类型,那么在resultType中应该是:java.lang.Long,如果是其他类型的以此类推即可。

Mapper层:

//查询所有用户名
    List<String> queryListName();
  • 1
  • 2

xml层:

  <select id="queryListName" resultType="java.lang.String">
        select name from user2
    </select>
  • 1
  • 2
  • 3

调用:

@Test
    public void getListName(){
        List<String> strings = userMapper.queryListName();
        strings.forEach(System.out::println);
    }
  • 1
  • 2
  • 3
  • 4
  • 5

结果:
在这里插入图片描述
**

补充其实查询单列与查询单值是一个道理。只不过mapper层的方法的返回值是一个具体的数据类型,比如我们只查询查询用户id为4的用户名。

mapper层

String queryName();
  • 1

xml层

  <select id="queryName" resultType="java.lang.String">
        select name from user2 where user_id = 4
    </select>
  • 1
  • 2
  • 3

2、Mybatis中查询特定的列:(多列)

**

对于多列查询,这个时候就建议你,尽量将其封装到实体类中。

Mapper层:

//查询三列
    List<User2> queryListNameAndAge();
  • 1
  • 2

xml配置:

   <select id="queryListNameAndAge" resultType="com.swagger.swaggerdemo1.Pojo.User2">
        select id,name,create_time  from user2
    </select>
  • 1
  • 2
  • 3

测试:

    @Test
    public void queryListNameAndAge(){
        List<User2> lists = userMapper.queryListNameAndAge();

        //升序排列
        List<String> name = lists.stream().sorted(Comparator.comparing(User2::getCreateTime)).map(user -> {
            return user.getName();
        }).collect(Collectors.toList());
        name.forEach(System.out::println);
        lists.forEach(System.out::println);
    }
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11

在这里插入图片描述

**

3、Mybatis中一次查询多个集合(相当于一对多进行查询)

**

在这里 主要运用了两个关键标签:resultMap、collection
在这里插入图片描述
在这里插入图片描述
如果我们对collection的column传入多个参数问题:
在这里插入图片描述
举个例子:
(1)Pojo层:

package com.swagger.swaggerdemo1.Pojo;

import io.swagger.models.auth.In;
import org.omg.PortableInterceptor.INACTIVE;

import java.util.List;

public class ToUser2 {
    public Integer id;
    public String name;
    public List<Integer> maths;

    public Integer getId() {
        return id;
    }

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

    public String getName() {
        return name;
    }

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

    public List<Integer> getMaths() {
        return maths;
    }

    public void setMaths(List<Integer> maths) {
        this.maths = maths;
    }

    @Override
    public String toString() {
        return "ToUser2{" +
                "id=" + id +
                ", name='" + name + '\'' +
                ", maths=" + maths +
                '}';
    }
}

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45
  • 46

(2)Mapper层:

//查询指定集合
    List<ToUser2> queryGrades();

  • 1
  • 2
  • 3

(3)xml层

<resultMap id="BaseDate" type="com.swagger.swaggerdemo1.Pojo.ToUser2">
        <id column="id" property="id"></id>
        <collection property="maths" column="id" ofType="java.lang.Integer" select="queryMaths"></collection>
    </resultMap>

    <select id="queryMaths" resultType="java.lang.Integer">
           SELECT math FROM `grade` where user_id = #{id}
    </select>

    <select id="queryGrades" resultMap="BaseDate">
        select * from user2
    </select>
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12

(4)测试:

@Test
    public void queryCollection(){
        List<ToUser2> toUser2s = userMapper.queryGrades();
        toUser2s.forEach(System.out::println);

    }
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6

在这里插入图片描述
**

4、Mybatis中进行关联查询(相当于一对一进行查询)

**
关联查询的核心的标签则是:association
在这里插入图片描述
在这里插入图片描述
举个例子:
(1)Pojo层:
学生表:

package com.swagger.swaggerdemo1.Pojo;

import java.util.Date;

public class User2 {
    private Integer id;
    private String name;
    private Date createTime;
    private Integer tid;
    private Teacher teacher;

    public Integer getTid() {
        return tid;
    }

    public void setTid(Integer tid) {
        this.tid = tid;
    }

    public Teacher getTeacher() {
        return teacher;
    }

    public void setTeacher(Teacher teacher) {
        this.teacher = teacher;
    }

    public Date getCreateTime() {
        return createTime;
    }

    public void setCreateTime(Date createTime) {
        this.createTime = createTime;
    }

    public Integer getId() {
        return id;
    }

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

    public String getName() {
        return name;
    }

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

    @Override
    public String toString() {
        return "User2{" +
                "id=" + id +
                ", name='" + name + '\'' +
                ", createTime=" + createTime +
                ", tid=" + tid +
                ", teacher=" + teacher +
                '}';
    }
}

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45
  • 46
  • 47
  • 48
  • 49
  • 50
  • 51
  • 52
  • 53
  • 54
  • 55
  • 56
  • 57
  • 58
  • 59
  • 60
  • 61
  • 62
  • 63

老师表:

package com.swagger.swaggerdemo1.Pojo;



public class Teacher {
    private Integer id;
    private String name;
    private Integer age;

    public Integer getId() {
        return id;
    }

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

    public String getName() {
        return name;
    }

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

    public Integer getAge() {
        return age;
    }

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

    @Override
    public String toString() {
        return "Teacher{" +
                "id=" + id +
                ", name='" + name + '\'' +
                ", age=" + age +
                '}';
    }
}

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43

(2)mapper层

//查询(association)
    List<User2> queryUserAndTeacher();
  • 1
  • 2

(3)xml层:

    <resultMap id="UserAndTeacher" type="com.swagger.swaggerdemo1.Pojo.User2">
        <association property="teacher" column="tid" select="queryTeacher"></association>
    </resultMap>

    <select id="queryTeacher" resultType="com.swagger.swaggerdemo1.Pojo.Teacher">
        select * from teacher where id = #{id}
    </select>

    <select id="queryUserAndTeacher" resultMap="UserAndTeacher">
       select * from user2
    </select>

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12

(4)测试层:

   @Test
    public void queryAssociation(){
        List<User2> user2s = userMapper.queryUserAndTeacher();
        user2s.forEach(System.out::println);
    }
  • 1
  • 2
  • 3
  • 4
  • 5

测试结果:
在这里插入图片描述

总结:如果你是一个新手小白,其实只要你掌握这四种查询方式,基本上你已经差不多能成为一个可以进行增删改查的程序员了!当然,仅仅掌握这些是远远不够的,还需要掌握他的高阶用法!!

在这里插入图片描述

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/2023面试高手/article/detail/569372
推荐阅读
相关标签
  

闽ICP备14008679号