Spring Boot是什么?MybatisPlus常用注解,LambdaQueryWrapper常用方法
DAY26.1 Java核心基础
Spring Boot是什么?
Spring Java开放的标准,但是Spring配置比较繁琐,尤其在大型项目,会出现很多重复的工作,为了让Spring变得更加简高效,SpringBoot应运而生,让项目开发变得更加简洁
开发者可以通过Springboot快速搭建一个Java应用程序
Spring Boot完成的核心工作是自动装配,讲项目中运用的组件进行自动注入,开发者只需要关注业务逻辑,而不需要进行各种繁琐的配置,从而提高开发效率
Spring Boot对常用的第三方库都提供了配置的方案,可以自动整合其它第三方库,只需要导入相关依赖,不需要开发者自己配置
Spring Boot优势:
- 不需要xml文件
- 内嵌了web服务器(tomcat)
- 默认支持Json格式的数据,不需要额外配置
- 支持RestFul风格
增删改查(Get、Post、Put、Delete)
- 只需要一个配置文件就可以配置所以的个性化信息
SpringBoot是一个用很少的配置就可以快速搭建Spring 应用的框架,并且很好的集成了常用的第三方库,让开发者可以快速进行企业级应用开发
SSM 是基于Spring 来管理SpringMVC和Mybatis
也可以基于Spring Boot来管理SpringMVC和Mybatis
自动装配:Spring Boot引入哪个框架,它就会自动装载该框架并且运行
在Spring Boot 工程中引入了Mybatis依赖,那么SpringBoot就会自动创建相关的对象datasource、SqlsessionFactory…不用自己创建了
如果去掉了该框架则会相应去除该框架相关的创建
MybatisPlus
常用注解
@TableName:可以设置表名字,如果不设置默认使用类名的小写
@Data
@TableName("user")
public class User {@TableId(type = IdType.AUTO)private Integer id;private String name;private String pwd;private String email;private String role;private Integer age;
}
映射数据库的user表
@TableId(value=“id”)
设置为主键,value是主键字段名,如果不填也会自动识别用字段的小写
type = IdType.AUTO:标记为主键自增
@TableField(value=“name”)
设置为普通字段,同样可以设置value,映射为数据库的字段
常用方法
以下是以表格形式对 LambdaQueryWrapper 常用查询方法的总结:
方法名 | 示例代码 | 作用描述 | 适用场景示例 |
---|---|---|---|
eq | eqWrapper.eq(User::getId, 1); | 查询字段等于指定值的数据。 | 精确查找某个 ID 的用户信息。 |
ne | neWrapper.ne(User::getId, 1); | 查询字段不等于指定值的数据。 | 排除特定 ID 的记录。 |
gt | gtWrapper.gt(User::getAge, 20); | 查询字段大于指定值的数据。 | 获取年龄超过 20 的用户。 |
lt | ltWrapper.lt(User::getAge, 30); | 查询字段小于指定值的数据。 | 查找年龄低于 30 的用户。 |
ge | geWrapper.ge(User::getAge, 25); | 查询字段大于等于指定值的数据。 | 获取年龄 ≥ 25 的用户。 |
le | leWrapper.le(User::getAge, 25); | 查询字段小于等于指定值的数据。 | 获取年龄 ≤ 25 的用户。 |
between | betweenWrapper.between(User::getAge, 20, 30); | 查询字段在两个值之间的数据。 | 查找年龄在 20 到 30 之间的用户。 |
like | likeWrapper.like(User::getName, "张"); | 模糊匹配字段内容(SQL LIKE)。 | 查找名字中包含“张”的用户。 |
orderByDesc | orderByWrapper.orderByDesc(User::getAge); | 按照指定字段降序排列结果。 | 按年龄从高到低排序用户。 |
in | inWrapper.in(User::getId, 1, 2, 3); | 查询字段值在给定集合中的记录。 | 获取 ID 为 1、2、3 的用户。 |
notIn | notInWrapper.notIn(User::getId, 1, 2, 3); | 查询字段值不在给定集合中的记录。 | 排除 ID 为 1、2、3 的用户。 |
isNull | isNullWrapper.isNull(User::getEmail); | 查询字段为空(NULL)的记录。 | 查找没有填写邮箱的用户。 |
isNotNull | isNotNullWrapper.isNotNull(User::getEmail); | 查询字段不为空(NOT NULL)的记录。 | 查找已填写邮箱的用户。 |
这些方法可以组合使用,构建更复杂的查询条件。通过 LambdaQueryWrapper,我们可以以类型安全的方式编写查询逻辑,避免 SQL 注入问题,并提高开发效率。
@Test
public void test3(){// 等于LambdaQueryWrapper<User> eqWrapper = new LambdaQueryWrapper<>();eqWrapper.eq(User::getId, 1);List<User> eqUsers = userMapper.selectList(eqWrapper);System.out.println("等于查询结果: " + eqUsers);// 不等于LambdaQueryWrapper<User> neWrapper = new LambdaQueryWrapper<>();neWrapper.ne(User::getId, 1);List<User> neUsers = userMapper.selectList(neWrapper);System.out.println("不等于查询结果: " + neUsers);// 大于LambdaQueryWrapper<User> gtWrapper = new LambdaQueryWrapper<>();gtWrapper.gt(User::getAge, 20);List<User> gtUsers = userMapper.selectList(gtWrapper);System.out.println("大于查询结果: " + gtUsers);// 小于LambdaQueryWrapper<User> ltWrapper = new LambdaQueryWrapper<>();ltWrapper.lt(User::getAge, 30);List<User> ltUsers = userMapper.selectList(ltWrapper);System.out.println("小于查询结果: " + ltUsers);// 大于等于LambdaQueryWrapper<User> geWrapper = new LambdaQueryWrapper<>();geWrapper.ge(User::getAge, 25);List<User> geUsers = userMapper.selectList(geWrapper);System.out.println("大于等于查询结果: " + geUsers);// 小于等于LambdaQueryWrapper<User> leWrapper = new LambdaQueryWrapper<>();leWrapper.le(User::getAge, 25);List<User> leUsers = userMapper.selectList(leWrapper);System.out.println("小于等于查询结果: " + leUsers);// betweenLambdaQueryWrapper<User> betweenWrapper = new LambdaQueryWrapper<>();betweenWrapper.between(User::getAge, 20, 30);List<User> betweenUsers = userMapper.selectList(betweenWrapper);System.out.println("between查询结果: " + betweenUsers);// like模糊查询LambdaQueryWrapper<User> likeWrapper = new LambdaQueryWrapper<>();likeWrapper.like(User::getName, "张");List<User> likeUsers = userMapper.selectList(likeWrapper);System.out.println("like查询结果: " + likeUsers);// orderByLambdaQueryWrapper<User> orderByWrapper = new LambdaQueryWrapper<>();orderByWrapper.orderByDesc(User::getAge);List<User> orderByUsers = userMapper.selectList(orderByWrapper);System.out.println("orderBy查询结果: " + orderByUsers);// inLambdaQueryWrapper<User> inWrapper = new LambdaQueryWrapper<>();inWrapper.in(User::getId, 1, 2, 3);List<User> inUsers = userMapper.selectList(inWrapper);System.out.println("in查询结果: " + inUsers);// not inLambdaQueryWrapper<User> notInWrapper = new LambdaQueryWrapper<>();notInWrapper.notIn(User::getId, 1, 2, 3);List<User> notInUsers = userMapper.selectList(notInWrapper);System.out.println("not in查询结果: " + notInUsers);// is nullLambdaQueryWrapper<User> isNullWrapper = new LambdaQueryWrapper<>();isNullWrapper.isNull(User::getEmail);List<User> isNullUsers = userMapper.selectList(isNullWrapper);System.out.println("is null查询结果: " + isNullUsers);// is not nullLambdaQueryWrapper<User> isNotNullWrapper = new LambdaQueryWrapper<>();isNotNullWrapper.isNotNull(User::getEmail);List<User> isNotNullUsers = userMapper.selectList(isNotNullWrapper);System.out.println("is not null查询结果: " + isNotNullUsers);
}