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

罗湖城网站建设厦门人才网官网登录

罗湖城网站建设,厦门人才网官网登录,六安建设部网站,wordpress手机网站模板制作MybatisPlus 快速入门入门案例常见注解常用配置 核心功能条件构造器自定义SQLService接口 快速入门 入门案例 使用MybatisPlus的基本步骤#xff1a; 1.引入MybatisPlus的起步依赖 MybatisPlus官方提供了starter#xff0c;其中集成了Mybatis和MybatisPlus的所有功能#… MybatisPlus 快速入门入门案例常见注解常用配置 核心功能条件构造器自定义SQLService接口 快速入门 入门案例 使用MybatisPlus的基本步骤 1.引入MybatisPlus的起步依赖 MybatisPlus官方提供了starter其中集成了Mybatis和MybatisPlus的所有功能并且实现了自动装配效果。因此可以使用MybatisPlus的starter代替Mybatis的starter。 pom.xml !--mybatisplus依赖-- dependencygroupIdcom.baomidou/groupIdartifactIdmybatis-plus-boot-starter/artifactIdversion3.5.3.1/version /dependency2.自定义的Mapper继承MybatisPlus提供的BaseMapper接口 public interface UserMapper extends BaseMapperUser { }3.在实体类上添加注解声明表信息 4.在application.yml中根据需要添加配置 注如果application.yml没有显示绿叶可以按照以下步骤进行添加 File -- Project Structure -- Facets -- “” Spring -- 右上角小绿叶 Customize Spring Boot -- 将项目中的application.yml添加进去即可 常见注解 MybatisPlus是如何获取实现CRUD的数据库信息的 默认以类名驼峰转下划线作为表名默认把名为id的字段作为主键默认把变量名驼峰转下划线作为表的字段名 MybatisPlus通过扫描实体类并基于反射获取实体类信息作为数据库表信息。 MybatisPlus中比较常用的几个注解如下 TableName用来指定表名 TableId用来指定表中的主键字段信息 IdType枚举 ①AUTO数据库自增长 ②INPUT通过set方法自行输入 ③ASSIGN_ID分配ID接口IdentifierGenerator的方法nextId来生成id TableField用来指定表中的普通字段信息 使用场景 ①成员变量名与数据库字段名不一致 ②成员变量名以is开头且是布尔值 ③成员变量名与数据库关键字冲突如“order”在TableField中要用转义字符括起来 ⑩成员变量不是数据库字段TableField(exist false) 常用配置 MyBatisPlus的配置项继承了MyBatis原生配置和一些自己特有的配置。 application.yml mybatis-plus:type-aliases-package: com.wmy.mp.domain.po # 别名扫描包mapper-locations: classpath*:/mapper/**/*.xml # Mapper.xml文件地址 默认值configuration:map-underscore-to-camel-case: true # 是否开启下划线和驼峰的映射cache-enabled: false # 是否开启二级缓存global-config # 全局配置 优先级低于局部的配置db-config:id-type: assign_id # id为雪花算法生成update-strategy: not_null # 更新策略只更新非空字段MybatisPlus官方文档 核心功能 条件构造器 MybatisPlus支持各种复杂的where条件可以满足日常开发的所有需求。在MybatisPlus中BaseMapper接口是用来提供增删改查功能的其中一些比较特殊的方法的参数都不再是简单的id而是一个Wrapper类型的参数所谓的Wrapper就是条件构造器用以构造复杂的sql语句。Wrapper并不是一个简单的类而是类似于Collection具备一个复杂的继承体系。 比如说 QueryWrapper就是在父类基础上拓展了select相关的功能允许构造SQL语句时能指定select哪些字段 UpdateWrapper就是在父类基础上拓展了set相关的功能它的setSql(boolean , String ) : UpdateWrapperT方法允许将set部分的字符串当做参数传递进去后边可以拼接到SQL语句中。 基于QueryWrapper的查询案例 需求 ①查询出名字中带o的存款大于等于1000元的人的id、username、info、balance字段。 SQL语句 SELECT id,username,info,balance FROM user WHERE username LIKE ? AND balance ?QueryWrapper查询UserMapperTest.java Test void testQueryWrapper(){//1.构件查询条件QueryWrapperUser wrapper new QueryWrapperUser().select(id, username, info, balance).like(username, o).ge(balance, 1000);//2.查询ListUser users userMapper.selectList(wrapper);users.forEach(System.out::println); }//或者 Test void testLambdaQueryWrapper(){//1.构件查询条件LambdaQueryWrapperUser wrapper new LambdaQueryWrapperUser().select(User::getId, User::getUsername, User::getInfo, User::getBalance).like(User::getUsername, o).ge(User::getBalance, 1000);//2.查询ListUser users userMapper.selectList(wrapper);users.forEach(System.out::println); }加粗样式 ②更新用户名为jack的用户的余额为2000。 SQL语句 UPDATE userSET balance 2000WHERE (username jack)QueryWrapper查询 Test void testUpdateByQueryWrapper() {//1.要更新的数据User user new User();user.setBalance(2000);//2.更新的条件QueryWrapperUser wrapper new QueryWrapperUser().eq(username, jack);//3.执行更新userMapper.update(user, wrapper); }基于UpdateWrapper的更新案例 需求 更新id为1,2,4的用户的余额扣200 SQL语句 UPDATE userSET balance balance - 200WHERE id in (1, 2, 4)UpdateWrapper查询UserMapperTest.java Test void testUpdateWrapper(){ListLong ids List.of(1L ,2L ,4L);UpdateWrapperUser wrapper new UpdateWrapperUser().setSql(balance balance - 200).in(id , ids);userMapper.update(null , wrapper); }小结 QueryWrapper和LambdaQueryWrapper通常用来构建select、delete、update的where条件部分UpdateWrapper和LambdaUpdateWrapper通常只有在set语句比较特殊才使用尽量使用LambdaQueryWrapper和LambdaUpdateWrapper避免硬编码 自定义SQL 从条件构造器的学习中可以看出虽然MybatisPlus提供了非常灵活的关于Where条件的SQL语句拼接方式但是它是在业务逻辑层完成的违背了企业开发的一些规范如果不使用的话自己在xml文件中编写完整的SQL语句又会很麻烦。因此我们可以利用MyBatisPlus的Wrapper来构建复杂的Where条件然后自定义SQL语句中剩下的部分。我们需要想一种办法把mp构建好的条件往下传递给mapper层在xml中最终实现SQL语句的组装。 步骤 1.基于Wrapper构建where条件 UserMapperTest.java Test void testCustomSqlUpdate() {//1.更新条件ListLong ids List.of(1L , 2L , 4l);int amount 200;//2.定义条件QueryWrapperUser wrapper new QueryWrapperUser().in(id , ids);//3.调用自定义SQL方法userMapper.updateBalanceByIds(wrapper, amount); }2.在mapper方法参数中用Param注解声明wrapper变量名称必须是ew UserMapper.java void updateBalanceByIds(Param(ew) QueryWrapperUser wrapper, Param(amount) int amount);3.自定义SQL并使用Wrapper条件 UserMapper.xml update idupdateBalanceByIdsUPDATE tb_user SET balance balance - #{amount} ${ew.customSqlSegment} /updateService接口 Service接口类似于BaseMapper接口包含了一些基本的增删改查的代码跟BaseMapper相比只多不少。 基本用法 自定义接口需要实现IService接口自定义实现类需要继承IService的实现类ServiceImpl。 IUserService.java public interface IUserService extends IServiceUser{ }UserServiceImpl.java Service public class UserServiceImpl extends IServiceImplUserMapper, User implements IUserService { }批量新增 IUserServiceTest.java //方式一普通for循环插入 提交了100000次网络请求 Test void testSaveOneByOne(){long b System.currentTimeMillis();for(int i 1; i 100000 ; i ){userService.save(builderUser(i));}long e System.currentTimeMillis();System.out.println(耗时: (e - b)); }//方式二IService的批量插入 每次批量插入1000条数据 插入100次即10万条数据 Test void testSaveBatch(){//1.准备一个容量为1000的集合ListUser list new ArrayList(1000);long b System.currentTimeMillis();for (int i 1; i 100000 ; i){//2.添加一个userlist.add(buildUser(i));//3.每1000条批量插入一次if (i % 1000 0){userService.saveBatch(list);//4.清空集合 准备下一批数据list.clear(); }} }方式二相较于方式一采用的是批处理的方式速度快了近十倍方拾贰需要向网络请求100次但是由于在预编译的过程中每次的1000条数据是被编译成了1000条SQL语句所以MySQL在执行的过程中就是逐条执行的所以方式二仍然有改进空间可以通过配置jdbc参数在application.yaml的url后面拼接上一个参数rewriteBatchedStatementstrue开启该参数之后相当于把100000条插入语句变成了一个包含了100000条插入值的语句只需要执行一次速度上会快很多这才是真正意义上的批处理。
http://www.hkea.cn/news/14488161/

相关文章:

  • 南阳千牛网站建设做亚马逊电商需要投资多少钱
  • 怎么做网站的推广深圳华强北手机城
  • 电商货源网站邢台关键词优化公司
  • 怎么建网站快捷方式网站建设crm
  • 柳州企业网站建设价格公司网站建设和推广
  • 网站维护费用明细电子商务网站建设与管理a
  • 公司手机网站建设价格python语言编程入门
  • 个人网站制作软件哪个好做装修效果图的网站有哪些
  • 专业嵌入式软件开发自己网站做seo
  • 动易网站默认密码郑州北环网站建设培训
  • 最好的网站推广新乡哪里有做网站的
  • 网站即将 模板湛江网站营销
  • 自适应网站怎样做移动适配大城怎么样做网站
  • 中国企业信用网站官网定制微信软件
  • 怎么做公司展示网站wordpress仿家居商城
  • 给网站做app安联建设集团股份公司网站
  • 法制网站建设问卷调查山东手机网站建设
  • 网站首页收录没了wordpress 公司主页
  • 做网站 花时间做网站首页多少钱
  • 台州网站建站服务哪家奿wordpress 目录 伪静态
  • 嘉兴港区建设局网站江西省住房与城乡建设厅网站
  • 大学生做社交网站有哪些天元建设集团有限公司东营分公司
  • 网站设计网站项目流程图天河区网站公司
  • 企业网站开发 外文文献网站建设上海公司
  • 网站开发包括网站的等过程个人工作室网上注册
  • 网站软文推广范文大数据营销的优缺点
  • 做购物网站需要什么服务器沈阳唐朝网络推广
  • 江津网站建设怎么样昆明企业网站设计
  • 北京建设银行网站田村wordpress速度插件
  • 如何做好网站需求分析西安营销策划推广公司