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

凡科建站微信小程序wordpress php sqlite

凡科建站微信小程序,wordpress php sqlite,网站优化排名哪家好,广州网站建设方案维护前言 Mybatis_plus 是在 mybatis 的基础上进行了增强,在 MyBatis 的基础上只做增强不做改变,为简化开发、提高效率而生。本文章只做简单的使用介绍,更加详细的内容大家可以参考官网。 下面是mybatis_plus 官网地址: mybatis_plu…

前言

Mybatis_plus 是在 mybatis 的基础上进行了增强,在 MyBatis 的基础上只做增强不做改变,为简化开发、提高效率而生。本文章只做简单的使用介绍,更加详细的内容大家可以参考官网。

下面是mybatis_plus 官网地址:
mybatis_plus 官网

配置

springboot 3 maven 需要导入的依赖:

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

这里要注意导入了 mybatis_plus 依赖之后就不用导入 mybatis 依赖了,避免依赖的冲突,上面已经说到 mybatis_plus 是 mybatis 的增强版,也就说说 mybatis_plus 其实内部已经配置了 mybatis 的依赖。

之后就要引入数据库的驱动依赖,这里以MySQL为例:

        <dependency><groupId>com.mysql</groupId><artifactId>mysql-connector-j</artifactId><scope>runtime</scope></dependency>

然后在 pom.xml 文件下,配置好数据库的相关信息:

spring:# 数据库连接配置datasource:url: jdbc:mysql://127.0.0.1:3306/数据库名称?characterEncoding=utf8&useSSL=false&allowPublicKeyRetrieval=trueusername: 用户名password: 密码driver-class-name: com.mysql.cj.jdbc.Driver

和 mybatis 一样,mybatis_plus 也可以进行下面的配置:

mybatis-plus:configuration:map-underscore-to-camel-case: true #配置驼峰自动转换log-impl: org.apache.ibatis.logging.stdout.StdOutImpl #打印sql语句

快速开始

和mybatis 一样,创建 mapper 文件夹,在里面创建数据库操作类,这里要注意 mybatis_plus 的类要继承 BaseMapper< T > ,这里面的泛型 T 填写你要操纵的类:

@Mapper
public interface BookInfoMapper extends BaseMapper<BookInfo> {}

之后我们就可以直接调用里面的方法了。

Wrapper

在 MyBatis-Plus 中,Wrapper 类是构建查询和更新条件的核心工具。以下是主要的 Wrapper 类及其功能:

AbstractWrapper:这是一个抽象基类,提供了所有 Wrapper 类共有的方法和属性。它定义了条件构造的基本逻辑,包括字段(column)、值(value)、操作符(condition)等。所有的 QueryWrapper、UpdateWrapper、LambdaQueryWrapper 和 LambdaUpdateWrapper 都继承自 AbstractWrapper。

QueryWrapper:专门用于构造查询条件,支持基本的等于、不等于、大于、小于等各种常见操作。它允许你以链式调用的方式添加多个查询条件,并且可以组合使用 and 和 or 逻辑。

UpdateWrapper:用于构造更新条件,可以在更新数据时指定条件。与 QueryWrapper 类似,它也支持链式调用和逻辑组合。使用 UpdateWrapper 可以在不创建实体对象的情况下,直接设置更新字段和条件。

LambdaQueryWrapper:这是一个基于 Lambda 表达式的查询条件构造器,它通过 Lambda 表达式来引用实体类的属性,从而避免了硬编码字段名。这种方式提高了代码的可读性和可维护性,尤其是在字段名可能发生变化的情况下。

LambdaUpdateWrapper:类似于 LambdaQueryWrapper,LambdaUpdateWrapper 是基于 Lambda 表达式的更新条件构造器。它允许你使用 Lambda 表达式来指定更新字段和条件,同样避免了硬编码字段名的问题。

三个注解

@TableName

用于类指定对应的表明,如果类名命名不规范,mybatis_plus 是找不到对应的表的

假设我们要操控的表为 book_info ,如果你设置的类名不规范,正常来说应该为 BookInfo,假设你的类名为 Bookinfo,这时候mybatis_plus 是找不到表的:
在这里插入图片描述

这时候我们可以使用 @TableName 来指定表名:

在这里插入图片描述

@TableField

如果类的属性命名不规范,mybatis_plus 还是找不到对应的字段:

假设字段名为 book_name , 属性命名为 bookname:
在这里插入图片描述

这时候就可以使用 @TableField 来指定字段名:
在这里插入图片描述

@TableId

mybatis_plus 是不知道表的主键的

如果你类属性命名不规范,无法映射为主键的话,可以使用 @TableId 来指定主键:
假设主键为 id ,但是属性为 bookId

    @TableId("id")private Integer boookId;

如果主键和属性可以映射,并且你的主键是会自增的话,要使用 @TableId(type = IdType.AUTO) 来说明该主键为自增。否则的话,mybaits_plus 是不知道你的主键是会自增的,那么它就会自己生成一个数值来进行填充。

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

如果主键和属性映射不了,并且主键还是一个自增的话,可以这样写:

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

QueryWrapper

示例:

    @Testvoid select2() {QueryWrapper<Bookinfo> wrapper = new QueryWrapper<>();wrapper.select("id, book_name, author, count").gt("count", 20);bookInfoMapper.selectList(wrapper).stream().forEach(System.out::println);}

由于直接使用 QueryWrapper 会写死字段,也就会产生硬编码的问题,所以我们可以使用 LambdaQueryWrapper 用过 Lamda 表达式来指定对应的字段名即可

示例:
可以通过 lambda() 方法将 QueryWrapper 转化为 LambdaQueryWrapper

    @Testvoid select3() {QueryWrapper<Bookinfo> wrapper = new QueryWrapper<>();wrapper.lambda().select(Bookinfo::getId, Bookinfo::getBookname, Bookinfo::getAuthor, Bookinfo::getCount).gt(Bookinfo::getCount, 20);bookInfoMapper.selectList(wrapper).stream().forEach(System.out::println);}
    @Testvoid select4() {LambdaQueryWrapper<Bookinfo> wrapper = new LambdaQueryWrapper<>();wrapper.select(Bookinfo::getId, Bookinfo::getBookname, Bookinfo::getAuthor, Bookinfo::getCount).gt(Bookinfo::getCount, 20);bookInfoMapper.selectList(wrapper).stream().forEach(System.out::println);}

UpdateWrapper

示例:

    @Testvoid select4() {UpdateWrapper<Bookinfo> wrapper = new UpdateWrapper<>();wrapper.set("book_name", "mybatis_plus").set("author","people").set("count",45).in("id", 41);bookInfoMapper.update(wrapper);}

当然也可以使用 Lambda() 方法,使用 LambdaUpdateWrapper:

    @Testvoid select5() {UpdateWrapper<Bookinfo> wrapper = new UpdateWrapper<>();wrapper.lambda().set(Bookinfo::getBookname, "mybatis_plus").set(Bookinfo::getAuthor,"people").set(Bookinfo::getCount,45).in(Bookinfo::getId, 40);bookInfoMapper.update(wrapper);}

或者直接使用LambdaUpdateWrapper

@Testvoid select6() {LambdaUpdateWrapper<Bookinfo> wrapper = new LambdaUpdateWrapper<>();wrapper.set(Bookinfo::getBookname, "mybatis_plus").set(Bookinfo::getAuthor,"people").set(Bookinfo::getCount,45).in(Bookinfo::getId, 40);bookInfoMapper.update(wrapper);}

自定义 SQL

我们可以正常使用 mybatis 定义sql 语句的方式,使用 @Select、@Update、@Delete、@Insert 或者使用 xml 的方式来定义 sql

当然你也可以使用 Wrapper 的条件:

参数命名:在自定义 SQL 时,传递 Wrapper 对象作为参数时,参数名必须为 ew,或者使用注解 @Param(Constants.WRAPPER) 明确指定参数为 Wrapper 对象。
使用 ${ew.customSqlSegment}:在 SQL 语句中,使用 ${ew.customSqlSegment} 来引用 Wrapper 对象生成的 SQL 片段。
不支持基于 entity 的 where 语句:自定义 SQL 时,Wrapper 对象不会基于实体类自动生成 where 子句,你需要手动编写完整的 SQL 语句。

示例:

@Mapper
public interface BookInfoMapper extends BaseMapper<Bookinfo> {@Select("select * from book_info ${ew.customSqlSegment}")List<Bookinfo> selectByIdAndBookName(@Param(Constants.WRAPPER) Wrapper<Bookinfo> wrapper);
}
    @Testvoid selectByBokNamwAndAuthor() {QueryWrapper<Bookinfo> wrapper = new QueryWrapper<>();wrapper.in("id", List.of(9, 28)).like("book_name","图书一号");bookInfoMapper.selectByIdAndBookName(wrapper).stream().forEach(System.out::println);}
http://www.dtcms.com/a/404251.html

相关文章:

  • 济南建设工程交易中心网站上海专业网站建设
  • 探究ContentProvider(一)
  • h5网站开发模板搜索引擎优化包括哪些内容
  • VMware+RockyLinux+ikuai+docker+cri-docker+k8s 自用 实践笔记(一)
  • 做网站个人怎么签合同iis怎么加载网站
  • 深圳荷坳网站建设公司wordpress文章多个分类显示不出来
  • 拼多多网站首页套模板做网站流程
  • 字符串及正则表达式
  • 成都公司做网站多少钱马云是做网站的
  • 如何将自己做的网站江门网站制作报价
  • tensorrt安装 2025
  • 营销型企业网站建设方案旅游网站的网页设计
  • 医疗养生管理系统(AI问答、WebSocket及时通讯、Echarts图形化分析)
  • D触发器、JK触发器以及单稳态触发器、非稳态多谐振荡器在 XPU 设计中的使用情况
  • 没有网站可以做seo吴忠市建设局官方网站
  • 网站首页布局设计教程辽宁建设科技信息网网站
  • 纯静态网站品牌建设和品牌打造对企业的意义
  • 企业经营不是赌短期
  • 合肥市做网站的公司有哪些中国字体设计网站
  • vue 使用leaflet加载天地图
  • 网站做宣传网站建设钟振森
  • 怎么选择做网站的公司网店推广发展趋势有哪些
  • 做网站是如果盈利的河南 网站建设
  • 3g手机网站源码国外模板wordpress
  • 纯文字网站设计网站做备案关停会显示什么
  • 贵阳seo网站推广技巧新手做网站做那个
  • JVM 的垃圾处理机制
  • 马克杯网站开发做淘宝客需要自己建网站吗
  • 广州网站建设 推广公司哪家好手机网站制作器
  • 本地使用 Git 向 Gitee 推送项目的全过程、涉及的命令以及每个命令的作用