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

西安公司网站设计域名系统

西安公司网站设计,域名系统,河北住房和城乡建设厅网站6,网站开发职业岗位前言 在前面的文章中荔枝梳理了MyBatis及相关的操作#xff0c;作为MyBatis的增强工具#xff0c;MyBatis-Plus无需再在xml中写sql语句#xff0c;在这篇文章中荔枝将梳理MyBatis-Plus的基础知识并基于SpringBoot梳理MyBatis-Plus给出的两个接口#xff1a;BaseMapper和ISe…前言 在前面的文章中荔枝梳理了MyBatis及相关的操作作为MyBatis的增强工具MyBatis-Plus无需再在xml中写sql语句在这篇文章中荔枝将梳理MyBatis-Plus的基础知识并基于SpringBoot梳理MyBatis-Plus给出的两个接口BaseMapper和IServer。希望对有需要的小伙伴有帮助。 文章目录 前言 一、基本概念 1.1 特性  1.2 支持数据库  1.3 结构 二、SpringBoot整合MP简单使用 2.1 基础环境配置 2.2 简单测试  2.3 自定义功能 三、通用Service 3.1 批量添加功能 3.2 常用注解 TableName TableId TableField TableLogic 逻辑删除 3.3 雪花算法 总结 一、基本概念 MyBatis-PIus简称MP是一个MyBatis的增强工具在MyBatis的基础上只做增强不做改变为简化开发、提高效率而生。MyBatis-Plus提供了通用的mapper和service可以在不编写任何SQL语句的情况下快速的实现对单表的CRUD、批量、逻辑删除、分页等操作。MyBatis-Plus官方是这么描述的我们的愿景是成为 MyBatis 最好的搭档就像魂斗罗中的 1P、2P基友搭配效率翻倍。说白了MP只是作为MyBatis开发中的一种增强工具提高开发效率。 1.1 特性  无侵入只做增强不做改变引入它不会对现有工程产生影响如丝般顺滑损耗小启动即会自动注入基本 CURD性能基本无损耗直接面向对象操作强大的 CRUD 操作内置通用 Mapper、通用 Service仅仅通过少量配置即可实现单表大部分 CRUD 操作更有强大的条件构造器满足各类使用需求支持 Lambda 形式调用通过 Lambda 表达式方便的编写各类查询条件无需再担心字段写错支持主键自动生成支持多达 4 种主键策略内含分布式唯一 ID 生成器 - Sequence可自由配置完美解决主键问题支持 ActiveRecord 模式支持 ActiveRecord 形式调用实体类只需继承 Model 类即可进行强大的 CRUD 操作支持自定义全局通用操作支持全局通用方法注入 Write once, use anywhere 内置代码生成器采用代码或者 Maven 插件可快速生成 Mapper 、 Model 、 Service 、 Controller 层代码支持模板引擎更有超多自定义配置等您来使用内置分页插件基于 MyBatis 物理分页开发者无需关心具体操作配置好插件之后写分页等同于普通 List 查询分页插件支持多种数据库支持 MySQL、MariaDB、Oracle、DB2、H2、HSQL、SQLite、Postgre、SQLServer 等多种数据库内置性能分析插件可输出 SQL 语句以及其执行时间建议开发测试时启用该功能能快速揪出慢查询内置全局拦截插件提供全表 delete 、 update 操作智能分析阻断也可自定义拦截规则预防误操作 1.2 支持数据库  任何能使用MyBatis进行 CRUD, 并且支持标准 SQL 的数据库都可以使用MyBatis-Plus。 1.3 结构 MyBatis-Plus实现功能是从扫描实体类开始通过反射提取实体类中的属性并分析实体类属性和数据库表中对应字段之间的关系并根据当前调用的方法生成相对应的SQL语句再把生成的SQL语句注入到MyBatis容器中。 二、SpringBoot整合MP简单使用 2.1 基础环境配置 pom.xml 这里mysql版本使用是SpringBoot的内置版本SpringBoot版本这里使用的是3.1.3。 ?xml version1.0 encodingUTF-8? project xmlnshttp://maven.apache.org/POM/4.0.0 xmlns:xsihttp://www.w3.org/2001/XMLSchema-instancexsi:schemaLocationhttp://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsdmodelVersion4.0.0/modelVersionparentgroupIdorg.springframework.boot/groupIdartifactIdspring-boot-starter-parent/artifactIdversion3.1.3/versionrelativePath/ !-- lookup parent from repository --/parentgroupIdcom.crj/groupIdartifactIdmybatisplus/artifactIdversion0.0.1-SNAPSHOT/versionnamemybatisplus/namedescriptionmybatisplus/descriptionpropertiesjava.version1.8/java.version/propertiesdependenciesdependencygroupIdorg.springframework.boot/groupIdartifactIdspring-boot-starter/artifactId/dependencydependencygroupIdorg.springframework.boot/groupIdartifactIdspring-boot-starter-test/artifactIdscopetest/scope/dependency!--mybatis plus启动器--dependencygroupIdcom.baomidou/groupIdartifactIdmybatis-plus-boot-starter/artifactIdversion3.5.1/version/dependency!--lombok用于简化实体类开发--dependencygroupIdorg.projectlombok/groupIdartifactIdlombok/artifactIdoptionaltrue/optional/dependency!--mysql驱动器--dependencygroupIdcom.mysql/groupIdartifactIdmysql-connector-j/artifactIdscoperuntime/scope/dependency/dependenciesbuildpluginsplugingroupIdorg.springframework.boot/groupIdartifactIdspring-boot-maven-plugin/artifactId/plugin/plugins/build/project配置数据库连接信息在SpringBoot中一般配置文件是通过application.xml或application.properties来配置数据源信息 application.xml spring: # 配置数据源信息datasource:#配置数据源类型type: com.zaxxer.hikari.HikariDataSource#配置连接数据库的各个信息driver-class-name: com.mysql.cj.jdbc.Driverurl: jdbc:mysql://localhost:3306/mybatis_plus?serverTimezoneGMT%2B8characterEncodingutf-8userSSLfalseusername: rootpassword: 123456#配置日志功能 mybatis-plus:configuration:log-impl: org.apache.ibatis.logging.stdout.StdOutImpl这里的mapper-location默认是在resource下的mapper目录下如果不进行配置就必须按照要求存放mapper配置文件。 2.2 简单测试  UserMapper.java package com.crj.mybatisplus_test.mapper;import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.crj.mybatisplus_test.pojo.User; import org.springframework.stereotype.Repository;Repository //继承MyBatis-Plus的BaseMapper接口 public interface UserMapper extends BaseMapperUser {}测试类 package com.crj.mybatisplus_test;import com.crj.mybatisplus_test.mapper.UserMapper; import com.crj.mybatisplus_test.pojo.User; import org.junit.jupiter.api.Test; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.test.context.SpringBootTest;import java.util.List;SpringBootTest public class MyBatisPlusTest {Autowiredprivate UserMapper userMapper;Testpublic void testSelect(){//通过MyBatis提供的一个条件构造器查询一个list集合若没有条件则可以设置为nullListUser list userMapper.selectList(null);list.forEach(System.out::println);} } 在主入口中开启mapper扫描功能 package com.crj.mybatisplus_test;import org.mybatis.spring.annotation.MapperScan; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication;SpringBootApplication //用来扫描指定包下的mapper接口 MapperScan(com.crj.mybatisplus_test.mapper) public class MyBatisPlusTestApplication {public static void main(String[] args) {SpringApplication.run(MyBatisPlusTestApplication.class, args);}} BaseMapper是MyBati-Plus中提供的一个接口通过继承该接口得到相应条件构造器提供了大量操作数据库的方法。 2.3 自定义功能 MyBatis-Plus作为MyBatis的一个增强工具除了其提供的操作数据库的方法之外还允许我们自定义SQL操作即允许我们使用MyBatis的方式来自定义操作数据库。 package com.crj.mybatisplus_test.mapper;import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.crj.mybatisplus_test.pojo.User; import org.springframework.stereotype.Repository;import java.util.Map; import java.util.Objects;Repository //继承MyBatis-Plus的BaseMapper接口 public interface UserMapper extends BaseMapperUser {MapString, Objects selectMapById(Long id); }?xml version1.0 encodingUTF-8 ? !DOCTYPE mapperPUBLIC -//mybatis.org//DTD Mapper 3.0//ENhttp://mybatis.org/dtd/mybatis-3-mapper.dtdmapper namespacecom.crj.mybatisplus_test.mapper.UserMapper!-- MapString, Objects selectMapById(Long id);--select idselectMapById resultTypemapselect * from user where id #{id}/select /mapper package com.crj.mybatisplus_test;import com.crj.mybatisplus_test.mapper.UserMapper; import com.crj.mybatisplus_test.pojo.User; import org.junit.jupiter.api.Test; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.test.context.SpringBootTest;import java.util.List; import java.util.Map; import java.util.Objects;SpringBootTest public class MyBatisPlusTest {Autowiredprivate UserMapper userMapper;Testpublic void testSelect(){MapString, Objects map userMapper.selectMapById(1L);System.out.println(map);} } 三、通用Service 3.1 批量添加功能 前面我们通过继承BaseMapper接口来使用MyBatis-Plus进而操作数据但是我们查看insert会发现没有批量添加的功能对此其实MyBatis-Plus提供了另一个API接口给我们使用 —— IService。通用 Service CRUD 封装IService接口进一步封装 CRUD 采用 get 查询单行、remove 删除、list 查询集合、page 分页前缀命名方式区分 Mapper 层避免混淆。 继承IService接口 package com.crj.mybatisplus_test.service;import com.baomidou.mybatisplus.extension.service.IService; import com.crj.mybatisplus_test.pojo.User; import org.springframework.stereotype.Service;Service public interface UserService extends IServiceUser {}自定义接口实现 package com.crj.mybatisplus_test.impl;import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.crj.mybatisplus_test.mapper.UserMapper; import com.crj.mybatisplus_test.pojo.User; import com.crj.mybatisplus_test.service.UserService;public class UserServerImpl extends ServiceImplUserMapper, User implements UserService {}测试类 package com.crj.mybatisplus_test;import com.crj.mybatisplus_test.pojo.User; import com.crj.mybatisplus_test.service.UserService; import org.junit.jupiter.api.Test; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.test.context.SpringBootTest;import java.util.ArrayList; import java.util.List;SpringBootTest public class MyBatisPlusServiceTest {Autowiredprivate UserService userService;Testpublic void testInsertAll(){ListUser list new ArrayList();for (int i 1;i10;i){User user new User();user.setName(lzddli);list.add(user);}userService.saveBatch(list);} }3.2 常用注解 TableName 当实体类和数据库表中的表名不一致时可以通过该注解来指定该实体类映射的数据库表的名字 package com.crj.mybatisplus_test.pojo;import com.baomidou.mybatisplus.annotation.TableName; import lombok.*;//使用Lombok简化开发加上无参构造方法、有参构造Data TableName(t_user) public class User {private Long id;private String name;private String age;private String email; }当然了解决该需求还可以通过全局配置的方式来实现table-prefix可以用来设置实体类所对应表的统一前缀。 #配置日志功能 mybatis-plus:configuration:log-impl: org.apache.ibatis.logging.stdout.StdOutImplglobal-config:db-config:table-prefix: t_ TableId 该注解可以将属性所对应的字段设置为主键从而在MyBatis-Plus中默认使用雪花算法来自动生成赋值。  value属性 而当属性名和字段名无法对应我们应该在TableId中通过设置value属性值来添加映射关系。比如当数据表中的字段是uid而属性设置为id时我们就可以借助该注解来实现映射关系。 TableId(uid) private Long id; type属性 TableId(value uid,type IdType.AUTO) private Long id; 属性值(主键生成策略) AUTO主键自动递增前提是数据库中的字段必须设置为自增ASSIGN_ID默认值使用的是MyBatis-Plus内置的雪花算法  主键生成策略的全局配置  TableField TableField可以用来指定属性所对应的字段名和TableId的区别是TableId指定的是和属性名不一致主键字段而TableField指定的是与实体类属性名不一致的普通字段。 TableLogic 逻辑删除 物理删除真实删除将对应数据从数据库中删除之后查询不到此条被删除的数据。逻辑删除假删除将对应数据中代表是否被删除字段的状态修改为“被删除状态”之后在数据库中仍引旧能看到此条数据记录使用场景可以进行数据恢复 TableLogic private Integer isDeleted; 当使用了逻辑删除之后不会直接删除而是变成一个修改的操作将当前注解的字段由0变成1标记的是删除状态。  3.3 雪花算法 雪花算法是由Twitter公布的分布式主键生成算法它能够保证不同表的主键的不重复性以及相同表的主键的有序性比较适合用在分布式架构里面。 核心思想 长度共64bit(一个long型)。首先是一个符号位1bit标识由于刊ong基本类型在va中是带符号的最高位是符号位正数是0负数是1所以id一般是正数最高位是0。41bit时间截毫秒级存储的是时间截的差值当前时间截-开始时间截结果约等于69.73年。10bit作为机器的1D(5个bit是数据中心5个bit的机器ID,可以部署在1024个节点)。12bit作为毫秒内的流水号意味着每个节点在每毫秒可以产生4096个ID)。  优点 整体上按照时间自增排序在整个分布式系统中不会产生ID碰撞。 总结 简单了解了MyBatis-Plus的两个接口和基本环境搭建和使用在接下来的文章中荔枝将会继续梳理有关接口和条件构造器的内容继续输出~~~ 今朝已然成为过去明日依然向往未来我是小荔枝在技术成长的路上与你相伴码文不易麻烦举起小爪爪点个赞吧哈哈哈~~~ 比心心♥~~~
http://www.sczhlp.com/news/207982/

相关文章:

  • 肥东建设网站火车头 wordpress 4.9
  • 有招聘网站策划的吗太原企业建站系统
  • 网站制作软件教程wordpress 菜单图标
  • 嘉兴网站建设模板网站网站推广百度优化
  • 推广网站挣钱能下短视频网站做牙
  • 三五互联做的网站怎么样网站开发经验总结与教训
  • dw网站建设素材上海信息科技有限公司软件网站开发
  • 校园类网站模板免费下载做网站语言服务器 空间
  • 江安县建设招标网站企业网站建设方案书 备案
  • 够完美网站建设网站建设专业公司
  • 网站建设gzzhixunwordpress搭建博客系统
  • 苏宁易购的网站建设wordpress给用户发送邮件
  • 通信管理局网站 备案个人网站建设案例教程
  • 英文网站策划如何做好推广引流
  • 建立网站服务的公司网站前端开发主要使用的工具有
  • 如何建设公司网站信息西安网站建设平台
  • 网站建设收费标准平台公司网站后台维护
  • 如何做分销型网站搭建网站后的网址
  • 安徽苏亚建设安装有限公司网站树形菜单的网站代码
  • 饿了么如何做网站推广当前互联网发展现状
  • 做奢侈品网站有哪些网站源码文件
  • 装饰公司营销网站模板亿唐为什么2005年做虚拟网站
  • 设计logo免费网站个人网站备案
  • 郴州网站建设公司平台枣阳建设局网站
  • 好看的个人网站设计上海人才网官网招聘肖瑶
  • 正品海外购网站有哪些怎么做直播网站超管
  • 讲述做网站的电影百度2023免费
  • 如何网上建设网站全景网站开发待遇
  • CSP-J/S 2025 第一轮游记