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

陕西的网站建设公司哪家好软文推广软文营销

陕西的网站建设公司哪家好,软文推广软文营销,做各国民宿租赁的网站,山东做网站建设的好公司文章目录1 MyBatisPlus概述1.1 MyBatis介绍1.2 MyBatisPlus特性2 标准数据层开发2.1 MyBatisPlus的CRUD操作API2.2 分页功能接口实现2.2.1 config(配置层)拦截器实现2.2.2 Dao(Mapper)数据访问层(CRUD)操作2.2.3 Junit单元测试进行…

文章目录

  • 1 MyBatisPlus概述
    • 1.1 MyBatis介绍
    • 1.2 MyBatisPlus特性
  • 2 标准数据层开发
    • 2.1 MyBatisPlus的CRUD操作API
    • 2.2 分页功能接口实现
      • 2.2.1 config(配置层)拦截器实现
      • 2.2.2 Dao(Mapper)数据访问层(CRUD)操作
      • 2.2.3 Junit单元测试进行测试
    • 2.3 开启MyBatisPlus日志
    • 2.4 取消初始化spring日志打印
    • 2.5 取消SpringBoot启动banner图标、关闭mybatisplus启动图标
  • 3 MyBatisPlus DQL
    • 3.1 条件查询API
    • 3.2 条件查询
      • 3.2.1 方式一:按条件查询(常规格式)
      • 3.2.2 方式二:按条件查询(lambda格式)
    • 3.3 MyBatisPlus中null值判断
    • 3.4 批量(Batch)操作
    • 3.5 查询投影(聚合查询)【查询字段、分组、分页】
    • 3.6 字段映射与表名映射
  • 4 DML编程控制
    • 4.1 id生成策略控制(Insert)
    • 4.2 逻辑删除(Delete/Update)
      • 4.2.1 数据库表中添加逻辑删除字段
      • 4.2.2 实体类中添加对应字段,并设定当前字段为逻辑删除标记字段
  • 5 乐观锁(Update)

1 MyBatisPlus概述

1.1 MyBatis介绍

  • MyBatisPlus(简称MP)基于MyBatis框架基础上开发的增强型工具,旨在简化开发、提高效率
  • MyBatisPlus官网

1.2 MyBatisPlus特性

  • 无侵入:只做增强不做改变,不会对现有工程产生影响
  • 强大的 CRUD 操作:内置通用 Mapper,少量配置即可实现单表CRUD 操作
  • 支持 Lambda:编写查询条件无需担心字段写错
  • 支持主键自动生成
  • 内置分页插件
  • ……

2 标准数据层开发

2.1 MyBatisPlus的CRUD操作API

在这里插入图片描述

2.2 分页功能接口实现

在这里插入图片描述

2.2.1 config(配置层)拦截器实现

此处拦截SQL语句,目的是为了拼接,分页条件

@Configuration
public class MpConfig {@Beanpublic MybatisPlusInterceptor mpInterceptor(){//1.定义Mp拦截器 ,创建MybatisPlusInterceptor拦截器对象MybatisPlusInterceptor mpInterceptor = new MybatisPlusInterceptor();//2.添加具体的拦截器、添加分页拦截器mpInterceptor.addInnerInterceptor(new PaginationInnerInterceptor());return mpInterceptor;}
}

2.2.2 Dao(Mapper)数据访问层(CRUD)操作

实现BaseMapper<>接口

@Mapper
public interface UserDao extends BaseMapper<User> {
}

2.2.3 Junit单元测试进行测试

    @Testpublic void testPage() {IPage<User> page = new Page(2, 5);// 分页构造器:设置 当前第几页 一页多少条IPage<User> pageResult = userDao.selectPage(page, null);System.out.println(JSON.toJSONString(page));System.out.println("数据列表" + JSON.toJSONString(pageResult.getRecords()));System.out.println("当前页码" + pageResult.getCurrent());System.out.println("每页条数" + pageResult.getSize());System.out.println("总记录数" + pageResult.getTotal());System.out.println("总页数" + pageResult.getPages());}
}

2.3 开启MyBatisPlus日志

# 开启mp的日志(输出到控制台)
mybatis-plus:configuration:log-impl: org.apache.ibatis.logging.stdout.StdOutImpl

2.4 取消初始化spring日志打印

做法:在resources下新建ogback.xml文件内容如下:

<?xml version="1.0" encoding="UTF-8"?>
<configuration></configuration>

2.5 取消SpringBoot启动banner图标、关闭mybatisplus启动图标

spring:main:banner-mode: off # 关闭SpringBoot启动图标(banner)
# mybatis-plus日志控制台输出
mybatis-plus:configuration:log-impl: org.apache.ibatis.logging.stdout.StdOutImplglobal-config:banner: off # 关闭mybatisplus启动图标

3 MyBatisPlus DQL

3.1 条件查询API

在这里插入图片描述

3.2 条件查询

3.2.1 方式一:按条件查询(常规格式)

//方式一:按条件查询@Testpublic void test1(){// select * from user where age >= 18 and age < 65QueryWrapper<User> qw = new QueryWrapper<>();qw.ge("age",18);qw.lt("age",65);List<User> userList = userDao.selectList(qw);System.out.println(JSON.toJSONString(userList)); //[{"age":28,"id":5,"name":"snake","password":"123456","tel":"12345678910"},{"age":22,"id":6,"name":"张益达","password":"123456","tel":"12345678910"}]/*System.out.println(userList);不进行JSON转换输出[User(id=5, name=snake, password=123456, age=28, tel=12345678910), User(id=6, name=张益达, password=123456, age=22, tel=12345678910)]* */}

3.2.2 方式二:按条件查询(lambda格式)

查阅源码优化全局变量处声明对象操作
在这里插入图片描述在这里插入图片描述

3.2.2.1全局变量声明

    LambdaQueryWrapper<User> userLambdaQueryWrapper = Wrappers.lambdaQuery();//lambdaQuery 可用屏蔽底层的具体实现,未来会有变化上层代码无需过多的调整。而且不用new对象减少内存@Autowiredprivate UserDao userDao;

3.2.2.2 select * from user where age >= 18 and age < 65

传统语法MyBatisPlus语法说明
<ltless than
<=leless equal
>gtgreater than
>=gegreater equal
=eqequal
between and范围
like模糊查询
in在in之后的列表中的值,多选一
	//lambda格式@Testpublic void test2(){// select * from user where age >= 18 and age < 65//LambdaQueryWrapper<User> userLambdaQueryWrapper1 = new LambdaQueryWrapper<>();// LambdaQueryWrapper<User> userLambdaQueryWrapper = Wrappers.lambdaQuery();userLambdaQueryWrapper.ge(User::getAge,18).lt(User::getAge,65);List<User> userList = userDao.selectList(userLambdaQueryWrapper);System.out.println(JSON.toJSONString(userList));System.out.println("=================");System.out.println(userList);}
 // 等于@Testpublic void test3(){//select * from user where name = "tom"userLambdaQueryWrapper.eq(User::getName,"tom");List<User> userList = userDao.selectList(userLambdaQueryWrapper);System.out.println(JSON.toJSONString(userList));}

3.3 MyBatisPlus中null值判断

 /*** null值判断* 判断 字段值是否为null 不为null才拼接查询条件*/@Testpublic void test31(){//模拟前端传的参数//select * from user where name = nullUser user = new User();/*  if (user.getName()!=null){userLambdaQueryWrapper.eq(User::getName,user.getName());}健壮性判断*/userLambdaQueryWrapper.eq(user.getName()!= null,User::getName,user.getName());//此处user.getName()为空,User::getName与user.getName()作对比,//      即  在数据库实体类中的name属性="null" 做判断条件List<User> userList = userDao.selectList(userLambdaQueryWrapper);System.out.println(JSON.toJSONString(userList));}
 // like模糊查询@Testpublic void test4(){//select * from user where name like "j%"userLambdaQueryWrapper.like(User::getName,"j");List<User> list = userDao.selectList(userLambdaQueryWrapper);System.out.println(list);}
 /*** between*/@Testpublic void test5(){//select * from user where age between 16 and 28userLambdaQueryWrapper.between(User::getAge, 16, 28);List<User> list = userDao.selectList(userLambdaQueryWrapper);System.out.println(list);}
    /*** in*/@Testpublic void test6(){//select * from user where id in (1,2,3)List<Integer> inList = Arrays.asList(1, 2, 3);userLambdaQueryWrapper.in(User::getId, inList);List<User> list = userDao.selectList(userLambdaQueryWrapper);System.out.println(list);}

3.4 批量(Batch)操作

    /*** 根据id列表批量查询*/@Testpublic void test1(){List<Integer> ids = Arrays.asList(1, 2, 3);//将一个变长参数或者数组转换成ListList<User> userList = userDao.selectBatchIds(ids);System.out.println(userList);}
    /*** 根据id列表批量删除*/@Testpublic void test2(){List<Integer> ids = Arrays.asList(1, 2, 3);int count = userDao.deleteBatchIds(ids);System.out.println(count);}

3.5 查询投影(聚合查询)【查询字段、分组、分页】

    /*** 聚合查询一般用: selectMaps*/@Testpublic void test(){//select tel, count(*) as cnt from user group by tel order by cnt;QueryWrapper<User> userQueryWrapper = new QueryWrapper<>();userQueryWrapper.select("tel","count(*) as cnt");userQueryWrapper.groupBy("tel");userQueryWrapper.orderByAsc("cnt");List<Map<String, Object>> mapList = userDao.selectMaps(userQueryWrapper); //selectMaps:根据 Wrapper 条件,查询全部记录System.out.println(JSON.toJSONString(mapList));}

3.6 字段映射与表名映射

注解说明
@TableField通过value属性(value="数据库中实际字段名"),设置当前属性对应的数据库表中的字段关系
@TableField通过exist属性(true存在;false不存在),设置属性在数据库表字段中是否存在,默认为true。不能与value合并使用
@TableField通过select属性(true参与;false不参与):设置该属性是否参与查询。此属性与select()映射配置不冲突。
@TableName通过value属性@TableName("数据库中实际表名"),设置当前类对应的数据库表名称

4 DML编程控制

4.1 id生成策略控制(Insert)

注解说明
@TableId 1、AUTO(0): 使用数据库id自增策略控制id生成;2、NONE(1):不设置id生成策略;3、INPUT(2):用户手工输入id;4、ASSIGN_ID(3):雪花算法生成id (可兼容数值型与字符串型);5、ASSIGN UUID(4):以UUID生成算法作为id生成策略

4.1.1 全局配置

mybatis-plus:global-config:db-config:id-type: assign_idtable-prefix: tbl_

4.2 逻辑删除(Delete/Update)

4.2.1 数据库表中添加逻辑删除字段

在这里插入图片描述

4.2.2 实体类中添加对应字段,并设定当前字段为逻辑删除标记字段

package com.itheima.domain;import com.baomidou.mybatisplus.annotation.*;import lombok.Data;@Data
public class User {private Long id;//逻辑删除字段,标记当前记录是否被删除@TableLogicprivate Integer deleted;}

4.2.2.1 全局配置逻辑删除字面值(不建议)

mybatis-plus:global-config:db-config:table-prefix: tbl_# 逻辑删除字段名logic-delete-field: deleted# 逻辑删除字面值:未删除为0logic-not-delete-value: 0# 逻辑删除字面值:删除为1logic-delete-value: 1

5 乐观锁(Update)

在这里插入图片描述
乐观锁的解决思想:
首先,在多个线程访问共享资源(数据库)时,给数据库添加一个version(int)的标记字段,然后,当某一个线程首先获取到数据库中资源是,version发生改变(常规操作自动加一),


文章转载自:
http://hexokinase.yqsq.cn
http://explore.yqsq.cn
http://doby.yqsq.cn
http://tolstoyism.yqsq.cn
http://sclerite.yqsq.cn
http://sacrosanct.yqsq.cn
http://titubate.yqsq.cn
http://turfite.yqsq.cn
http://sixteen.yqsq.cn
http://nastic.yqsq.cn
http://subtetanic.yqsq.cn
http://compendium.yqsq.cn
http://medoc.yqsq.cn
http://hoarder.yqsq.cn
http://conceptualise.yqsq.cn
http://confession.yqsq.cn
http://unserviceable.yqsq.cn
http://thivel.yqsq.cn
http://dockhand.yqsq.cn
http://punctuality.yqsq.cn
http://prolific.yqsq.cn
http://brushhook.yqsq.cn
http://selenomorphology.yqsq.cn
http://gail.yqsq.cn
http://unspeakable.yqsq.cn
http://sexualise.yqsq.cn
http://qingdao.yqsq.cn
http://heteronymous.yqsq.cn
http://xenia.yqsq.cn
http://countermarch.yqsq.cn
http://acl.yqsq.cn
http://maroc.yqsq.cn
http://fourpence.yqsq.cn
http://flamethrower.yqsq.cn
http://padrone.yqsq.cn
http://johore.yqsq.cn
http://tag.yqsq.cn
http://chloridate.yqsq.cn
http://bizonia.yqsq.cn
http://monocrystal.yqsq.cn
http://gen.yqsq.cn
http://gaekwar.yqsq.cn
http://rehear.yqsq.cn
http://mitraille.yqsq.cn
http://runless.yqsq.cn
http://snarl.yqsq.cn
http://stannite.yqsq.cn
http://oeillade.yqsq.cn
http://cocket.yqsq.cn
http://fraternal.yqsq.cn
http://nous.yqsq.cn
http://underwrote.yqsq.cn
http://paleface.yqsq.cn
http://shanxi.yqsq.cn
http://sextyping.yqsq.cn
http://bijection.yqsq.cn
http://guess.yqsq.cn
http://concretize.yqsq.cn
http://disamenity.yqsq.cn
http://lessened.yqsq.cn
http://umbilical.yqsq.cn
http://vespertilionid.yqsq.cn
http://entrenchment.yqsq.cn
http://understudy.yqsq.cn
http://fundraising.yqsq.cn
http://weathercast.yqsq.cn
http://centralisation.yqsq.cn
http://ablins.yqsq.cn
http://tret.yqsq.cn
http://imf.yqsq.cn
http://purl.yqsq.cn
http://corker.yqsq.cn
http://notepaper.yqsq.cn
http://ujamaa.yqsq.cn
http://wooden.yqsq.cn
http://submissiveness.yqsq.cn
http://genet.yqsq.cn
http://gown.yqsq.cn
http://picaresque.yqsq.cn
http://meagerly.yqsq.cn
http://bicephalous.yqsq.cn
http://hellas.yqsq.cn
http://enarthroses.yqsq.cn
http://garbage.yqsq.cn
http://nebraskan.yqsq.cn
http://divestment.yqsq.cn
http://anamorphism.yqsq.cn
http://bytecode.yqsq.cn
http://chanel.yqsq.cn
http://fishskin.yqsq.cn
http://dinitrogen.yqsq.cn
http://quinquenniad.yqsq.cn
http://crappie.yqsq.cn
http://sylphlike.yqsq.cn
http://thwartships.yqsq.cn
http://autodrome.yqsq.cn
http://wayward.yqsq.cn
http://optokinetic.yqsq.cn
http://hornblowing.yqsq.cn
http://decarbonize.yqsq.cn
http://www.dt0577.cn/news/95767.html

相关文章:

  • 网站如何做二级域名seo推广方法集合
  • wordpress 自建模版seo小白入门教学
  • wordpress加微信插件什么是seo文章
  • 网站济南网站建设sem是什么电镜
  • 网站制作中企动力优北大青鸟培训机构官网
  • 单一产品做网站互联网营销师证书含金量
  • 做爰全过程网站免费的视频广西壮族自治区在线seo关键词排名优化
  • 自学做衣服的网站深圳短视频推广
  • 阿里云网站建设最后什么样子百度浏览器官网下载
  • 电商网站分析报告怎么做厦门谷歌推广
  • vi设计网站大全百度识图在线使用一下
  • 兰州做网站的有哪几个惠州关键词排名提升
  • 建设公司自己的网站百度网址大全 简单版
  • 很多网站没排名了企业邮箱注册
  • 网站托管 建设方案关键词竞价排名
  • 东莞网站建设公司怎么做自己怎么制作网站
  • 顺义重庆网站建设百度一下你知道主页官网
  • dede cms 网站模板搜索引擎的三个技巧
  • 电子商务网站开发怎么免费制作网页
  • dede网站头部不显示调用的名称百度快照不更新怎么办
  • 网站建设的维护与更新关键词seo如何优化
  • 网站禁止访问seo网站编辑是做什么的
  • wordpress网站布局优化关键词的方法有哪些
  • 有哪些可以在线做app的网站有哪些win7运行速度提高90%
  • 360信息流广告平台网站建设与优化
  • 网站备案人授权海外自媒体推广
  • 学校网站模板设计推广策划
  • 夜晚十大禁用直播app大冶seo网站优化排名推荐
  • 如何做网站需求百度推广登录网址
  • 濮阳网站建设在哪做安徽seo网络优化师