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

吉林学校网站建设沈阳建信建设工程有限公司位置

吉林学校网站建设,沈阳建信建设工程有限公司位置,免费网站制作器,影视app源码目录 快速搭建环境 引入依赖 实现接口 常见注解 常见配置 核心功能 自定义SQL 批量新增 快速搭建环境 引入依赖 <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter</artifactId></dependency…

目录

快速搭建环境

引入依赖

实现接口

常见注解

常见配置

核心功能

自定义SQL

批量新增


快速搭建环境

引入依赖

        <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter</artifactId></dependency><dependency><groupId>com.mysql</groupId><artifactId>mysql-connector-j</artifactId><scope>runtime</scope></dependency><dependency><groupId>org.projectlombok</groupId><artifactId>lombok</artifactId><optional>true</optional></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-test</artifactId><scope>test</scope></dependency><dependency><groupId>com.baomidou</groupId><artifactId>mybatis-plus-boot-starter</artifactId><version>3.5.3.1</version></dependency><dependency><groupId>cn.hutool</groupId><artifactId>hutool-all</artifactId><version>5.8.11</version></dependency><dependency><groupId>com.github.xiaoymin</groupId><artifactId>knife4j-openapi2-spring-boot-starter</artifactId><version>4.1.0</version></dependency>

实现接口

自定义的service实现MybatisPlus提供的IService接口(泛型是实体类)

自定义的ServiceImpI实现MybatisPlus提供的IServiceImpI接口(泛型是实体类)

自定义的Mapper实现MybatisPlus提供的BaseMapper接口(泛型是实体类)

在在application.yaml中修改jdbc参数为你自己的数据库参数

spring:datasource:url: jdbc:mysql://127.0.0.1:3306/mp?useUnicode=true&characterEncoding=UTF-8&autoReconnect=true&serverTimezone=Asia/Shanghaidriver-class-name: com.mysql.cj.jdbc.Driverusername: rootpassword: 123456
logging:level:com.itheima: debugpattern:dateformat: HH:mm:ss
mybatis-plus:type-aliases-package: com.itheima.mp.domain.pomapper-locations: classpath*:mapper/**/*.xml

最后测试,可以成功集成MybatisPlus

常见注解

MybatisPlus是通过反射来推断出表的信息,从而生成SQL的。

  1. MybatisPlus会把PO实体的类名驼峰转下划线作为表名

  2. MybatisPlus会把PO实体的所有变量名驼峰转下划线作为表的字段名,并根据变量类型推断字段类型

  3. MybatisPlus会把名为id的字段作为主键

事实上,我们可以在建表的时候不遵循这些约定,可以通过一些注解来应用。

@TableName:表名注解,标识实体类对应的表,一般在表名和实体类名不相同下使用。

@TableId:主键注解,标识实体类中的主键字段。可以通过主键增长类型。

AUTO:利用数据库的id自增长

INPUT:手动生成id

ASSIGN_ID:雪花算法生成Long类型的全局唯一id,这是默认的ID策略

@TableField:普通字段注解。一般情况下我们并不需要给字段添加@TableField注解,一些特殊情况除外。

  1. 成员变量名与数据库字段名不一致
  2. 成员变量是以isXXX命名,按照JavaBean的规范,MybatisPlus识别字段时会把is去除,这就导致与数据库不符。
  3. 成员变量名与数据库一致,但是与数据库的关键字冲突。使用@TableField注解给字段名添加转义字符:``

常见配置

实体类的别名扫描包,全局id类型

mybatis-plus:type-aliases-package: com.itheima.mp.domain.po # 包下是实体类global-config:db-config:id-type: auto # 全局id类型为自增长

MyBatisPlus也支持手写SQL的,而mapper文件的读取地址可以自己配置

mybatis-plus:mapper-locations: "classpath*:/mapper/**/*.xml" # Mapper.xml文件地址,当前这个是默认值。

核心功能

MybatisPlus又提供了一套基于Lambda的Wrapper,包含两个:

LambdaQueryWrapper

LambdaUpdateWrapper

LambdaQueryWrapper:适用于需要动态构建查询条件的场景,特别是在查询条件复杂多变的情况下。利用 Lambda 表达式可以有效减少由于手写 SQL 或者条件字段字符串带来的错误风险。

LambdaUpdateWrapper:主要用于执行带有条件的更新操作,特别适合于那些需要根据特定条件修改记录的场合。与传统的更新方法相比,它能提供更强的灵活性和更高的安全性。

    @Testvoid testLambdaQueryWrapper(){//1.构建查询条件LambdaQueryWrapper<User> wrapper = new LambdaQueryWrapper<User>().select(User::getId,User::getUsername,User::getInfo,User::getBalance).like(User::getUsername,"o").ge(User::getBalance,1000);//2.查询List<User> users = userMapper.selectList(wrapper);users.forEach(System.out::println);}

自定义SQL

利用Wrapper生成查询条件,再结合Mapper.xml编写SQL。

批量新增

IService中的批量新增功能使用起来非常方便。

@Test
void testSaveBatch() {// 准备10万条数据List<User> list = new ArrayList<>(1000);long b = System.currentTimeMillis();for (int i = 1; i <= 100000; i++) {list.add(buildUser(i));// 每1000条批量插入一次if (i % 1000 == 0) {userService.saveBatch(list);list.clear();}}long e = System.currentTimeMillis();System.out.println("耗时:" + (e - b));
}

MySQL的客户端连接参数中有这样的一个参数:rewriteBatchedStatements。顾名思义,就是重写批处理的statement语句。

修改项目中的application.yml文件,在jdbc的url后面添加参数&rewriteBatchedStatements=true。

spring:datasource:url: jdbc:mysql://127.0.0.1:3306/mp?useUnicode=true&characterEncoding=UTF-8&autoReconnect=true&serverTimezone=Asia/Shanghai&rewriteBatchedStatements=truedriver-class-name: com.mysql.cj.jdbc.Driverusername: rootpassword: MySQL123

性能将大大提升


文章转载自:

http://fEVJLP5y.nftzn.cn
http://Ls1GU56O.nftzn.cn
http://hvZGq9OY.nftzn.cn
http://br4xRzWk.nftzn.cn
http://PCaYwpHM.nftzn.cn
http://oIf9hEKs.nftzn.cn
http://XZ8u7uyv.nftzn.cn
http://ngtYcHlK.nftzn.cn
http://kIc8usK3.nftzn.cn
http://mj6zGdBP.nftzn.cn
http://0oNEDNo5.nftzn.cn
http://LGUHlBhH.nftzn.cn
http://oX8GIcyZ.nftzn.cn
http://YWEph7az.nftzn.cn
http://rlETxTXs.nftzn.cn
http://oIhdzd5r.nftzn.cn
http://6BjwNOOF.nftzn.cn
http://XJN4LlmO.nftzn.cn
http://hAnhr5kZ.nftzn.cn
http://2JnVucAV.nftzn.cn
http://HCEuNtIc.nftzn.cn
http://aQvKr3kF.nftzn.cn
http://q0VCOM2J.nftzn.cn
http://MtYmyk6O.nftzn.cn
http://RqCRxFIO.nftzn.cn
http://E2JFW4eF.nftzn.cn
http://i8ouN6cG.nftzn.cn
http://UA1snhbX.nftzn.cn
http://D47IA3fH.nftzn.cn
http://Av5cFzlB.nftzn.cn
http://www.dtcms.com/wzjs/675439.html

相关文章:

  • 广州市网站公司adsl服务器建网站
  • 县区网站建设运行汇报罗湖网站建设
  • 班级优化大师官方网站微信小程序开发教程pdf
  • 怎样做销售水蜜桃网站怎么自己做论坛网站吗
  • 网站建设公司的方案米 建设网站
  • 少儿教育网站建设价格集团网站建设行业现状
  • 网站建设怎么链接表格seo优化公司如何做
  • 建行手机网站网址是多少钱校区网站建设
  • 网站开发过什么软件管理世界
  • 兼职 网站 小程序 建设优秀的网页
  • 南充网站建设多少钱制造网
  • 涡阳在北京做网站的名人旧房翻新装修哪家公司好
  • 个人网站如何进行网络推广wordpress添加主题设置功能
  • 我注册过的网站百度的网址是多少
  • 华强北网站建设公司wordpress主题自定义打不开
  • 做网站需要花钱吗iis wordpress 权限设置
  • 网站建设二级关键词什么意思做资源共享网站
  • 国土网站建设自查报告四川seo哪家好
  • 太原建站模板厂家网站注册要多少钱
  • 页面设计层级一般控制()层深圳网站seo 乐云践新
  • 网站建设实训心得体会300字济南网签查询系统
  • 2015做哪个网站能致富注册公司流程和费用最新
  • 中英文双语的网站怎么建设河南建设集团网站
  • 岐山县住房和城市建设局网站网站开发教育类
  • 网站开发过程的基本环节虚拟主机如何做网站
  • 全国建筑人才求职招聘网站1024永久免费拒绝收费
  • 那个网做网站便宜企业电子商务网站有哪些功能
  • 好看的网站模版姜堰哪里有网站建设的
  • 大学学科建设网站17一起做网站后台
  • 南和企业做网站网站建设基础策划