解决方案

医疗项目中所用到的技术点——以MyBatis-Plus为技术案例

seo靠我 2023-09-23 00:47:33

一、项目介绍

1简介

惠医疗即为网上预约挂号系统,网上预约挂号是近年来开展的一项便民就医服务,旨在缓解看病难、挂号难的就医难题,许多患者为看一次病要跑很多次医院,最终还不一定能保证看得上医生。网上预约挂号SEO靠我全面提供的预约挂号业务从根本上解决了这一就医难题。随时随地轻松挂号!不用排长队!

2、我们能从这个项目中学到什么?

2.1巩固以前知识,学习技术点与技术点应用场景,掌握预约挂号业务流程

以下是预约挂号的常规SEO靠我业务流程 :

患者通过线上或线下途径获取医院就诊信息,选择对应科室、医生和就诊时间。

患者提前进行预约申请,提供个人有效证件信息和就诊相关病历资料。

医院对患者进行验证,确认患者的身份与就诊的信息。

医院工作SEO靠我人员核实患者所提供的证件信息和病历资料,处理预约申请。

预约申请审核通过后,系统将会在患者预约的挂号时间前给患者发送挂号成功的短信提醒。

患者按照预约挂号的时间到达医院指定科室。

医院工作人员核实患者身份信SEO靠我息,对患者的各项病历资料进行归档和录入。

医生对患者进行诊疗,并开具相应的药物处方(无需药物处方的可以不开)。

患者持有开具的药物处方到医院指定药房取药。

注:以上流程仅为常规流程,不同的医院会有部分差异。SEO靠我同时,线上预约挂号流程与线下预约挂号流程会有细微的差别,需要根据实际情况进行调整。

2.2 核心技术

SpringBoot:简化新Spring应用的初始搭建以及开发过程

SpringCloud:基于SpriSEO靠我ng Boot实现的云原生应用开发工具,SpringCloud使用的技术:(SpringCloudGateway、Spring Cloud Alibaba Nacos、Spring Cloud AliSEO靠我baba Sentinel、SpringCloud Task和SpringCloudFeign等)

MyBatis-Plus:持久层框架

Redis:内存缓存

RabbitMQ:消息中间件

HTTPClienSEO靠我t: Http协议客户端

Swagger2:Api接口文档工具

Nginx:负载均衡

Lombok:是一种Java库,可以通过注解简化Java代码的编写

Mysql:关系型数据库

MongoDB:面向文档的NoSEO靠我SQL数据库

Vue.js:web 界面的渐进式框架

Node.js: JavaScript 运行环境

Axios:Axios 是一个基于 promise 的 HTTP 库

NPM:包管理器

Babel:转码器SEO靠我

Webpack:打包工具

Docker :容器技术

Git:代码管理工具

3业务流程

1、患者信息管理流程:

医疗机构需要通过医疗信息系统对患者信息进行管理。包括个人身份信息、就诊信息、病历信息、检查结果信息、SEO靠我药品等信息。

2、就诊流程:

患者通过现场或线上预约,前往医疗机构,按照预约时间就诊。医生按照患者的身体状况进行检查和诊断,并开具处方或者做出其他治疗方案。

3、诊间支付与结算流程:

患者在接受医疗服务过程中SEO靠我,需要进行相应的费用支付和结算。包括通过第三方支付系统进行在线支付、以及通过医疗机构财务管理系统进行账务结算等。

4、医保报销流程:

医保体系是指社会保障制度中的医疗保险政策体系,患者通过登录医保信息系统SEO靠我,提供个人身份信息和就诊信息,以获得医疗保险报销。医院基于三大目录标准的要求,将可报销项目信息和详细资料汇总给医疗保险部门,完成医保报销流程。

5、医疗资源管理流程:

医疗机构需要对医疗资源进行统一管理,SEO靠我包括医生的排班、医疗设备的预定和维护等。

6、医疗机构财务管理流程:

医疗机构需要使用财务管理系统,对各类医疗服务产生的财务数据信息进行统计、报表生成、账务结算、财务审计和财务监督。

以上是Java中医疗业SEO靠我务流程的基本情况,随着医疗业务不断发展和创新,可能会出现新的医疗业务流程。

3.1 服务架构

1、客户端:客户端是医疗项目中的前端部分,是患者、医生和其他医疗机构进行交流和互动的界面。客户端的开发可以使用SEO靠我 Java Web技术,如 JSP、Servlet、Struts等。

2、服务端:服务端是医疗项目中的后端部分,主要负责医疗业务的处理和管理。服务端的开发可以使用 Java EE技术,如 Spring、SEO靠我Hibernate等。

3、数据库:医疗项目需要使用数据库来存储患者信息、医生信息、医疗服务信息和财务信息等。数据库可以使用 MySQL、Oracle等关系数据库管理系统。

4、缓存:缓存可以提高医疗项目SEO靠我的性能和响应时间,使用缓存可以减少对数据库的访问和提高服务的效率。常用的 Java缓存技术包括 Ehcache、Redis等。

5、消息中间件:医疗项目中的各项服务需要进行信息和数据的传递,消息中间件可SEO靠我以提供消息传递的能力,有利于解耦系统中各个服务的调用关系。常用的 Java消息中间件技术包括 ActiveMQ、RabbitMQ等。

6、监控系统:监控系统可以对医疗项目的性能和运行情况进行监控,对于保SEO靠我证服务的稳定运行非常重要。常用的 Java监控系统包括 JMX、Zabbix等。

以上是Java医疗项目中的基本服务架构,根据不同的医疗业务需求和具体实现情况,架构的具体细节可能还会有所不同。

三、MyBSEO靠我atis-Plus入门

1简介

MyBatis-Plus(简称 MP)是一个 MyBatis 的增强工具,在 MyBatis 的基础上只做增强不做改变,为简化开发、提高效率而生(提供了一些实用的工具类,如SEO靠我代码生成器、性能分析器、缓存增强器、注解支持等,减少了编写重复代码的工作量,并提高了代码的可读性和性能)。

润物无声

只做增强不做改变,引入它不会对现有工程产生影响,如丝般顺滑。

效率至上

只需简单配置,即可SEO靠我快速进行 CRUD 操作,从而节省大量时间。

丰富功能

热加载、代码生成、分页、性能分析等功能一应俱全。

2、创建并初始化数据库

2.1创建数据库

mybatis_plus

2.2创建 User 表

其对应的数据库SEO靠我 Schema 脚本如下:

CREATE TABLE USER ( id BIGINT(20)NOT NULL COMMENT 主键ID, NAME VARCHAR(30)NULL DEFAULT NUSEO靠我LL COMMENT 姓名, age INT(11)NULL DEFAULT NULL COMMENT 年龄, email VARCHAR(50)NULL DEFAULT NULL COMMENT 邮SEO靠我箱, PRIMARY KEY (id) );

其对应的数据库 Data 脚本如下:

INSERT INTO user (id, name, age, email)VALUES (1, JoSEO靠我ne, 18, test1@baomidou.com), (2, Jack, 20, test2@baomidou.com), (3, Tom, 28, test3@baomidou.com), (4SEO靠我, Sandy, 21, test4@baomidou.com), (5, Billie, 24, test5@baomidou.com); 1

3确认idea配置

JDK配置:在打开IdSEO靠我ea之前,要先确保在计算机中正确配置了JDK,以便idea使用该JDK进行运行。配置JDK的方法为,在Idea中选择“File”菜单,然后选择“Project Structure”选项,选择“SDK”SEO靠我选项卡,如果没有JDK,则需要添加JDK。

Maven配置:Idea集成了Maven,因此需要在Idea中配置Maven的安装位置和环境变量。在Idea中选择“File”菜单,然后选择“SettingsSEO靠我”选项,选择“Build, Execution, Deployment”-“Build Tools”-“Maven”选项卡,进行配置。

插件配置:为了更好地使用Idea进行开发,可能需要安装一些插件,如SEO靠我Lombok插件、Git插件等。在Idea中选择“File”菜单,然后选择“Settings”选项,选择“Plugins”选项卡,进行插件的安装和配置。

代码编译配置:在Idea中进行Java编译时,需SEO靠我要进行相关的配置,如编译选项、Classpath设置、运行配置等。在Idea中选择“Run”菜单,进行相关配置。

以上是确认Idea配置的基本方面,当然,对于具体的应用场景和项目需求,还需根据具体情况进SEO靠我行定制化配置和设置。

4创建项目

4.1 初始化工程

使用 Spring Initializr 快速初始化一个 Spring Boot 工程

Group:com.atguigu

Artifact:mybatisSEO靠我_plus

版本:2.2.1.RELEASE

4.2 引入依赖

注意:引入 MyBatis-Plus 之后请不要再次引入 MyBatis,以避免因版本差异导致的问题。

<dependencies> SEO靠我 <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-SEO靠我starter</artifactId> </dependency> <dependency> <groupId>org.springframeworkSEO靠我.boot</groupId> <artifactId>spring-boot-starter-test</artifactId> <scope>test</scopeSEO靠我> <exclusions> <exclusion> <groupId>org.junit.vintage</groupId> <artSEO靠我ifactId>junit-vintage-engine</artifactId> </exclusion> </exclusions> </depenSEO靠我dency> <!--mybatis-plus--> <dependency> <groupId>com.baomidou</groupId> SEO靠我 <artifactId>mybatis-plus-boot-starter</artifactId> <version>3.3.1</version> </deSEO靠我pendency> <!--mysql依赖--> <dependency> <groupId>mysql</groupId> <artiSEO靠我factId>mysql-connector-java</artifactId> </dependency> <!--lombok用来简化实体类--> SEO靠我<dependency> <groupId>org.projectlombok</groupId> <artifactId>lombok</artifactId> SEO靠我 <optional>true</optional> </dependency> </dependencies>

4.3 idea中安装lombok插件

打开 ISEO靠我dea,在菜单栏中选择“ File”选项,然后选择“ Settings”。

在弹出的“ Settings”对话框中,选择“ Plugins”选项卡。

在搜索框中输入“ Lombok”,然后点击“ BrowSEO靠我se repositories”按钮。

在弹出的对话框中,选择“ Lombok Plugin”插件,并点击“Install”按钮。

等待插件下载和安装完成后,Idea将提示您重启Idea以激活LombokSEO靠我插件。

重启后,可以在项目的 pom.xml文件中加入 Lombok的依赖,并开始在代码中使用Lombok的各种注解了。

请注意,可能会出现一些Lombok的版本与Idea插件的不兼容问题,请确保LombSEO靠我ok的版本与Idea插件的版本

5编写代码

5.1 配置

在 application.properties 配置文件中添加 MySQL 数据库的相关配置:

spring boot 2.0(内置jdbc5驱动)SEO靠我 #mysql数据库连接 spring.datasource.driver-class-name=com.mysql.jdbc.Driver sprinSEO靠我g.datasource.url=jdbc:mysql://localhost:3306/mybatis_plus?characterEncoding=utf-8&useSSL=false SEO靠我 spring.datasource.username=root spring.datasource.password=root spring boot 2.1及以SEO靠我上(内置jdbc8驱动) 注意:driver和url的变化 spring.datasource.driver-class-name=com.mysql.cj.jdbc.SEO靠我Driver spring.datasource.url=jdbc:mysql://localhost:3306/mybatis_plus?serverTimezone=GMT%2B8SEO靠我 spring.datasource.username=root spring.datasource.password=root

注意:

Jzt: 必须用mysql 8版本SEO靠我才行

1、这里的 url 使用了 ?serverTimezone=GMT%2B8 后缀,因为8.0版本的jdbc驱动需要添加这个后缀,否则运行测试用例报告如下错误:

java.sql.SQLExceptiSEO靠我on: The server time zone value ‘Öйú±ê׼ʱ¼ä’ is unrecognized or represents more

2、这里的 driver-class-nSEO靠我ame 使用了 com.mysql.cj.jdbc.Driver ,在 jdbc 8 中 建议使用这个驱动,否则运行测试用例的时候会有 WARN 信息

5.2 启动类

在 Spring Boot 启动类中SEO靠我添加 @MapperScan 注解,扫描 Mapper 文件夹

@SpringBootApplication @MapperScan("com.atguigu.demomptest.maSEO靠我pper") public class DemomptestApplication {public static void main(String[] args) {SpringAppSEO靠我lication.run(DemomptestApplication.class, args);} }

5.3 添加实体

创建包 entity 编写实体类 User.java(此处使用了 SEO靠我Lombok 简化代码)

@Data public class User {private Long id;private String name;private Integer ageSEO靠我;private String email; }

查看编译结果

5.4 添加mapper

创建包 mapper 编写Mapper 接口: UserMapper.java

@RepositorySEO靠我 public interface UserMapper extends BaseMapper<User> { }

5.5 测试

添加测试类,进行功能测试:

@SpringBSEO靠我ootTest class DemomptestApplicationTests {@Autowiredprivate UserMapper userMapper;@TestpubliSEO靠我c void findAll() {List<User> users = userMapper.selectList(null);System.out.println(users);} SEO靠我 }

注意:

IDEA在 userMapper 处报错,因为找不到注入的对象,因为类是动态创建的,但是程序可以正确的执行。

为了避免报错,可以在 dao 层 的接口上添加 @Repository 注解

通过以SEO靠我上几个简单的步骤,我们就实现了 User 表的 CRUD 功能,甚至连 XML 文件都不用编写!

(注意:以上并不是医疗项目中所需要的表设计以及代码,以上只是个演练)

查看控制台输出:

5.6 查看sql输SEO靠我出日志

#mybatis日志 mybatis-plus.configuration.log-impl=org.apache.ibatis.logging.stdout.StdOutImpSEO靠我l

四、主键策略

1、插入操作

//添加 @Test public void testAdd() {User user = new User();user.setName("SEO靠我lucy");user.setAge(20);user.setEmail("1243@qq.com");int insert = userMapper.insert(user);System.out.SEO靠我println(insert); }

注意:数据库插入id值默认为:全局唯一id

2、MP的主键策略

2.1 ASSIGN_ID

MyBatis-Plus默认的主键策略是:ASSIGN_ID SEO靠我(使用了雪花算法)

@TableId(type = IdType.ASSIGN_ID) private String id;

雪花算法:分布式ID生成器

雪花算法是由Twitter公布的分布SEO靠我式主键生成算法,它能够保证不同表的主键的不重复性,以及相同表的主键的有序性。

核心思想:

长度共64bit(一个long型)。

首先是一个符号位,1bit标识,由于long基本类型在Java中是带符号的,最SEO靠我高位是符号位,正数是0,负数是1,所以id一般是正数,最高位是0。

41bit时间截(毫秒级),存储的是时间截的差值(当前时间截 - 开始时间截),结果约等于69.73年。

10bit作为机器的ID(5个SEO靠我bit是数据中心,5个bit的机器ID,可以部署在1024个节点)。

12bit作为毫秒内的流水号(意味着每个节点在每毫秒可以产生 4096 个 ID)。

优点:整体上按照时间自增排序,并且整个分布式系统SEO靠我内不会产生ID碰撞,并且效率较高。

2.2 AUTO 自增策略

需要在创建数据表的时候设置主键自增

实体字段中配置 @TableId(type = IdType.AUTO)

@TableId(type = ISEO靠我dType.AUTO) private Long id;

要想影响所有实体的配置,可以设置全局主键配置

#全局设置主键生成策略 mybatis-plus.global-coSEO靠我nfig.db-config.id-type=auto

五、自动填充和乐观锁

1、更新操作

注意:update时生成的sql自动是动态sql:UPDATE user SET age=? WHERE id=?SEO靠我

//修改 @Test public void testUpdate() {User user = new User();user.setId(1340868235401SEO靠我764865L);user.setN("lucymary");int count = userMapper.updateById(user);System.out.println(count); SEO靠我 }

2、自动填充

需求描述:

项目中经常会遇到一些数据,每次都使用相同的方式填充,例如记录的创建时间,更新时间等。

我们可以使用MyBatis Plus的自动填充功能,完成这些字段的赋值工作

2.1SEO靠我数据库修改

在User表中添加datetime类型的新的字段 create_time、update_time

2.2实体类修改

实体上增加字段并添加自动填充注解

@TableField(fill = FielSEO靠我dFill.INSERT) private Date createTime; //create_time @TableField(fill = FieldFill.INSEO靠我SERT_UPDATE) private Date updateTime; //update_time

2.3实现元对象处理器接口

注意:不要忘记添加 @Component 注解

@CompSEO靠我onent public class MyMetaObjectHandler implements MetaObjectHandler {//mp执行添加操作,这个方法执行@OverrSEO靠我idepublic void insertFill(MetaObject metaObject) {this.setFieldValByName("createTime",new Date(),metSEO靠我aObject);this.setFieldValByName("updateTime",new Date(),metaObject);}//mp执行修改操作,这个方法执行@OverridepubliSEO靠我c void updateFill(MetaObject metaObject) {this.setFieldValByName("updateTime",new Date(),metaObject)SEO靠我;} }

3、乐观锁

3.1场景

**主要适用场景:**当要更新一条记录的时候,希望这条记录没有被别人更新,也就是说实现线程安全的数据更新

乐观锁实现方式:

取出记录时,获取当前version

SEO靠我新时,带上这个version

执行更新时, set version = newVersion where version = oldVersion

如果version不对,就更新失败

接下来介绍如何在MybSEO靠我atis-Plus项目中,使用乐观锁:

4、乐观锁实现流程

4.1修改实体类

添加 @Version 注解

@Version private Integer version;

4.2创建配置文件SEO靠我

创建包config,创建文件MybatisPlusConfig.java

此时可以删除主类中的 @MapperScan 扫描注解

@Configuration @MapperScan("cSEO靠我om.atguigu.demomptest.mapper") public class MpConfig {/*** 乐观锁插件*/@Beanpublic OptimisticLockSEO靠我erInterceptor optimisticLockerInterceptor() {return new OptimisticLockerInterceptor();} }

4.3SEO靠我注册乐观锁插件

在 MybatisPlusConfig 中注册 Bean

/** * 乐观锁插件 */ @Bean public OptimSEO靠我isticLockerInterceptor optimisticLockerInterceptor() { return new OptimisticLockerInterceptoSEO靠我r(); }

六、查询

1、查询

1.1通过多个id批量查询

完成了动态sql的foreach的功能

//多个id批量查询 @Test public void tSEO靠我estSelect1() {List<User> users = userMapper.selectBatchIds(Arrays.asList(1, 2, 3));System.out.printlSEO靠我n(users); }

1.2简单的条件查询

通过map封装查询条件

注意:map中的key对应数据库中的列名。如:数据库user_id,实体类是userId,这时map的key需要填写usSEO靠我er_id

//简单条件查询 @Test public void testSelect2() {Map<String, Object> columnMap = new HSEO靠我ashMap<>();columnMap.put("name","Jack");columnMap.put("age",20);List<User> users = userMapper.selectSEO靠我ByMap(columnMap);System.out.println(users); }

2、分页

2.1分页插件

MyBatis Plus自带分页插件,只要简单的配置即可实现分页功能

2.SEO靠我1.1添加分页插件

配置类中添加@Bean配置

/*** 分页插件*/ @Bean public PaginationInterceptor paginationInterSEO靠我ceptor() {return new PaginationInterceptor(); } 2.1.2测试selectPage分页

测试:最终通过page对象获取相关数据

//分页查询SEO靠我 @Test public void testSelectPage() {Page<User> page = new Page(1,3);Page<User> userSEO靠我Page = userMapper.selectPage(page, null);//返回对象得到分页所有数据long pages = userPage.getPages(); //总页数long cSEO靠我urrent = userPage.getCurrent(); //当前页List<User> records = userPage.getRecords(); //查询数据集合long total SEO靠我= userPage.getTotal(); //总记录数boolean hasNext = userPage.hasNext(); //下一页boolean hasPrevious = userPaSEO靠我ge.hasPrevious(); //上一页System.out.println(pages);System.out.println(current);System.out.println(recoSEO靠我rds);System.out.println(total);System.out.println(hasNext);System.out.println(hasPrevious); SEO靠我}

2.2测试selectMapsPage分页

当指定了特定的查询列时,希望分页结果列表只返回被查询的列,而不是很多null值

测试selectMapsPage分页:结果集是Map

@Test SEO靠我 public void testSelectMapsPage() { //Page不需要泛型 Page<Map<String, Object>> page = newSEO靠我Page<>(1, 5); Page<Map<String, Object>> pageParam = userMapper.selectMapsPage(page, null); SEO靠我 List<Map<String, Object>> records = pageParam.getRecords(); records.forEach(System.ouSEO靠我t::println); System.out.println(pageParam.getCurrent()); System.out.println(pageParaSEO靠我m.getPages()); System.out.println(pageParam.getSize()); System.out.println(pageParamSEO靠我.getTotal()); System.out.println(pageParam.hasNext()); System.out.println(pageParam.SEO靠我hasPrevious()); }

七、删除与逻辑删除

1、删除

1.1根据id删除记录

@Test public void testDeleteById(){int resuSEO靠我lt = userMapper.deleteById(5L); system.out.println(result); }

1.2批量删除

@Test puSEO靠我blic void testDeleteBatchIds() {int result = userMapper.deleteBatchIds(Arrays.asList(8, 9, 10)); SEO靠我 system.out.println(result); }

1.3简单条件删除

@Test public void testDeleteByMap() { SEO靠我 HashMap<String, Object> map = new HashMap<>(); map.put("name", "Helen"); map.puSEO靠我t("age", 18);int result = userMapper.deleteByMap(map); system.out.println(result); }SEO靠我

2、逻辑删除

2.1物理删除和逻辑删除

物理删除:真实删除,将对应数据从数据库中删除,之后查询不到此条被删除数据

逻辑删除:假删除,将对应数据中代表是否被删除字段状态修改为“被删除状态”,之后在数据库中仍旧SEO靠我能看到此条数据记录

逻辑删除的使用场景:

可以进行数据恢复

有关联数据,不便删除

2.2 逻辑删除实现流程

2.2.1数据库修改

添加 deleted字段

ALTERTABLE `user` ADD COLUMN SEO靠我`deleted` boolean DEFAULT false 2.2.2实体类修改

添加deleted 字段,并加上 @TableLogic 注解 (需要自动填充)

@TableLogic SEO靠我 @TableField(fill = FieldFill.INSERT)//添加的时候设置值(0填充 private Integer deleted; 2.2.3配置(可选)

appSEO靠我lication.properties 加入以下配置,此为默认值,如果你的默认值和mp默认的一样,该配置可无

mybatis-plus.global-config.db-config.logic-delSEO靠我ete-value=1 mybatis-plus.global-config.db-config.logic-not-delete-value=0 2.2.4 测试

测试后发现,数据并没SEO靠我有被删除,deleted字段的值由0变成了1

测试后分析打印的sql语句,是一条update

注意:被删除前,数据的deleted 字段的值必须是 0,才能被选取出来执行逻辑删除的操作

@Test SEO靠我 public void testLogicDelete() {int result = userMapper.deleteById(1L); system.out.printlSEO靠我n(result); } 2.2.5测试逻辑删除后的查询

MyBatis Plus中查询操作也会自动添加逻辑删除字段的判断

@Test public void testLoSEO靠我gicDeleteSelect() { List<User> users = userMapper.selectList(null); users.forEach(SySEO靠我stem.out::println); }

八、条件构造器和常用接口

1、wapper介绍

Wrapper : 条件构造抽象类,最顶端父类

AbstractWrapper : 用于查询条件封装SEO靠我,生成 sql 的 where 条件

QueryWrapper : 查询条件封装

UpdateWrapper : Update 条件封装

AbstractLambdaWrapper : 使用Lambda 语SEO靠我

LambdaQueryWrapper :用于Lambda语法使用的查询Wrapper

LambdaUpdateWrapper : Lambda 更新封装Wrapper @SpringBootTest SEO靠我 public class QueryWrapperTests { @Autowired private UserMapper userMapper; SEO靠我 }

2、测试用例

2.1 ge、gt、le、lt、isNull、isNotNull

@Test public void testQuery() { QueryWSEO靠我rapper<User>queryWrapper = newQueryWrapper<>(); queryWrapper.isNull("name").ge("age", 12).isSEO靠我NotNull("email");int result = userMapper.delete(queryWrapper); System.out.println("delete reSEO靠我turn count = " + result); }

2.2 eq、ne

注意:seletOne()返回的是一条实体记录,当出现多条时会报错

@Test public voSEO靠我id testSelectOne() { QueryWrapper<User>queryWrapper = newQueryWrapper<>(); queryWrapSEO靠我per.eq("name", "Tom"); Useruser = userMapper.selectOne(queryWrapper);//只能返回一条记录,多余一条则抛出异常 SEO靠我 System.out.println(user); }

2.3 between、notBetween

包含大小边界

@Test public void testSSEO靠我electCount() { QueryWrapper<User>queryWrapper = newQueryWrapper<>(); queryWrapper.beSEO靠我tween("age", 20, 30);Integer count = userMapper.selectCount(queryWrapper); //返回数据数量 System.oSEO靠我ut.println(count); }

2.4 like、notLike、likeLeft、likeRight

selectMaps()返回Map集合列表,通常配合select()使用

@SEO靠我Test public void testSelectMaps() { QueryWrapper<User>queryWrapper = newQueryWrapperSEO靠我<>(); queryWrapper.select("name", "age").like("name", "e").likeRight("email", "5"); SEO靠我List<Map<String, Object>>maps = userMapper.selectMaps(queryWrapper);//返回值是Map列表 maps.forEachSEO靠我(System.out::println); }

2.5 orderBy、orderByDesc、orderByAsc

@Test public void testSeleSEO靠我ctListOrderBy() { QueryWrapper<User>queryWrapper = newQueryWrapper<>(); queryWrapperSEO靠我.orderByDesc("age", "id"); List<User>users = userMapper.selectList(queryWrapper); usSEO靠我ers.forEach(System.out::println); }

3、查询方式

查询方式说明

setSqlSelect设置 SELECT 查询字段

whereWHERE 语句,拼接 + SEO靠我WHERE 条件

andAND 语句,拼接 + AND 字段=值

andNewAND 语句,拼接 + AND (字段=值)

orOR 语句,拼接 + OR 字段=值

orNewOR 语句,拼接 + OR (字SEO靠我段=值)

eq等于=

allEq基于 map 内容等于=

ne不等于<>

gt大于>

ge大于等于>=

lt小于<

le小于等于<=

like模糊查询 LIKE

notLike模糊查询 NOT LIKE

inIN 查询

nSEO靠我otInNOT IN 查询

isNullNULL 值查询

isNotNullIS NOT NULL

groupBy分组 GROUP BY

havingHAVING 关键词

orderBy排序 ORDER BY

oSEO靠我rderAscASC 排序 ORDER BY

orderDescDESC 排序 ORDER BY

existsEXISTS 条件语句

notExistsNOT EXISTS 条件语句

betweenBETWESEO靠我EN 条件语句

notBetweenNOT BETWEEN 条件语句

addFilter自由拼接 SQL

last拼接在最后,例如:last(“LIMIT 1”)
“SEO靠我”的新闻页面文章、图片、音频、视频等稿件均为自媒体人、第三方机构发布或转载。如稿件涉及版权等问题,请与 我们联系删除或处理,客服邮箱:html5sh@163.com,稿件内容仅为传递更多信息之目的,不代表本网观点,亦不代表本网站赞同 其观点或证实其内容的真实性。

网站备案号:浙ICP备17034767号-2