当前位置: 首页 > news >正文

打开网址资料网站智慧团建系统手机端

打开网址资料网站,智慧团建系统手机端,做医药中间体的外贸网站,seo优化多久能上排名这里写目录标题1.MyBatisPlus概述2.MyBatisPlus的开发步骤2.1 MyBatisPlus的CRUD操作2.2 MyBatisPlus的分页查询3.MyBatisPlus的DQL编程控制(封装sql)3.1 条件查询方式3.1.1 条件查询3.1.2 组合条件3.1.3 Null值处理3.2 查询投影-设置【查询字段、分组、分页】3.2.1 查询结果包…

这里写目录标题

  • 1.MyBatisPlus概述
  • 2.MyBatisPlus的开发步骤
    • 2.1 MyBatisPlus的CRUD操作
    • 2.2 MyBatisPlus的分页查询
  • 3.MyBatisPlus的DQL编程控制(封装sql)
    • 3.1 条件查询方式
      • 3.1.1 条件查询
      • 3.1.2 组合条件
      • 3.1.3 Null值处理
    • 3.2 查询投影-设置【查询字段、分组、分页】
      • 3.2.1 查询结果包含模型类中部分属性
      • 3.2.2 查询结果包含模型类中未定义的属性
    • 3.3 查询条件设定

1.MyBatisPlus概述

一、MyBatisPlus介绍
    MyBatisPlus(简称MP)是基于MyBatis框架基础上开发的增强型工具,旨在简化开发、提高效率

官网:
https://mybatis.plus/
https://mp.baomidou.com/

二、MyBatisPlus特性

  • 无侵入:只做增强不做改变,不会对现有工程产生影响
  • 强大的 CRUD 操作:内置通用 Mapper,少量配置即可实现单表CRUD 操作
  • 支持 Lambda:编写查询条件无需担心字段写错
  • 支持主键自动生成
  • 内置分页插件

2.MyBatisPlus的开发步骤

前提:当前项目使用了mybatis作为持久层框架

步骤一:引入依赖

<dependency><groupId>com.baomidou</groupId><artifactId>mybatis-plus-boot-starter</artifactId><version>3.4.1</version>
</dependency>

步骤二:继承BaseMapper接口

import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import org.apache.ibatis.annotations.Mapper;@Mapper
public interface UserMapper extends BaseMapper<User> {}

2.1 MyBatisPlus的CRUD操作

/**
* 新增* insert(T t);*/
@Test
void save() {User user = new User();user.setName("黑马程序员");user.setPassword("itheima");user.setAge(12);user.setTel("4006184000");userDao.insert(user);
}/*** 根据主键删除* deleteById(Serializable id);*/
@Test
void deleteById() {userDao.deleteById(1625801212297658370L);
}/*** 根据条件删除* delete(@Param("ew") Wrapper<T> queryWrapper);*/
@Test
void deleteByCondition() {QueryWrapper<User> query = new QueryWrapper<>();query.eq("age", 12);userDao.delete(query);
}/*** 根据主键修改* updateById(@Param("et") T entity);*/
@Test
void updateById() {User user = new User();user.setId(2L);// 仅对设置的字段进行修改user.setName("王晓峰");userDao.updateById(user);
}/*** 根据条件修改* update(@Param("et") T entity, @Param("ew") Wrapper<T> updateWrapper);*/
@Test
void updateByCondition() {// 修改内容:将name改为Mr.WangUser user = new User();user.setName("Mr.Wang");// 修改条件:年龄为12岁UpdateWrapper<User> update = new UpdateWrapper<>();update.eq("age", 12);userDao.update(user, update);
}/*** 查询所有* selectList(@Param("ew") Wrapper<T> queryWrapper);*/
@Test
void selectList() {// 方式一List<User> users = userDao.selectList(null);System.out.println(users);// 方式二List<User> users_2 = userDao.selectList(new QueryWrapper<>());System.out.println(users_2);
}/*** 根据条件查询* selectList(@Param("ew") Wrapper<T> queryWrapper);*/
@Test
void selectListByCondition() {QueryWrapper<User> query = new QueryWrapper<>();query.eq("age", 12);List<User> users_2 = userDao.selectList(query);System.out.println(users_2);
}/*** 根据条件分页查询* 前提:需要设置分页拦截器* selectPage(E page, @Param("ew") Wrapper<T> queryWrapper);*/
@Test
void selectPageByCondition() {QueryWrapper<User> query = new QueryWrapper<>();query.eq("age", 12);Page<User> userPage = userDao.selectPage(new Page<>(1, 2), query);System.out.println(userPage);
}

2.2 MyBatisPlus的分页查询

一、设置分页拦截器(交给Spring管理)

package com.itheima.config;import com.baomidou.mybatisplus.extension.plugins.MybatisPlusInterceptor;
import com.baomidou.mybatisplus.extension.plugins.inner.PaginationInnerInterceptor;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;@Configuration
public class MybatisPlusConfig {@Beanpublic MybatisPlusInterceptor mybatisPlusInterceptor(){//1 创建MybatisPlusInterceptor拦截器对象MybatisPlusInterceptor mpInterceptor=new MybatisPlusInterceptor();//2 添加分页拦截器mpInterceptor.addInnerInterceptor(new PaginationInnerInterceptor());return mpInterceptor;}
}

二、执行分页查询

//分页查询
@Test
void testSelectPage(){//1 创建IPage分页对象,设置分页参数IPage<User> page=new Page<>(1,3);//2 执行分页查询userDao.selectPage(page,null);//3 获取分页结果System.out.println("当前页码值:"+page.getCurrent());System.out.println("每页显示数:"+page.getSize());System.out.println("总页数:"+page.getPages());System.out.println("总条数:"+page.getTotal());System.out.println("当前页数据:"+page.getRecords());
}

三、开启MyBatisPlus日志

spring:datasource:type: com.alibaba.druid.pool.DruidDataSourcedriver-class-name: com.mysql.cj.jdbc.Driverurl: jdbc:mysql://localhost:3306/mybatisplus_db?serverTimezone=UTCusername: rootpassword: root
# 开启mp的日志(输出到控制台)
mybatis-plus:configuration:log-impl: org.apache.ibatis.logging.stdout.StdOutImpl

四、解决日志打印过多问题

  • 取消初始化spring日志打印
    做法:在resources下新建一个logback.xml文件,名称固定,内容如下:
<?xml version="1.0" encoding="UTF-8"?>
<configuration></configuration>
  • 取消SpringBoot启动banner图标
spring:main:banner-mode: off # 关闭SpringBoot启动图标(banner)

在这里插入图片描述

  • 取消MybatisPlus启动banner图标
# mybatis-plus日志控制台输出
mybatis-plus:configuration:log-impl: org.apache.ibatis.logging.stdout.StdOutImplglobal-config:banner: off # 关闭mybatisplus启动图标

在这里插入图片描述


3.MyBatisPlus的DQL编程控制(封装sql)

3.1 条件查询方式

MyBatisPlus将书写复杂的SQL查询条件进行了封装,使用编程的形式完成查询条件的组合
在这里插入图片描述

3.1.1 条件查询

一、按条件查询

//方式一:按条件查询
QueryWrapper<User> qw=new QueryWrapper<>();
qw.lt("age", 18);
List<User> userList = userDao.selectList(qw);
System.out.println(userList);

二、lambda格式按条件查询

//方式二:lambda格式按条件查询
QueryWrapper<User> qw = new QueryWrapper<User>();
qw.lambda().lt(User::getAge, 10);
List<User> userList = userDao.selectList(qw);
System.out.println(userList);

三、lambda格式按条件查询(推荐)

//方式三:lambda格式按条件查询
LambdaQueryWrapper<User> lqw = new LambdaQueryWrapper<User>();
lqw.lt(User::getAge, 10);
List<User> userList = userDao.selectList(lqw);
System.out.println(userList);

3.1.2 组合条件

一、并且关系(and)

//并且关系
LambdaQueryWrapper<User> lqw = new LambdaQueryWrapper<User>();
//并且关系:10到30岁之间
lqw.lt(User::getAge, 30).gt(User::getAge, 10);
List<User> userList = userDao.selectList(lqw);
System.out.println(userList);

二、或者关系(or)

//或者关系
LambdaQueryWrapper<User> lqw = new LambdaQueryWrapper<User>();
//或者关系:小于10岁或者大于30岁
lqw.lt(User::getAge, 10).or().gt(User::getAge, 30);
List<User> userList = userDao.selectList(lqw);
System.out.println(userList);

3.1.3 Null值处理

一、if语句控制条件追加

Integer minAge=10;  //将来有用户传递进来,此处简化成直接定义变量了
Integer maxAge=null;  //将来有用户传递进来,此处简化成直接定义变量了
LambdaQueryWrapper<User> lqw = new LambdaQueryWrapper<User>();
if(minAge!=null){lqw.gt(User::getAge, minAge);
}
if(maxAge!=null){lqw.lt(User::getAge, maxAge);
}
List<User> userList = userDao.selectList(lqw);
userList.forEach(System.out::println);

二、条件参数控制

Integer minAge=10;  //将来有用户传递进来,此处简化成直接定义变量了
Integer maxAge=null;  //将来有用户传递进来,此处简化成直接定义变量了
LambdaQueryWrapper<User> lqw = new LambdaQueryWrapper<User>();
//参数1:如果表达式为true,那么查询才使用该条件
lqw.gt(minAge!=null,User::getAge, minAge);
lqw.lt(maxAge!=null,User::getAge, maxAge);
List<User> userList = userDao.selectList(lqw);
userList.forEach(System.out::println);

三、条件参数控制(链式编程)

Integer minAge=10;  //将来有用户传递进来,此处简化成直接定义变量了
Integer maxAge=null;  //将来有用户传递进来,此处简化成直接定义变量了
LambdaQueryWrapper<User> lqw = new LambdaQueryWrapper<User>();
//参数1:如果表达式为true,那么查询才使用该条件
lqw.gt(minAge!=null,User::getAge, minAge).lt(maxAge!=null,User::getAge, maxAge);
List<User> userList = userDao.selectList(lqw);
userList.forEach(System.out::println);

3.2 查询投影-设置【查询字段、分组、分页】

3.2.1 查询结果包含模型类中部分属性

/*LambdaQueryWrapper<User> lqw = new LambdaQueryWrapper<User>();
lqw.select(User::getId, User::getName, User::getAge);*/
//或者
QueryWrapper<User> lqw = new QueryWrapper<User>();
lqw.select("id", "name", "age", "tel");
List<User> userList = userDao.selectList(lqw);
System.out.println(userList);

3.2.2 查询结果包含模型类中未定义的属性

QueryWrapper<User> lqw = new QueryWrapper<User>();
lqw.select("count(*) as count, tel");
lqw.groupBy("tel");
List<Map<String, Object>> userList = userDao.selectMaps(lqw);
System.out.println(userList);

3.3 查询条件设定

多条件查询有哪些组合?

  • 范围匹配(> 、 = 、between)
  • 模糊匹配(like)
  • 空判定(null)
  • 包含性匹配(in)
  • 分组(group)
  • 排序(order)
  • ……
http://www.yayakq.cn/news/491860/

相关文章:

  • 贵阳建网站公司简要说明开发网站的步骤
  • 网站建设的实验步骤网站如何接广告
  • 只做域名跳转和关停网站wordpress提取公众号文章
  • 国外企业画册设计网站网站怎么百度收录
  • 网站域名做链接怎么做深圳宝安住房和建设局网站
  • 自助建站网站建设设计公司外贸家具网站首页设计
  • 扬州网页制作公司百度推广seo优化
  • 昆山移动网站建设网站开发课程知识点总结
  • 交三百能在网站上找兼职做的宁波seo快速优化费用
  • 漳州商城网站建设怎样设计网站建设
  • 自己建网站开网店4399观看视频免费哔哩哔哩
  • 广州做网络服装的网站营销网站建设公司排名
  • 青岛网站建设市场分析做wap网站能火吗
  • 长沙专业做网站公司有哪些网站用花生壳nas做存储
  • 有没有专业做效果图的网站亚马逊免费视频
  • 网站建设广告图网站建设归哪个部门
  • 网站二维码特效黄山旅游攻略 知乎
  • 网站开发 入门2017做网站怎么赚钱
  • 外贸企业网站模板建设可以吗WordPress修改评论者昵称
  • 兰州网站排名外包网站模板 简洁
  • 网站外部链接做多少合适呢网站建设培训哪个好
  • 59网站一起做网店平江高端网站建设
  • 开发购物网站社交的软件公司中建八局第一建设有限公司济南分公司
  • 网站安装代码网站域名做哪个会计科目
  • 深圳网站制作费用wordpress 众筹主题
  • 哪些网站可以做装修杭州建设网电焊工报名入口
  • 免费h5源码资源源码站小程序是什么原理
  • 交友app网站建设山西建设厅官方网站公示
  • 邯郸哪里做网站优化会员管理系统怎么用
  • 9免费建网站localhost怎么做网站