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

装潢设计费用怎么算关键词优化难度分析

装潢设计费用怎么算,关键词优化难度分析,自助建站系统哪个好用,小程序开发适合的应用目录 一、快速使用二、CRUD简单使用三、常见注解3.1 TableName3.2 TableFiled3.3 TableId 四、条件构造器4.1 QueryWrapper4.2 UpdateWrapper4.3 LambdaQueryWrapper4.4 LambdaUpdateWrapper 五、自定义SQL 一、快速使用 MyBatis Plus官方文档:MyBatis Plus官方文档…

目录

  • 一、快速使用
  • 二、CRUD简单使用
  • 三、常见注解
    • 3.1 @TableName
    • 3.2 @TableFiled
    • 3.3 @TableId
  • 四、条件构造器
    • 4.1 QueryWrapper
    • 4.2 UpdateWrapper
    • 4.3 LambdaQueryWrapper
    • 4.4 LambdaUpdateWrapper
  • 五、自定义SQL

一、快速使用

MyBatis Plus官方文档:MyBatis Plus官方文档

添加依赖:官方文档都有。
Spring Boot 3的依赖:

<dependency><groupId>com.baomidou</groupId><artifactId>mybatis-plus-spring-boot3-starter</artifactId><version>3.5.10.1</version>
</dependency>

配置文件:

mybatis-plus:configuration:# MyBatis 配置map-underscore-to-camel-case: trueglobal-config:# 全局配置db-config:# 数据库配置id-type: auto

也要配置数据库:

spring:datasource:url: jdbc:mysql://127.0.0.1:3306/mybatis_test?characterEncoding=utf8&useSSL=falseusername: rootpassword: 1234driver-class-name: com.mysql.cj.jdbc.Driver

再写实体类,

package com.example.mybatisplus.demo.model;import lombok.Data;import java.util.Date;
@Data
public class UserInfo {private Integer id;private String username;private String password;private Byte age;private Byte gender;private String phone;private Byte deleteFlag;private Date createTime;private Date updateTime;}

写Mapper接口,要继承BaseMapper,泛型指代要操作的实体类。

package com.example.mybatisplus.demo.mapper;import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.example.mybatisplus.demo.model.UserInfo;
import org.apache.ibatis.annotations.Mapper;@Mapper
public interface UserInfoMapper extends BaseMapper<UserInfo> {
}

打印日志配置:

mybatis-plus:configuration:# 配置打印 MyBatis⽇志 log-impl: org.apache.ibatis.logging.stdout.StdOutImpl

二、CRUD简单使用

直接调用对应方法即可,方法名十分清晰。

  • 增:



  • 查:

三、常见注解

如果我们的数据库设计是按照蛇形标准来设计数据库名以及字段名的话,驼峰方式命名类属性的话,MyBatis Plus会自动帮我们映射,但是如果有不和规范无法映射的话,就需要使用注解来帮我们映射。

3.1 @TableName

@TableName是类注解,用来表示当前类对应的数据库表名。

通过错误日志可以看见mybatis-Plus是通过我们的类名去找表名的,当不符合规范就会找不到,但是加上@TableName注解讲明表名,就可以找到。

3.2 @TableFiled

@TableFiled注解这个是属性注解,跟@TableName作用一样,是用来对应当不符合规范命名时,对应类属性与数据库表字段的。

 @TableField("update_time")private Date updateTime;

3.3 @TableId

@TableId注解,是用来对应主键的。MyBatis - Plus默认主键是id,但是如果主键不是,就可以加上该注解表明这是主键对应的属性。还可以用 @TableId注解的type属性来设置当前是否是自增的。

    @TableId(value = "id",type = IdType.AUTO)private Integer id;

四、条件构造器

前面介绍的都是简单的CRUD,在实际的应⽤场景中,我们还需要使⽤更复杂的操作,MyBatisPlus也给我们提供了相应的⽀持。
MyBatis-Plus 提供了⼀套强⼤的条件构造器(Wrapper),⽤于构建复杂的数据库查询条件。Wrapper 类允许开发者以链式调⽤的⽅式构造查询条件,⽆需编写繁琐的 SQL 语句, 从⽽提⾼开发效率并减少 SQL注⼊的⻛险。

以下是主要的 Wrapper 类及其功能:

  • AbstractWrapper:这是⼀个抽象基类,提供了所有 Wrapper 类共有的⽅法和属性。详情看官网
  • QueryWrapper:⽤于构造查询条件,在AbstractWrapper的基础上拓展了⼀个select⽅法,允许指定查询字段。
  • UpdateWrapper: ⽤于构造更新条件,可以在更新数据时指定条件。
  • LambdaQueryWrapper:基于 Lambda 表达式的查询条件构造器,它通过 Lambda 表达式来引⽤实体类的属性,从⽽避免了硬编码字段名。
  • LambdaUpdateWrapper:基于 Lambda 表达式的更新条件构造器, 它允许你使⽤ Lambda 表达式来指定更新字段和条件,同样避免了硬编码字段名的问题。

介绍一些简写过的方法:

  • lt : “less than” 的缩写,表⽰⼩于.
  • le : "less than or equal to"的缩写, 表⽰⼩于等于
  • ge : “greater than or equal to” 的缩写, 表⽰⼤于等于.
  • gt : “greater than” 的缩写, 表⽰⼤于.
  • eq : “equals” 的缩写, 表⽰等于.
  • ne : “not equals” 的缩写, 表⽰不等于.

4.1 QueryWrapper

QueryWrapper并不只⽤于查询语句, ⽆论是修改, 删除, 查询,后面需要跟条件查询的时候都可以使⽤QueryWrapper来构建查询条件。

例如下面的sql语句:

select id,username, password, age, gender from `user_info` where age = 18 and username  like "%s%"

结果如下:

当我们使用QueryMapper对应的代码如下:

@Testpublic void selectByCondition() {QueryWrapper<UserInfo> queryWrapper = new QueryWrapper<>();queryWrapper.select(" id","username", "password", "age", "gender").eq("age",18).like("username","s");System.out.println(userInfoMapper.selectList(queryWrapper));}

结果:

默认情况下Mybatis-Plus会根据 @TableFiled ⽣成别名, 当指定了QueryWrapper的select属性后就仅仅是属性值⽽没有了别名. 查询出来的结果会对应不上
解决办法:

  1. ⾃⼰写⾃定义SQL
  2. 实体类名和字段名保持⼀致
  3. 不指定QueryWrapper的select字段
  4. 使⽤LambdaQueryWrapper实现

4.2 UpdateWrapper

完成下面的sql语句:

update user_info set delete_flag = 1, age = age + 10 where id in(1,2,3)

运行前数据:

使用UpdateWrapper的代码:

@Testpublic void updateByCondition() {UpdateWrapper<UserInfo> updateWrapper = new UpdateWrapper<>();updateWrapper.set("delete_flag",1).setSql("age = age + 10").in("id", List.of(1,2,3));userInfoMapper.update(updateWrapper);}

运行后结果:

4.3 LambdaQueryWrapper

LambdaQueryWrapper是基于Lambda表达式的条件构造器,它通过 Lambda 表达式来引⽤实体类的属性,从⽽避免了硬编码字段名。也提⾼了代码的可读性和可维护性。

查询下面的sql

select id,username, password, age, gender from `user_info` where age = 28 and username  like "%s%"

结果:

对应的使用LambdaQueryWrapper的代码:

    @Testpublic void selectByCondition2() {LambdaQueryWrapper<UserInfo> lambdaQueryWrapper = new LambdaQueryWrapper<>();lambdaQueryWrapper.select(UserInfo::getId, UserInfo::getUsername, UserInfo::getPassword,UserInfo::getAge,UserInfo::getGender, UserInfo::getDeleteFlag).eq(UserInfo::getAge,28).like(UserInfo::getUsername,"s");System.out.println(userInfoMapper.selectList(lambdaQueryWrapper));}

结果:

4.4 LambdaUpdateWrapper

update user_info set delete_flag = 1, age = age - 10 where id in(1,2,3)

运行前数据:

对应使用LambdaUpdateWrapper代码:

@Testpublic void updateByCondition2() {LambdaUpdateWrapper<UserInfo> lambdaUpdateWrapper = new LambdaUpdateWrapper<>();lambdaUpdateWrapper.set(UserInfo::getDeleteFlag, 1).setSql("age = age - 10").in(UserInfo::getId, List.of(1,2,3));userInfoMapper.update(lambdaUpdateWrapper);}

执行结果:

五、自定义SQL

官方文档,MyBatis Plus官方文档介绍自定义SQL如下:

示例一:
SQL语句:

select id,username, password, age from `user_info` where age = 18 or username  like "%s%"

结果:

代码:

@Select(" select id,username, password, age from user_info  ${ew.customSqlSegment}")List<UserInfo> select (@Param(Constants.WRAPPER) Wrapper<UserInfo> wrapper);

测试代码:

    @Testvoid testSelect() {QueryWrapper<UserInfo> queryWrapper = new QueryWrapper<>();queryWrapper.eq("age",18).or().like("username","s");userInfoMapper.select(queryWrapper);}

结果:

示例二:
执行的SQL语句:

update user_info set delete_flag = 0, age = age + 10 where id in(1,2,3)

原始数据:

xml代码:

    <update id="update">update user_info set delete_flag = 0, age = age + #{age} ${ew.customSqlSegment}</update>

测试代码:

    @Testvoid testUpdate() {UpdateWrapper<UserInfo> updateWrapper = new UpdateWrapper<>();updateWrapper.in("id", List.of(1,2,3));userInfoMapper.update(10,updateWrapper);}

结果:

http://www.dtcms.com/wzjs/165167.html

相关文章:

  • 爱网站查询关键词优化排名详细步骤
  • 合肥网页设计培训学校seo是指什么意思
  • 佛山cms建站系统百度服务中心电话
  • 做吉祥物设计看什么网站百度官方免费下载安装
  • 如何做网站banner搜索引擎seo如何优化
  • 设计师参考效果图网站橙子建站官网
  • 河北省建设环境备案网站谷歌官网首页
  • 景观做文本常用的网站2023新闻热点摘抄
  • 合肥哪家做网站不错昆明seo网站建设
  • 做网上卖酒的网站有几家百度广告竞价排名
  • 做购物网站安全吗aso100官网
  • 宁波做网站gs百度知道小程序
  • 电商网站如何做引流加盟网络营销推广公司
  • 做静态网站选用什么服务器深圳百度推广联系方式
  • 保定手机网站制作全网霸屏推广系统
  • 网站建设服务协议模板软文发布公司
  • 做网站自己买服务器吗百度站长平台链接
  • visual c 网站开发谷歌商店安卓版下载
  • 网站信任的体验如何做潍坊自动seo
  • 福田营销型网站建站推广外包短视频营销案例
  • 网站建设08中国百强县市榜单
  • 商丘做网站推广全达seo
  • 政务信息网站的建设的意义杭州seo
  • 哪儿可以学电商贺贵江seo教程
  • 摄影网站建设论文代运营公司是怎么运营的
  • 成都网站开发建设厦门网站外包
  • b站推广网站2024不用下载软件网站推广优化流程
  • 杭州做企业网站公司什么文案容易上热门
  • 关于域名和主机论坛的网站营销策略4p分析怎么写
  • 网站制作的一般步骤地推项目对接平台