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

高端网站建设深圳wordpress添加微信扫码支付宝

高端网站建设深圳,wordpress添加微信扫码支付宝,个人博客网站实验报告,中装建设重组最新消息文章目录 主键生成策略介绍AUTO策略INPUT策略ASSIGN_ID策略ASSIGN_UUID策略NONE策略 MybatisPlus分页分页插件自定义分页插件 ActiveRecord模式SimpleQuery工具类SimpleQuery介绍listmapGroup 主键生成策略介绍 主键#xff1a;在数据库中#xff0c;主键通常用于快速查找和… 文章目录 主键生成策略介绍AUTO策略INPUT策略ASSIGN_ID策略ASSIGN_UUID策略NONE策略 MybatisPlus分页分页插件自定义分页插件 ActiveRecord模式SimpleQuery工具类SimpleQuery介绍listmapGroup 主键生成策略介绍 主键在数据库中主键通常用于快速查找和访问数据。主键是数据库表中的一列或一组列用于唯一标识表中的每一行数据。主键必须具有唯一性而且主键值不能为NULL。主键可以用来确保数据的完整性和一致性还可以用于建立表之间的关系。在MybatisPlus中提供了一个注解是TableId,该注解提供了各种的主键生成策略通过使用该注解来对于新增的数据指定主键生成策略。在新增数据的时候数据就会按照指定的主键生成策略来生成对应的主键。 AUTO策略 该策略为跟随数据库表的主键递增策略当使用AUTO策略自动递增来生成主键值时数据库主键的类型应设置为整数类型如INT、BIGINT等以便能够自动递增并确保唯一性。这是因为自动递增主键会自动为每个新插入的行生成一个唯一的整数值而整数类型可以更有效地存储和处理这些值。前提是数据库表的主键要设置为自增,此处要设置好下次递增的数字 实体类添加注解指定主键生成策略 TableId(type IdType.AUTO)private Long id;INPUT策略 对于INPUT策略数据库主键的类型可以是任何合适的数据类型根据具体的需求来确定。INPUT策略意味着主键的值是由用户手动输入或提供的而不是由数据库自动生成。因此主键可以是任何合法的数据类型如整数、字符串、日期等取决于业务需求和数据的特性。需要注意的是需要确保主键的值在表中是唯一的以维护数据的完整性和一致性。 TableId(type IdType.INPUT)private Long id;ASSIGN_ID策略 ASSIGN_ID策略是一种手动分配主键值的策略。主键的类型可以是任何合适的数据类型根据具体的需求来确定。如果不设置类型值默认则使用IdType.ASSIGN_ID策略自 3.3.0 3.3.0 3.3.0起。该策略会使用雪花算法自动生成主键ID主键类型为长或字符串分别对应的MySQL的表字段为BIGINT和VARCHAR需要注意的是需要确保主键的值在表中是唯一的以维护数据的完整性和一致性。 雪花算法是由一个64位的二进制组成的最终就是一个Long类型的数值。主要分为四部分存储: 位的符号位固定值为041位的时间戳10位的机器码包含5位机器id和5位服务id12位的序列号 TableId(type IdType.ASSIGN_ID)private Long id;ASSIGN_UUID策略 UUIDUniversally Unique Identifier全局唯一标识符定义为一个字符串主键采用32位数字组成编码采用16进制定义了在时间和空间都完全唯一的系统信息。UUID的编码规则 1~8位采用系统时间在系统时间上精确到毫秒级保证时间上的唯一性9~16位采用底层的IP地址在服务器集群中的唯一性17~24位采用当前对象的HashCode值在一个内部对象上的唯一性25~32位采用调用方法的一个随机数在一个对象内的毫秒级的唯一性。 使用UUID作为MySQL主键时主键类型应选择VARCHAR类型。UUID是一个36位的字符串由32位的十六进制数字和4个连字符组成。因此需要使用VARCHAR(36)来存储UUID。 TableId(type IdType.ASSIGN_UUID)private String id;NONE策略 NONE策略表示不指定主键生成策略当我们没有指定主键生成策略或者主键策略为NONE的时候跟随的是全局策略。全局默认配置id-type使用的是雪花算法。 TableId(type IdType.NONE)private Long id;MybatisPlus分页 分页插件 分页的本质就是需要设置一个拦截器通过拦截器拦截了SQL通过在SQL语句的结尾添加limit关键字来实现分页的效果。 配置的步骤 通过配置类来指定一个具体数据库的分页插件因为不同的数据库的方言不同具体生成的分页语句也会不同。 Configuration public class MybatisPlusConfig {Beanpublic MybatisPlusInterceptor mybatisPlusInterceptor() {MybatisPlusInterceptor interceptor new MybatisPlusInterceptor();interceptor.addInnerInterceptor(new PaginationInnerInterceptor(DbType.MYSQL));return interceptor;} }实现分页查询效果 Test void selectPage(){//1.创建QueryWrapper对象LambdaQueryWrapperUser lambdaQueryWrapper new LambdaQueryWrapper();//2.创建分页查询对象,指定当前页和每页显示条数IPageUser page new Page(1,3);//3.执行分页查询userMapper.selectPage(page, lambdaQueryWrapper);//4.查看分页查询的结果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()); }查询语句查看 自定义分页插件 在某些场景下需要自定义SQL语句来进行查询。接下来演示一下自定义SQL的分页操作 在UserMapper.xml映射配置文件中提供查询语句 ?xml version1.0 encodingUTF-8 ? !DOCTYPE mapperPUBLIC -//mybatis.org//DTD Mapper 3.0//ENhttp://mybatis.org/dtd/mybatis-3-mapper.dtd mapper namespacecom.powernode.mapper.UserMapperselect idselectByName resultTypecom.powernode.domain.Userselect * from powershop_user where name #{name}/select /mapper在Mapper接口中提供对应的方法方法中将IPage对象作为参数传入 Mapper public interface UserMapper extends BaseMapperUser {IPageUser selectByName(IPageUser page, String name); }实现分页查询效果 Test void selectPage2(){//1.创建分页查询对象,指定当前页和每页显示条数IPageUser page new Page(1,2);//2.执行分页查询userMapper.selectByName(page,Mary);//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()); }ActiveRecord模式 ActiveRecord(活动记录简称AR)是一种领域模型模式特点是一个模型类对应关系型数据库中的一个表而模型类的一个实例对应表中的一行记录。ActiveRecord 一直广受解释型动态语言 PHP 、 Ruby 等的喜爱通过围绕一个数据对象进行CRUD操作。而 Java 作为准静态编译型语言对于 ActiveRecord 往往只能感叹其优雅所以 MP 也在 AR 道路上进行了一定的探索仅仅需要让实体类继承 Model 类且实现主键指定方法即可开启 AR 之旅。 实现步骤 让实体类继承Model类Data AllArgsConstructor NoArgsConstructor public class User extends ModelUser {private Long id;private String name;private Integer age;private String email; }Model类中提供了一些增删改查方法可以直接使用实体类对象调用这些增删改查方法简化了操作的语法但底层依然是需要UserMapper所以持久层接口并不能省略 测试ActiveRecord模式的增删改查 添加数据 Test void activeRecordAdd(){User user new User();user.setName(wang);user.setAge(35);user.setEmail(wangpowernode.com);user.insert(); }删除数据 Test void activeRecordDelete(){User user new User();user.setId(8L);user.deleteById(); }修改数据 Test void activeRecordUpdate(){User user new User();user.setId(6L);user.setAge(50);user.updateById(); }查询数据 Test void activeRecordSelect(){User user new User();user.setId(6L);User result user.selectById();System.out.println(result); }SimpleQuery工具类 SimpleQuery介绍 SimpleQuery可以对selectList查询后的结果用Stream流进行了一些封装使其可以返回一些指定结果简洁了api的调用 list 演示基于字段封装集合 Test void testList(){//.list()方法执行查询并返回符合条件的用户列表//使用.list(User::getId)来指定返回的字段为IDListLong ids SimpleQuery.list(new LambdaQueryWrapperUser().eq(User::getName, Mary), User::getId);System.out.println(ids); }演示对于封装后的字段进行lambda操作 Test void testList2(){/* e - Optional.of(e.getName()).map(String::toLowerCase).ifPresent(e::setName)额外的逻辑处理即对返回的姓名进行转换Optional.of(e.getName())用于将姓名转换为Optional对象以便进行后续的操作。接着.map(String::toLowerCase)将姓名转换为小写形式。最后.ifPresent(e::setName)将转换后的小写姓名设置回User对象的姓名属性。*/ListString names SimpleQuery.list(new LambdaQueryWrapperUser().eq(User::getName, Mary),User::getName,e - Optional.of(e.getName()).map(String::toLowerCase).ifPresent(e::setName));System.out.println(names); }map 演示将所有的对象以id,实体的方式封装为Map集合 Test void testMap(){//将所有元素封装为Map形式MapLong, User idEntityMap SimpleQuery.keyMap(new LambdaQueryWrapper(), User::getId);System.out.println(idEntityMap); }演示将单个对象以id,实体的方式封装为Map集合 Test void testMap2(){//将单个元素封装为Map形式MapLong, User idEntityMap SimpleQuery.keyMap(new LambdaQueryWrapperUser().eq(User::getId,1L), User::getId);System.out.println(idEntityMap); }演示只想要id和name组成的map Test void testMap3(){//只想要只想要id和name组成的mapMapLong, String idNameMap SimpleQuery.map(new LambdaQueryWrapper(), User::getId, User::getName);System.out.println(idNameMap); }Group 演示分组效果 Test void testGroup(){MapString, ListUser nameUsersMap SimpleQuery.group(new LambdaQueryWrapper(), User::getName);System.out.println(nameUsersMap); }
http://www.tj-hxxt.cn/news/228020.html

相关文章:

  • 网站建设学习心得查询优惠券的网站如何做
  • 全国网站建设大赛橙云网站建设
  • 网站建设的步骤以及流程广州免费律师咨询
  • 游戏娱乐网站建设北京网站的优化
  • 如何设计网站建设引导页企业官网是什么意思
  • 北京检查站优化雄安智能网站建设电话
  • 做销售网站那家好企业小型网站要多少钱
  • 移动端购物网站建设目的上海app开发公司
  • php做网站需要mysql么网站首页被挂黑链
  • 定制企业网站建设网站页脚设计
  • 找做cad彩拼的网站创建购物平台需要什么
  • dede手机网站仿站无锡网站设
  • 做薪酬调查有哪些网站插件素材网站
  • 生小孩去什么网站做登记池州哪家做网站
  • 加强酒店网站建设的建议大连住房和建设局网站
  • 传播公司可以做门户网站吗中装建设股票行情
  • 三亚网站建设公司甘肃肃第八建设集团网站1
  • 为企业做网站建设优化小程序包年竞价漂亮企业网站源码
  • 天河做网站平台百度上海总部
  • 什么行业需要做网站公司申请注册流程
  • 烟台网站关键词推广哪个网站音乐做的最好的
  • 网站关于我们模板wordpress+软件+入门
  • 做网站商标分类海淀网站建设公司
  • 谷歌sem和seo区别网站seo的关键词排名怎么做的
  • 邯郸建设企业网站用微信怎么做商城网站吗
  • 招聘网站是做什麼的做网站是干嘛的
  • 京网站建设首选白龙马网络公司做网站价格
  • 外流网站建设杭州网站优化公司
  • 做网站的工作流程石家庄58同城
  • 中文旅游网站模板下载完全的图片宣传网站怎么做