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

网站建设 提供源码产品ui设计公司

网站建设 提供源码,产品ui设计公司,唐山企业网络推广培训,如何免费建立自己的网页前言 Mybatis Plus入门进阶#xff1a;特殊符号、动态条件、公共语句、关联查询、多租户插件 隐藏问题#xff1a;批量插入saveBatch 文章目录 前言注意点动态条件xml公共语句关联查询动态表名使用自定义函数主键生成策略saveBatch插件#xff1a;多租户TenantLineInnerInte…前言 Mybatis Plus入门进阶特殊符号、动态条件、公共语句、关联查询、多租户插件 隐藏问题批量插入saveBatch 文章目录 前言注意点动态条件xml公共语句关联查询动态表名使用自定义函数主键生成策略saveBatch插件多租户TenantLineInnerInterceptor 注意点 mapper.xml中大于、小于需要使用特殊符号 lt; 小于号 gt; 大于号 amp; 和 apos; 单引号 quot; 双引号 lt; 小于等于 gt; 大于等于如果需要拼接 br/ 字符串可以使用 CDATA 包裹起来让解析器将其视为文本而非标签 sql idexampleSql![CDATA[SELECT column1,column2,CONCAT(column3, br/, column4) AS combinedColumnFROM your_table]] /sql动态条件 使用if对参数值进行判断非空才查询 if testroleName ! null and roleName ! AND r.role_name like concat(%, #{roleName}, %) /if参考 多个条件判断 使用多个if if test /if if test /if使用when/otherwise choosewhen teststatus 2create_time DESC/whenotherwisecreate_time/otherwise /choosexml公共语句 定义 sql idxxxselect a from b /sql使用 select id yyyinclude refIdxxx/includewhere name mango /select关联查询 一对一 正常的查询sql定义返回的结果类型resultMap select idselectRoleAll resultMapSysRoleResultselect * from A left join B ... /selectresultMap typeSysRole idSysRoleResultid propertyroleId columnrole_id /result propertyroleName columnrole_name / /resultMap一对多 A表与B表关联查询其中A表与B表为一对多的关系则查询结果使用collection resultMap id xxx typecom.xxxxid columnid propertyid /collection propertyyyy ofTypezzzresult propertyno columnno//collection /resultMap列名重复问题 使用别名 分页存在问题不建议分页时使用 使用select 相关参考文章 Mybatis Plus内置的分页查询 collection分页问题总结 collection查询一对多分页数据的Bug collection分页问题 动态表名 当我们想要传的参数是表格的名称或是列名的时候#{}这种方式就不生效了需要使用${} 使用自定义函数 在xml中使用了数据库自定义的函数则需要带上模式名或者在当前的模式下创建函数 自定义的函数达梦数据库默认是在sysdba下 主键生成策略 TableId注解定义了主键生成的类型具体查看枚举类IdType.java AUTO 数据库 ID自增这种情况下将表中主键设置为自增否则没有设置主动设置id值进行插入时会报错 NONE 无状态该类型为未设置主键类型注解里等于跟随全局全局里默认 ASSIGN_ID注意这里官网文档有误 INPUT insert 前自行 set 主键值在采用IKeyGenerator类型的ID生成器时必须为INPUT ASSIGN_ID 分配ID (主键类型为number或string默认实现为雪花算法 ASSIGN_UUID 分配 UUID 详细参考 saveBatch 特性及问题 拼接sql如果集合中的某个实体和它的上/下一个不一样就不会拼接到insert中而是会单独执行插入语句所以多个实体不一样某个字段为null会拼出多个插入语句 事务事务回滚如果在某一个拼接语句中存在一条数据报错那么整批会报错如果上一批语句已经执行过了则事务不会回滚已经成功的仍旧是成功 解决方案 使用其他的批量插入this.baseMapper.insertBatchSomeColumn(list); 存在问题数据库字段默认值不生效需要手动对对象设值或者对实体字段设值默认如果为雪花算法可使用IdWorker 自定义批量插入 设置插入字段策略 局部字段忽略控制TableField(fill FieldFill.INSERT,insertStrategy FieldStrategy.IGNORED) 全局 mybatis-plus:global-config:db-config:insert-strategy: ignored参考 插件多租户TenantLineInnerInterceptor 处理逻辑类BaseMultiTableInnerInterceptor 忽略某个方法需要重写TenantLineInnerInterceptor中的beforeQuery 相关文章参考 引入及使用租户 忽略多租户隔离自定义注解(未验证) 新增租户配置信息 # 租户配置信息 tenant:# 是否开启租户模式enable: true# 需要排除的多租户的表exclusionTable: sys_config,sys_dict_data# 租户字段名称column: tenant_id对应增加配置类TenantProperties Configuration Getter public class TenantProperties {/*** 是否开启租户模式*/Value(${tenant.enable})private Boolean enable;/*** 多租户字段名称*/Value(${tenant.column})private String column;/*** 需要排除的多租户的表*/Value(${tenant.exclusionTable})private ListString exclusionTable; }注入重载的租户配置 Configuration RequiredArgsConstructor(onConstructor_ Autowired) AutoConfigureBefore(MyBatisPlusConfig.class) public class TenantConfig {private final TenantProperties tenantProperties;Beanpublic TenantLineInnerInterceptor tenantLineInnerInterceptor() {return new TenantLineInnerInterceptor(new TenantLineHandler() {Overridepublic Expression getTenantId() {try {String tenantId SecurityUtils.getLoginUser().getTenantId();if (tenantId ! null) {return new StringValue(tenantId);}} catch (ServiceException e) {e.printStackTrace();}return new NullValue();}Overridepublic String getTenantIdColumn() {return tenantProperties.getColumn();}Overridepublic boolean ignoreTable(String tableName) {return tenantProperties.getExclusionTable().stream().anyMatch((t) - t.equalsIgnoreCase(tableName));}Overridepublic boolean ignoreInsert(ListColumn columns, String tenantIdColumn) {return TenantLineHandler.super.ignoreInsert(columns, tenantIdColumn);}});} }Mybatis Plus配置增加租户配置 Beanpublic MybatisPlusInterceptor mybatisPlusInterceptor() {MybatisPlusInterceptor interceptor new MybatisPlusInterceptor();// 多租户插件if (tenantProperties.getEnable()) {interceptor.addInnerInterceptor(tenantLineInnerInterceptor);}return interceptor;}
http://www.pierceye.com/news/41629/

相关文章:

  • 禾天姿网站开发专门做汽车配件保养的网站
  • 怎样判断网站的seo信息好坏wordpress开发分类筛选
  • python做的网站漏洞展厅展示设计说明范文
  • 网站制作怎么报价ppt免费下载完整版免费下载
  • 丹阳建站推广管理国内网站 专做国外视频
  • 发布平台夫唯seo怎么样
  • 网站图片切换代码青岛网站设计多少钱
  • 菏泽市建设职工培训中心网站做网站公众号
  • 宁波建站湛江小程序商城运营方案
  • 石家庄网站优化推广企业 网站备案 法人
  • 深圳科技网站建设刚做的网站为什么百度搜不到
  • 怎样查看别人的网站是怎么建设绿色建筑网站
  • 国外经典手机网站设计写作网站哪个好用
  • 怎么搭建网站平台成都网站建设门户
  • 网站设计的创新点有什么平台可以发布推广信息
  • 青岛网站排名外包品牌推广方案范文
  • 深圳门窗在哪里网站做推广高新网站开发1年经验
  • 南京网站设计网站1营销型网站建设
  • 网站制作有什么好的介绍wordpress使用培训
  • 网站管理系统后台不能发布文章了株洲58同城网站建设电话
  • 网站外部链接如何建设wordpress 软件公司主题
  • 做网站用dw的多吗ui在线设计工具
  • 投资者网站建设青色网站欣赏
  • 企业网站开发教学潍坊网站外包
  • 青海省网站建设公司哪家好动态时钟html代码
  • 萝岗移动网站建设WordPress 升级 php
  • 楼盘网站建设案例邯郸市房价
  • 中国风网站欣赏wordpress shiftcv
  • 制作公司网站要多少费用呢管理咨询是做什么的
  • 宁波网站设计服务vps wordpress忘记密码