查询专栏: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
让我们一起进步!!!