96SEO 2026-02-23 11:41 0
介绍二、mybatisPlus的基础使用配置BaseMapper的基本CURD增删改查

三、wrapper条件构造器条件构造器wrapper通用API基础条件判断进阶条件判断in、like、between高级条件判断一子查询嵌套查询groupBy
1mybatisPlus是mybatis的增强工具所以在原本的mybatis中可以使用的语法在mybatisPlus基本上也是可以使用的。
mybatisPlus官网https://baomidou.com/
dependencygroupIdcom.baomidou/groupIdartifactIdmybatis-plus-spring-boot3-starter/artifactIdversion3.5.9/version
dependencygroupIdorg.projectlombok/groupIdartifactIdlombok/artifactId
dependencygroupIdmysql/groupIdartifactIdmysql-connector-java/artifactIdversion8.0.30/version
/dependency配置文件application.properties/yml
jdbc:mysql://localhost:3306/yourdatabase?characterEncodingUTF-8username:
输出sql语句的日志效果就是在每次进行执行sql语句时会输出在控制板中log-impl:
org.apache.ibatis.logging.stdout.StdOutImpl实体类的创建
AUTO当设置此值时并且在数据库中进行设置了主键自增的属性之后则也数据库的自增为主若是数据库没有设置则会报错
ASSIGN_ID默认值经过雪花算法所得的唯一id注意此算法的出来的值因为过大所以一般都会将此id属性类型设置为Long类型
{}注意这里的User是指你要绑定的表不要设置错了否则就会找不到数据源
在mybatisPlus中提供了一些简单的API来进行实现基本的CURD增删改查具体的使用方法在下面的测试类代码中进行演示
User();user.setAge(123);user.setLastName(张三);user.setGender(男);user.setId(1L);/*row为响应的行数*/
方法二insertOrUpdate()此方法是更具主键id进行增加或修改若是设置了重复的id值则会执行两条sql语句一条查询一条updateSystem.out.println(userMapper.insertOrUpdate(user));}//
id?System.out.println(userMapper.deleteById(1877327132242313222L));
方式二通过map进行删除:map中的key值就是字段名value值就是你想要删除的某个字段的值
HashMap();map.put(last_name,张三);System.out.println(map);System.out.println(userMapper.deleteByMap(map));}//
方式一通过id进行修改,注意传的参数是实体类此实体类中id是判断的id其余的值为修改后的值
User();user.setAge(123);user.setLastName(张三);user.setGender(男);user.setId(2L);System.out.println(userMapper.updateById(user));}//
id,last_name,email,gender,age,is_delete,sex
id?System.out.println(userMapper.selectById(3));
id,last_name,email,gender,age,is_delete,sex
HashMap();map.put(gender,男);System.out.println(userMapper.selectByMap(map));}
提供了一套强大的条件构造器Wrapper用于构建复杂的数据库查询条件。
用于构造**更新Update**条件可以在更新数据时指定条件。
AbstractLambdaWrapper:
使用范围为QueryWrapper、LambdaQueryWrapper、UpdateWrapper、LambdaUpdateWrapper
这里为了方便展示wrapper的API就拿QueryWrapper进行演示了
在mysql中的基础条件判断例如、、…都被mybatisPlus中的条件构造器进行封装成了对应的API方法如下
使用范围为QueryWrapper、LambdaQueryWrapper、UpdateWrapper、LambdaUpdateWrapper
基础的条件判断(支持QueryWrapper、LambdaQueryWrapper、UpdateWrapper、LambdaUpdateWrapper)*/Testpublic
id,last_name,email,gender,age,is_delete,sex
//le:小于等于.eq(gender,男)//查询gender是否等于男.ne(last_name,null);//判断单个字段不相等的条件ListUser
userMapper.selectList(queryWrapper);System.out.println(users);}进阶条件判断in、like、between
在mysql中有三个关键字in、like、between,分别对应着条件构造器API中的
在这里是进行判断此方法是否执行若为true则正常执行若为false不执行下面的也会有许多的方法会有此形参这里就一笔带过了。
notBetween、notLike、notIn这些API就是与对应的API进行逆向取值的意思
进阶条件判断(支持QueryWrapper、LambdaQueryWrapper、UpdateWrapper、LambdaUpdateWrapper)*
相当于mysql中between、like*/Testpublic
testWrapper2(){QueryWrapperUser
id,last_name,email,gender,age,is_delete,sex
?)*/queryWrapper.between(true,age,0,18)//查询age在0到18【包括边界值】最前面的boolean值是用来进行判断是否执行此between条件.notBetween(false,age,19,100)//与between相反.like(true,last_name,小)//查询last_name字段包含小的所有字段.notLike(false,last_name,c)//与like相反.likeLeft(true,email,qq.com)//满足左模糊匹配的字段对应的sql语句为:
%qq.com.likeRight(true,last_name,李);//满座右模糊匹配的字段所对应sql为
/*同时也有notLikeLeft、notLikeRight*/ListUser
userMapper.selectList(queryWrapper);System.out.println(queryWrapper);}/***
进阶2条件判断(支持QueryWrapper、LambdaQueryWrapper、UpdateWrapper、LambdaUpdateWrapper)*
testWrapper3(){QueryWrapperUser
id,last_name,email,gender,age,is_delete,sex
女)//判断gender的值是否等于男或者女.notIn(true,
2));//与in方法相反,其中values值也可以使用arrays.asList进行赋值也就相当于使用数组进行赋值ListUser
userMapper.selectList(queryWrapper);System.out.println(users);}高级条件判断一子查询嵌套查询groupBy
~Value):子查询在sql中的子查询的意思在条件判断中嵌套一个查询sql并且将此sql返回的值作为参数进行判断而有因为此判断可以是基础条件判断等一系列的判断就在条件构造器中派生了对应的API如inSql、geSql、leSql…其对应的sql语句为
用来进行过滤分组的条件sql语句还可以可以使用占位符进行标记列如:age{0}
这里又伴生出来了两个方法orderByAsc默认升序、orderBYDesc默认降序
高级条件判断(支持QueryWrapper、LambdaQueryWrapper、UpdateWrapper、LambdaUpdateWrapper)*
testWrapper4(){QueryWrapperUser
id,last_name,email,gender,age,is_delete,sex
age18)//子查询将右边的sql语句进行执行执行完返回的所有值左与id进in条件判断.notInSql(false,
age18)/*这里还有eqSql等于嵌套子查询、gtSql大于~、lt小于~、geSql大于等于~、leSql小于等于~。
执行逻辑都和上面的inSql相似*/.orderBy(true,
age);//根据age进行升序排序第一个参数是判断是否执行第二个参数是判断是否进行升序第三个参数是字段/*这里还有orderByAsc默认升序、orderBYDesc默认降序*/ListUser
userMapper.selectList(queryWrapper);System.out.println(users);}Testpublic
testWrapper5(){QueryWrapperUser
18)//更具分组后的数据进行过滤sum(age)1;这里的{0},代表的是占位符其中的0就是后面的参数的第一位(注意占位符和参数必须保持一致),sql语句为SELECT
10.select(age);//查询的某个单独的字段这里因为用到了groupBy
having所以尽量将分组的字段和查询的字段保持一致或者查询其他的逻辑运运算值(如:count),否则可能会报错SQL
userMapper.selectList(queryWrapper);System.out.println(users);}
func(函数)、and、or这三个是条件构造器中的API有了这些方法可以更加的灵活的执行sql语句
它提供了一种在链式调用中根据条件执行不同查询操作的机制。
通过传入一个
方法允许你在不中断链式调用的情况下根据条件执行不同的查询构建逻辑。
**概念**看到这里并且敲代码尝试的话会发现不管使用ge\lt等方法默认的连接条件就是and所以这里条件构造器就派生出了两个API就是or、and。
3(支持QueryWrapper、LambdaQueryWrapper、UpdateWrapper、LambdaUpdateWrapper)*
是mybatisPlus中创建的方法func、and、or。
有了这些方法可以更加的灵活的执行sql语句*/
id,last_name,email,gender,age,is_delete,sex
(true){i.eq(last_name,小红);//这里因为条件一直恒等于true所以会执行此方法}else
{i.ne(last_name,小红);}}//此方法结合lambda[此时的参数i也就是queryWrapper对象可以执行里面的方法]进行从而可以在执行sql语句前执行一些其他的操作列如判断、循环(不推荐),);ListUser
userMapper.selectList(queryWrapper);System.out.println(users);
id,last_name,email,gender,age,is_delete,sex
?))*/queryWrapper.ge(age,100).and(true,i
%1%));i.like(last_name,1);}).or(true,j
%qq.com)j.likeLeft(true,email,qq.com);});//此时的or是和前面的ge和and方法做or运算(...
)所以or里面的条件满足而上面的条件不满足也是可以查询出来的ListUser
userMapper.selectList(queryWrapper);System.out.println(users);
只适用于lambdaQueryWrapper和QueryWrapper的Api有select
只适用于lambdaUpdateWrapper和UpdateWrapper的Apiset、setSql
只适用于lambdaUpdateWrapper和UpdateWrappersetDecrBy、setIncrBy
只适用于lambdaQueryWrapper和QueryWrapper的ApiTestpublic
一、select用于查询单独某一个字段的apiQueryWrapperUser
QueryWrapper();queryWrapper.select(id,age,email);System.out.println(userMapper.selectList(queryWrapper));}//
只适用于lambdaUpdateWrapper和UpdateWrapper的ApiTestpublic
一、set用于修改某个字段的值UpdateWrapperUser
UpdateWrapper();userUpdateWrapper.gt(age,18)//修改条件.set(true,sex,1);System.out.println(userMapper.update(userUpdateWrapper));//
二、setSql若是修改的字段过于繁琐复杂可以直接写入sql语句将写好的sql语句进行拼接到set关键字之后UpdateWrapperUser
UpdateWrapper();userUpdateWrapper2.lt(age,
张三);//进行拼接的sqlSystem.out.println(userMapper.update(userUpdateWrapper2));}//
只适用于lambdaUpdateWrapper和UpdateWrapper的Api注意这些API的适用的mybatisPlus的版本为3.5.9Testpublic
一、setDecrBy方法是在指定的字段的基础上进行递减valLambdaUpdateWrapperUser
LambdaUpdateWrapper();lambdaUpdateWrapper.gt(User::getAge,
System.out.println(userMapper.update(lambdaUpdateWrapper));//
二、setIncrBy方法是在指定的字段的基础上进行累加valLambdaUpdateWrapperUser
LambdaUpdateWrapper();lambdaUpdateWrapper2.gt(User::getAge,
2);System.out.println(userMapper.update(lambdaUpdateWrapper2));}这里是条件构造器中的大部分API其中还有一些api并没有列举出来要是找不到的话可以去官网mybatisPlushttps://baomidou.com/guides/wrapper/
作为专业的SEO优化服务提供商,我们致力于通过科学、系统的搜索引擎优化策略,帮助企业在百度、Google等搜索引擎中获得更高的排名和流量。我们的服务涵盖网站结构优化、内容优化、技术SEO和链接建设等多个维度。
| 服务项目 | 基础套餐 | 标准套餐 | 高级定制 |
|---|---|---|---|
| 关键词优化数量 | 10-20个核心词 | 30-50个核心词+长尾词 | 80-150个全方位覆盖 |
| 内容优化 | 基础页面优化 | 全站内容优化+每月5篇原创 | 个性化内容策略+每月15篇原创 |
| 技术SEO | 基本技术检查 | 全面技术优化+移动适配 | 深度技术重构+性能优化 |
| 外链建设 | 每月5-10条 | 每月20-30条高质量外链 | 每月50+条多渠道外链 |
| 数据报告 | 月度基础报告 | 双周详细报告+分析 | 每周深度报告+策略调整 |
| 效果保障 | 3-6个月见效 | 2-4个月见效 | 1-3个月快速见效 |
我们的SEO优化服务遵循科学严谨的流程,确保每一步都基于数据分析和行业最佳实践:
全面检测网站技术问题、内容质量、竞争对手情况,制定个性化优化方案。
基于用户搜索意图和商业目标,制定全面的关键词矩阵和布局策略。
解决网站技术问题,优化网站结构,提升页面速度和移动端体验。
创作高质量原创内容,优化现有页面,建立内容更新机制。
获取高质量外部链接,建立品牌在线影响力,提升网站权威度。
持续监控排名、流量和转化数据,根据效果调整优化策略。
基于我们服务的客户数据统计,平均优化效果如下:
我们坚信,真正的SEO优化不仅仅是追求排名,而是通过提供优质内容、优化用户体验、建立网站权威,最终实现可持续的业务增长。我们的目标是与客户建立长期合作关系,共同成长。
Demand feedback