MyBatis-Plus_查询进阶01

查询专栏:MP默认查询原则
查询的是数据库列名非实体类属性

一、准备工作

1.1 创建表结构

#创建用户表
CREATE TABLE user (
    id BIGINT(20) PRIMARY KEY NOT NULL COMMENT '主键',
    name VARCHAR(30) DEFAULT NULL COMMENT '姓名',
    age INT(11) DEFAULT NULL COMMENT '年龄',
    email VARCHAR(50) DEFAULT NULL COMMENT '邮箱',
    manager_id BIGINT(20) DEFAULT NULL COMMENT '直属上级id',
    create_time DATETIME DEFAULT NULL COMMENT '创建时间',
    CONSTRAINT manager_fk FOREIGN KEY (manager_id)
    REFERENCES user (id)
)  ENGINE=INNODB CHARSET=UTF8;

1.2 插入数据

#初始化数据:
INSERT INTO user (id, name, age, email, manager_id
	, create_time)
VALUES (1087982257332887553, '大boss', 40, '[email protected]', NULL
		, '2019-01-11 14:20:20'),
	(1088248166370832385, '王天风', 25, '[email protected]', 1087982257332887553
		, '2019-02-05 11:12:22'),
	(1088250446457389058, '李艺伟', 28, '[email protected]', 1088248166370832385
		, '2019-02-14 08:31:16'),
	(1094590409767661570, '张雨琪', 31, '[email protected]', 1088248166370832385
		, '2019-01-14 09:15:15'),
	(1094592041087729666, '刘红雨', 32, '[email protected]', 1088248166370832385
		, '2019-01-14 09:48:16');

1.3 创建实体类

@Data
public class User {

    // 主键
    private Long id;
    //姓名
    @TableField(condition = SqlCondition.LIKE)
    private String name;
    //年龄
    @TableField(condition ="%s<#{%s}")
    private Integer age;
    //邮箱
    private String email;
    // 上级id
    private Long manager_id;
    //创建时间
    private LocalDateTime createTime;
}

1.4 创建mapper接口

public interface UserMapper extends BaseMapper<User> {
}

1.5 新建启动类

@SpringBootApplication
public class MybatisPlusSamplesChapter1Application {

    public static void main(String[] args) {
        SpringApplication.run(MybatisPlusSamplesChapter1Application.class, args);
    }

}

1.6 在启动类上添加mapper扫描

@SpringBootApplication
@MapperScan("com.example.mybatisplus.sampleschapter1.mapper")
public class MybatisPlusSamplesChapter1Application {

    public static void main(String[] args) {
        SpringApplication.run(MybatisPlusSamplesChapter1Application.class, args);
    }
}

1.7配置信息

  • 数据库
  • 日志输出格式
  • 我采用的是mysql数据库
#数据库库配置信息
spring:
  datasource:
    driver-class-name: com.mysql.cj.jdbc.Driver
    url: jdbc:mysql://localhost:3306/mp?useSSL=false&serverTimezone=GMT%2B8
    username: root
    password: root

#数据库库配置信息
#spring:
#  datasource:
#    driver-class-name: org.h2.Driver
#    schema: classpath:db/schema-h2.sql
#    data: classpath:db/data-h2.sql
#    url: jdbc:h2:mem:test
#    username: root
#    password: test

#  日志级别 日志内容 换行
logging:
  level:
    root: warn
    com.example.mybatisplus.sampleschapter1.mapper: trace
  pattern:
    console: '%p%m%n'

注:如果是H2数据库:
先运行启动类,初始化H2数据库
-数据库脚本

CREATE TABLE user
(
	id BIGINT(20) NOT NULL COMMENT '主键ID',
	name VARCHAR(30) NULL DEFAULT NULL COMMENT '姓名',
	age INT(11) NULL DEFAULT NULL COMMENT '年龄',
	email VARCHAR(50) NULL DEFAULT NULL COMMENT '邮箱',
	create_time DATETIME DEFAULT NULL COMMENT '创建时间',
	PRIMARY KEY (id)
);
DELETE FROM user;

INSERT INTO user (id, name, age, email, create_time) VALUES
(1, 'Jone', 18, '[email protected]','2019-01-11 14:20:20'),
(2, 'Jack', 20, '[email protected]','2019-02-05 11:12:22'),
(3, 'Tom', 28, '[email protected]','2019-02-14 08:31:16'),
(4, 'Sandy', 21, '[email protected]','2019-01-14 09:15:15'),
(5, 'Billie', 24, '[email protected]','2019-01-14 09:48:16');

1.8 新建测试类

@Component
public class UserMapperTest extends MybatisPlusSamplesChapter1ApplicationTests {
}

二、查询测试

2.1 通过主键id查询用户信息

   /**
     * 通过主键id查询用户信息
     */
    @Test
    public void selectUserById() {
        User user = userMapper.selectById(1087982257332887553L);
        System.out.println("通过主键id查询用户信息:" + user);
    }
     /*
      sql形式:SELECT id,name,age,email,manager_id,create_time FROM user WHERE id=?
     */

2.2 通过多个主键id查询多个用户信息

   /**
     * 通过多个主键id查询多个用户信息
     */
    @Test
    public void selectBatchIds() {

        List<Long> ids = Arrays.asList(1087982257332887553L, 1088248166370832385L, 1088250446457389058L);
        List<User> userList = userMapper.selectBatchIds(ids);
        userList.forEach(System.out::println);
    }
    /*
      sql形式:SELECT id,name,age,email,manager_id,create_time FROM user WHERE id IN ( ? , ? , ? )
     */

2.3 通过map查询一个用户信息

   /**
     *通过map查询一个用户信息
     */
    @Test
    public void selectByMap() {

        Map<String, Object> map = new HashMap<>();
        map.put("name", "王天风");
        map.put("age", 25);
        List<User> userList = userMapper.selectByMap(map);
        userList.forEach(System.out::println);
    }
    /*
      sql形式:SELECT id,name,age,email,manager_id,create_time FROM user WHERE name = ? AND age = ?
     */

2.4 通过map查询多个用户信息

   /**
     *通过map查询多个用户信息
     */
    @Test
    public void selectByMap2() {

        Map<String, Object> map = new HashMap<>();
        map.put("age", 32);
        List<User> userList = userMapper.selectByMap(map);
        userList.forEach(System.out::println);
    }
    /*
       sql形式:SELECT id,name,age,email,manager_id,create_time FROM user WHERE age = ?
     */

2.5 默认查询数据库列名

在这里插入图片描述

想学习更多微服务、分布式、中间件、数据库、项目快速构建等系列技术
请访问http://gblfy.com
让我们一起进步!!!

猜你喜欢

转载自blog.csdn.net/weixin_40816738/article/details/93316498