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

绍兴网站建站模板网站flash

绍兴网站建站模板,网站flash,跨境电商代运营公司十强,免费网站建站文章目录 1.MyBatis-plus基础1.1.mybatis-plus简介1.2.基本使用1.3.注解映射主键生成策略 1.4.命名转换问题1.5.关闭命名转换功能 2.BaseMapper核心接口 1.MyBatis-plus基础 1.1.mybatis-plus简介 MyBatis-Plus(简称 MP)是一个 MyBatis的增强工具&…

文章目录

  • 1.MyBatis-plus基础
    • 1.1.mybatis-plus简介
    • 1.2.基本使用
    • 1.3.注解映射
      • 主键生成策略
    • 1.4.命名转换问题
    • 1.5.关闭命名转换功能
  • 2.BaseMapper核心接口

1.MyBatis-plus基础

1.1.mybatis-plus简介

MyBatis-Plus(简称 MP)是一个 MyBatis的增强工具,在 MyBatis 的基础上只做增强不做改变,为简化开发、提高效率而生。

MyBatis-plus官网:https://baomidou.com/

特点:

  1. 润物无声:只做增强不做改变,引入它不会对现有工程产生影响,如丝般顺滑。
  2. 效率至上:只需简单配置,即可快速进行单表 CRUD 操作,从而节省大量时间。
  3. 丰富功能:代码生成、自动分页、逻辑删除、自动填充等功能一应俱全

1.2.基本使用

  1. 插入依赖
<dependency><groupId>com.baomidou</groupId><artifactId>mybatis-plus-spring-boot3-starter</artifactId><version>3.5.7</version>
</dependency>
  1. 配置文件,这里只配置了数据库,可以加上mybatis-plus加入相关配置,也可以单独创建一个java配置类,专门用于配置mybatis-plus
# DataSource Config
spring:datasource:driver-class-name: org.h2.Driverusername: rootpassword: testsql:init:schema-locations: classpath:db/schema-h2.sqldata-locations: classpath:db/data-h2.sql
  1. 编写实体类
@Data
public class User {private Long id;private String name;private Integer age;private String email;
}
  1. 编写Mapper接口类UserMapper
public interface UserMapper extends BaseMapper<User> {}

要想让spring知道这个bean,有俩种方式

  1. 在Mapper接口上加上@Mapper注解,自动注入(推荐)
  2. 在启动类添加@MapperScan扫描注解,扫描Mapper文件夹

1.3.注解映射

上面实例中,实体类名与表名,包括属性名与字段名都是完全一致的,所以mybatis-plus是可以识别的。但在实际开发中,很有可能会出现表名与实体类名不一致,或者属性名与字段名不一致的情况。此时就需要使用注解来进行映射。

● @TableName:表名注解,标识实体类对应的表。
● @TableId:主键注解(可以使用 type=IdType.AUTO 形式指定主键生成策略)
● @TableField:字段注解(非主键)

一般在代码中,实体类应该跟数据库中字段名保持一致,这是规范做法

主键生成策略

主键生成策略类型描述
AUTO数据库 ID 自增
INPUTinsert 前自行 set 主键值
ASSIGN_ID分配 ID(主键类型为 Number(Long 和 Integer)或 String)
ASSIGN_UUID分配 UUID,主键类型为 String

使用对应策略时,要注意数据库中主键属性与对应策略保持一致,否则无法应用,如果第一次Snowflake生成之后删掉后面应用策略的时候还是生成Snowflake,需要把数据库对应表删除重新建

1.4.命名转换问题

在实际开发中,项目中的类名、属性名,包括数据库中的表名、字段名,这些命名要严格遵守规范。一般来说:

● 在数据库设计中,由于数据库不区分大小写,所以都采用下划线命名法。
● 在java中,类名都采用帕斯卡命名法(大驼峰),属性名都采用驼峰命名法。

在配置文件加入:

# mybatis-plus配置
mybatis-plus:configuration:# 驼峰命名map-underscore-to-camel-case: true# 日志log-impl: org.apache.ibatis.logging.stdout.StdOutImplglobal-config:db-config:id-type: auto

可以开启mybatis-plus的驼峰命名
日志可以使运行时控制台打印输出的SQL语句

1.5.关闭命名转换功能

如果数据库中没有采用下划线命名法,那么可以在SpringBoot的application.yml配置文件中关闭此功能:

mybatis-plus:configuration:map-underscore-to-camel-case: false

默认开启

2.BaseMapper核心接口

/*** Mapper 继承该接口后,无需编写 mapper.xml 文件,即可获得CRUD功能*/
public interface BaseMapper<T> extends Mapper<T> {/*** 插入一条记录* @param entity 实体对象*/int insert(T entity);/*** 根据 ID 删除* @param id 主键ID*/int deleteById(Serializable id);/*** 根据实体(ID)删除* @param entity 实体对象*/int deleteById(T entity);/*** 根据 columnMap 条件,删除记录* @param columnMap 表字段 map 对象*/int deleteByMap(@Param(Constants.COLUMN_MAP) Map<String, Object> columnMap);/*** 根据 entity 条件,删除记录* @param queryWrapper 实体对象封装操作类(可以为 null,里面的 entity 用于生成 where 语句)*/int delete(@Param(Constants.WRAPPER) Wrapper<T> queryWrapper);/*** 删除(根据ID或实体 批量删除)* @param idList 主键ID列表或实体列表(不能为 null 以及 empty)*/int deleteBatchIds(@Param(Constants.COLLECTION) Collection<?> idList);/*** 根据 ID 修改* @param entity 实体对象*/int updateById(@Param(Constants.ENTITY) T entity);/*** 根据 whereEntity 条件,更新记录* @param entity        实体对象 (set 条件值,可以为 null)* @param updateWrapper 实体对象封装操作类(可以为 null,里面的 entity 用于生成 where 语句)*/int update(@Param(Constants.ENTITY) T entity, @Param(Constants.WRAPPER) Wrapper<T> updateWrapper);/*** 根据 ID 查询* @param id 主键ID*/T selectById(Serializable id);/*** 查询(根据ID 批量查询)* @param idList 主键ID列表(不能为 null 以及 empty)*/List<T> selectBatchIds(@Param(Constants.COLLECTION) Collection<? extends Serializable> idList);/*** 查询(根据 columnMap 条件)* @param columnMap 表字段 map 对象*/List<T> selectByMap(@Param(Constants.COLUMN_MAP) Map<String, Object> columnMap);/*** 根据 entity 条件,查询一条记录* <p>查询一条记录,例如 qw.last("limit 1") 限制取一条记录, 注意:多条数据会报异常</p>* @param queryWrapper 实体对象封装操作类(可以为 null)*/default T selectOne(@Param(Constants.WRAPPER) Wrapper<T> queryWrapper) {List<T> ts = this.selectList(queryWrapper);if (CollectionUtils.isNotEmpty(ts)) {if (ts.size() != 1) {throw ExceptionUtils.mpe("One record is expected, but the query result is multiple records");}return ts.get(0);}return null;}/*** 根据 Wrapper 条件,判断是否存在记录* @param queryWrapper 实体对象封装操作类* @return*/default boolean exists(Wrapper<T> queryWrapper) {Long count = this.selectCount(queryWrapper);return null != count && count > 0;}/*** 根据 Wrapper 条件,查询总记录数* @param queryWrapper 实体对象封装操作类(可以为 null)*/Long selectCount(@Param(Constants.WRAPPER) Wrapper<T> queryWrapper);/*** 根据 entity 条件,查询全部记录* @param queryWrapper 实体对象封装操作类(可以为 null)*/List<T> selectList(@Param(Constants.WRAPPER) Wrapper<T> queryWrapper);/*** 根据 Wrapper 条件,查询全部记录* @param queryWrapper 实体对象封装操作类(可以为 null)*/List<Map<String, Object>> selectMaps(@Param(Constants.WRAPPER) Wrapper<T> queryWrapper);/*** 根据 Wrapper 条件,查询全部记录* <p>注意: 只返回第一个字段的值</p>* @param queryWrapper 实体对象封装操作类(可以为 null)*/List<Object> selectObjs(@Param(Constants.WRAPPER) Wrapper<T> queryWrapper);/*** 根据 entity 条件,查询全部记录(并翻页)* @param page         分页查询条件(可以为 RowBounds.DEFAULT)* @param queryWrapper 实体对象封装操作类(可以为 null)*/<P extends IPage<T>> P selectPage(P page, @Param(Constants.WRAPPER) Wrapper<T> queryWrapper);/*** 根据 Wrapper 条件,查询全部记录(并翻页)* @param page         分页查询条件* @param queryWrapper 实体对象封装操作类*/<P extends IPage<Map<String, Object>>> P selectMapsPage(P page, @Param(Constants.WRAPPER) Wrapper<T> queryWrapper);
}

查看BaseMapper核心接口的源代码,这里详细说明了封装的增删改查方法

http://www.sczhlp.com/news/90978/

相关文章:

  • 科讯cms怎么做网站地图泰州网站建设定制
  • 哪些网站可以做淘宝店招做企业网站需要购什么
  • 营销型网站建设设计服务nginx 404 wordpress
  • 建设银行青海省分行招聘网站wordpress通栏
  • 湖南建设工程竣工备案表查询网站二手交易平台
  • 安庆商城网站开发网络营销策划的方法
  • 上海建筑设计公司网站做网站团队
  • wordpress等级seo外推
  • 网站搜索引擎优化主要方法福山区建设工程质量检测站网站
  • Flutter应用架构设计:基于Riverpod的状态管理最佳实践
  • P12502 「ROI 2025 Day1」天狼星的换班 「线段覆盖问题」
  • 动态规划DP问题详解,超全,思路全收集
  • SQL入门与实战
  • day05 课程
  • 学校网站设计的作用建立网站难吗
  • 网站建设佳木斯快速做网站公司报价
  • 企业门户网站云服务器配置要求小程序代码怎么获取
  • 夏天做啥网站能致富苏州市建设工程交易中心网站
  • 全国建设部网站官网会python做网站
  • ArkTS
  • 贵阳网站建设哪家网页布局的基本概念
  • 大型门户网站建设效果做网站多少钱大概
  • wordpress替换域名福州优化网站建设
  • 网站开发用例说明wordpress js手工合并
  • 乔拓云建站平台不是免费的东营网站建设方案
  • 个人手机网站建设汽车网站开发背景
  • 辅助网站怎么做的布吉做棋牌网站建设哪家公司便宜
  • 福田网站优化湖南网站搜索排名优化电话
  • 一文读懂基因检测PLM、体外诊断试剂PLM的功能、价值、解决方案
  • ai本地部署工具有哪些?新手入门AI推荐这几个