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

小城市网站建设网站服务器安全部署

小城市网站建设,网站服务器安全部署,网站开发的研究计划书,东莞新闻头条新闻今天文章目录 Mybatis Plus简介快速整合1,导入依赖2,yml文件中配置信息3,启动类上加上扫描mapper接口所在包的注解4,编写配置类5,实现自动注入通用字段接口(非必需)6,编写生成器工具类 使…

文章目录

  • Mybatis Plus简介
  • 快速整合
    • 1,导入依赖
    • 2,yml文件中配置信息
    • 3,启动类上加上扫描mapper接口所在包的注解
    • 4,编写配置类
    • 5,实现自动注入通用字段接口(非必需)
    • 6,编写生成器工具类
  • 使用方法API
    • 1,新增操作
    • 2,修改操作
    • 3,查询操作
      • 3,1 多条件查询
      • 3.2 排序
      • 3.3 分组
      • 3.4 分页
    • 4,删除操作

Mybatis Plus简介

MyBatisPlus是基于MyaBatis框架基础上开发的增强型工具,旨在简化开发,提高效率

MyBatis Plus特性:

特性说明
无入侵做增强不做改变,不会对现有工程产生影响
损耗小启动即会自动注入基本 CURD,性能基本无损耗,直接面向对象操作
强大的CRUD操作内置通用Mapper,少量配置即可实现单表CRUD操作
支持Lambda编写查询条件无序担心字段错误
内置分页插件方便高效
支持主键自动生成支持多达 4 种主键策略(内含分布式唯一 ID 生成器 - Sequence),可自由配置完美解决主键问题
支持自定义全局通用操作支持全局通用方法注入
内置性能分析插件可输出 Sql 语句及其执行时间,建议开发测试时启用该功能,能快速定位慢查询

快速整合

总结需要做的步骤,不拖拉

1,导入依赖
2,yml文件中配置信息
3,启动类上加上扫描mapper接口所在包的注解
4,编写配置类
5,实现自动注入通用字段接口(非必需)
6,编写Mybatis Plus的controller、service、entity、mapper、xml的生成器工具类

1,导入依赖

        <!--mybatis plus--><dependency><groupId>com.baomidou</groupId><artifactId>mybatis-plus-boot-starter</artifactId><version>${mybatis-plus.version}</version></dependency><!--mybatis plus生成器依赖--><dependency><groupId>com.baomidou</groupId><artifactId>mybatis-plus-generator</artifactId><version>${mybatis-plus.version}</version></dependency><!--velocity模版依赖--><dependency><groupId>org.apache.velocity</groupId><artifactId>velocity</artifactId><version>${velocity.version}</version><exclusions><exclusion><groupId>commons-collections</groupId><artifactId>commons-collections</artifactId></exclusion></exclusions></dependency>

2,yml文件中配置信息

mybatis-plus:# entity包路径,自行修改typeAliasesPackage: com.tunda.openai.model.entity# enum包路径,自行修改typeEnumsPackage: com.tunda.openai.common.enumsglobal-config:db-config:db-column-underline: true# 逻辑删及设置默认值(deleted字段是数据库自定义字段)logic-delete-field: deletedlogic-not-delete-value: 0logic-delete-value: 1configuration:mapUnderscoreToCamelCase: true# log-impl: org.apache.ibatis.logging.slf4j.Slf4jImpl #开启sql日志log-impl: org.apache.ibatis.logging.stdout.StdOutImpl # 控制台 打印sqldefault-enum-type-handler: com.baomidou.mybatisplus.extension.handlers.MybatisEnumTypeHandler

3,启动类上加上扫描mapper接口所在包的注解

@SpringBootApplication
@MapperScan(basePackages ="com.tunda.openai.mapper")
public class Application {public static void main(String[] args) {SpringApplication.run(Application.class,args);}
}

4,编写配置类

@Configuration
@EnableTransactionManagement
public class MybatisPlusConfig {@Beanpublic MybatisPlusInterceptor mybatisPlusInterceptor() {MybatisPlusInterceptor interceptor = new MybatisPlusInterceptor();PaginationInnerInterceptor pii = new PaginationInnerInterceptor();pii.setDbType(DbType.MYSQL);pii.setMaxLimit(500L);interceptor.addInnerInterceptor(pii);return interceptor;}@Beanpublic ConfigurationCustomizer configurationCustomizer() {return configuration -> configuration.setUseDeprecatedExecutor(false);}
}

5,实现自动注入通用字段接口(非必需)

@Component
public class MybatisMetaObjectHandler implements MetaObjectHandler {@Overridepublic void insertFill(MetaObject metaObject) {insertOrUpdateFill(metaObject, true);}@Overridepublic void updateFill(MetaObject metaObject) {insertOrUpdateFill(metaObject, false);}private void insertOrUpdateFill(MetaObject metaObject, boolean isInsert) {if (isInsert) {if (Objects.isNull(getFieldValByName("createTime",metaObject)))this.setFieldValByName("createTime", LocalDateTime.now(), metaObject);this.setFieldValByName("deleted", 0, metaObject);} else {if (Objects.isNull(getFieldValByName("updateTime",metaObject)))this.setFieldValByName("updateTime", LocalDateTime.now(), metaObject);}}
}

6,编写生成器工具类

具体说明:传送门->https://blog.csdn.net/qq_45399396/article/details/123986811

public class MybatisPlusGenerator {//生成文件所在项目路径private static String baseProjectPath = "D:\\generatorCode";//基本包名private static String basePackage = "com.tunda.openai";//作者(一般公司名简称)private static String authorName = "tunda";//要生成的表名,为空时生成所有表private static String[] tables = {"t_goods_info"};//table前缀private static String prefix = "";//数据库配置四要素private static String driverName = "com.mysql.jdbc.Driver";private static String url = "jdbc:mysql://129.139.254.38:3306/tunsdda_gpt?serverTimezone=GMT%2B8&zeroDateTimeBehavior=CONVERT_TO_NULL&useUnicode=true&characterEncoding=utf-8&useSSL=false";private static String username = "root";private static String password = "root";public static void main(String[] args) {// 代码生成器AutoGenerator mpg = new AutoGenerator();// 1、全局配置GlobalConfig gc = new GlobalConfig();//可以将生成得代码单独放在文件夹里,检查完没问题在手动将包复制到项目中gc.setOutputDir(baseProjectPath);gc.setAuthor(authorName);// 生成实体类的文档注解中作者名gc.setOpen(true);// 生成代码后自动打开生成目录文件gc.setFileOverride(true); // 是否覆盖原来生成的gc.setIdType(IdType.AUTO);// 指定生成的主键类型:自增长gc.setDateType(DateType.ONLY_DATE);gc.setActiveRecord(false);mpg.setGlobalConfig(gc);// 2、数据源配置DataSourceConfig dsc = new DataSourceConfig();dsc.setUrl(url);dsc.setDriverName(driverName);dsc.setUsername(username);dsc.setPassword(password);dsc.setDbType(DbType.MYSQL); // mysql数据库gc.setServiceName("%sService"); //去掉Service接口的首字母'I'dsc.setTypeConvert(new MySqlTypeConvert() {@Overridepublic IColumnType processTypeConvert(GlobalConfig globalConfig, TableField tableField) {return super.processTypeConvert(globalConfig, tableField);}});mpg.setDataSource(dsc);// 3、包配置PackageConfig pc = new PackageConfig();pc.setModuleName(null)// 生成的controller路径映射为一个"/",覆盖默认的"//".setParent(basePackage)// 生成controller,service,xml并设置路径。.setEntity("entity").setMapper("mapper").setService("service").setServiceImpl("service.impl").setController("controller");mpg.setPackageInfo(pc);// 5、策略配置StrategyConfig strategy = new StrategyConfig();strategy.setCapitalMode(true);// 开启全局大写命名strategy.setNaming(NamingStrategy.underline_to_camel);// 实体类名驼峰strategy.setColumnNaming(NamingStrategy.underline_to_camel);// 属性名驼峰strategy.setInclude(tables);// 设置要映射的表名注解@Tablestrategy.setSuperEntityClass(BaseEntity.class); // 预先定义一个BaseEntity类实现Serializable接口strategy.setEntityLombokModel(true); // 使用 lombokstrategy.setRestControllerStyle(true);// 开启 restful风格strategy.setEntityTableFieldAnnotationEnable(false);// 不生成实体类字段swagger类型注解,而是采用文档类型注解:/**xxx*/if (prefix != null) strategy.setTablePrefix(prefix);  // 表前缀if (ArrayUtils.isNotEmpty(tables)) strategy.setInclude(tables);  // 表名// 6、自动填充配置:非必须(自动加上注解)TableFill createTime = new TableFill("create_time", FieldFill.INSERT);TableFill updateTime = new TableFill("update_time", FieldFill.UPDATE);ArrayList<TableFill> tableFills = new ArrayList<>();tableFills.add(createTime);tableFills.add(updateTime);strategy.setTableFillList(tableFills);strategy.setLogicDeleteFieldName("deleted");// 自动加上逻辑删注解mpg.setStrategy(strategy);mpg.setTemplateEngine(new VelocityTemplateEngine());// 执行生成器mpg.execute();}}

注意事项:生成的代码当中,entiry实体类需要注意一下@EqualsAndHashCode,生成的时候,@EqualsAndHashCode(callSuper = true)。
但是大多数情况下,@EqualsAndHashCode(callSuper = false) 或者直接去掉这个注解也可以,所以这个的生成器生成的这个注解需要手动修改一下(改为false或者直接去掉这个注解)

到此为止,Springboot整合Mybatis Plus结束,接下来就是注意事项

1,问题一:mybatis-plus中@TableField.fill设置为FieldFill.UPDATE不生效

要想实现自动注入字段属性,必需实现第5步骤,也就是实现MetaObjectHandler接口,
其次,这种不生效的也存在两个注意的场景
场景一:使用原生sql语句,则注入字段属性不生效
场景二:使用update()方法时,需要调用两个参数的重载方法才有效,就这里需要注意一下。

使用方法API

1,新增操作

这里的this表示的是在service的实现类对象

this.saveOrUpdate(tGoodsInfo);

2,修改操作

在这里插入图片描述

通过Wappers的Lambda表达式来构造where后面的条件

在这里插入图片描述

3,查询操作

Mybatis Plus封装了丰富的查询操作api,尤其是单表操作的API,相比于SpringJPA来说,好处多多。

3,1 多条件查询

在这里插入图片描述
.
在这里插入图片描述
.
在这里插入图片描述
完整的示例如下:
在这里插入图片描述

3.2 排序

在这里插入图片描述

完整的示例如下:在这里插入图片描述

3.3 分组

在这里插入图片描述
完整的示例如下:
在这里插入图片描述

3.4 分页

在这里插入图片描述

在这里插入图片描述

完整的示例如下:
在这里插入图片描述

4,删除操作

在这里插入图片描述

http://www.yayakq.cn/news/65112/

相关文章:

  • 企业网站 域名注册wordpress 调用菜单
  • 网站空间与域名的关系360优化关键词
  • 响应式品牌网站wordpress重新打开多站点
  • 专业建站公司设计方案就业网站建设总结
  • phton可以做网站吗山东外贸公司排名
  • 网站开发 实名认证需要备案吗淘宝网站建设的目标是什么意思
  • 网站搜索框在线生成logo图标免费
  • 护肤品网站建设前的行业分析宁波海曙网站开发
  • cp网站建设建立简单的网站
  • 网站后台新闻不显示如何刷新网页设计制作模板及代码
  • 为什么百度搜不到我的网站公司名字大全参考2023
  • 苏州自助建站平台seo网站外链工具
  • 桥头网站建设公司开化网站建设公司
  • 网站备案的幕布尺寸wordpress小说文章发布插件
  • 莆田企业自助建站深圳高端画册设计
  • 网站怎么上传ftp网络项目设计方案
  • php用什么做网站服务器吗做网站的技术盏
  • 昆山建设监察大队网站为企业做网站要向谁索要资料
  • 专业手机移动网站设计吉首网站制作
  • 成品电影网站建设自己做一个网站难不难
  • 网站建设与管理计划书ppt模板免费下载 素材手机版
  • 网站开发一般用哪种语言网站中二级导航栏怎么做
  • 镇江网站推广优化个人博客网站搭建
  • 微信导航网站怎么做的百度怎么推广自己的信息
  • 德阳市做网站企业建站需要多少钱
  • 快速学制作网站为网站开发
  • 卖家如何做阿里巴巴国际网站西安网站群建设
  • 洛阳有做网站开发的吗久久建筑网是山东省的吗
  • 天津建设招聘信息网站网站名称设置
  • 做网站切图深圳网站建设深圳