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

山东查询网站备案广告艺术设计专业介绍

山东查询网站备案,广告艺术设计专业介绍,长沙网站运营外包公司,保定高端网站建设文章目录 场景官方插件源码解析项目细节小结 场景 在许多业务场景下,需要对tkMapper的功能进行增强,需要用到批量新增和批量更新(这里是唯一主键去更新的),许多论文博客自己写的看起来并不行,我们这里就采…

文章目录

    • 场景
    • 官方插件
    • 源码解析
    • 项目细节
    • 小结

场景

在许多业务场景下,需要对tkMapper的功能进行增强,需要用到批量新增和批量更新(这里是唯一主键去更新的),许多论文博客自己写的看起来并不行,我们这里就采用官方的模式,一次跑通

官方插件

这里是我通过中央仓库发现的一个宝库,平常对额外功能的增强需要自己常在中央仓库去逛逛看。

依赖地址:

<dependency><groupId>tk.mybatis</groupId><artifactId>mapper-spring-boot-starter</artifactId><version>4.2.3</version>
</dependency>
<dependency><groupId>tk.mybatis</groupId><artifactId>mapper-extra</artifactId><version>4.2.3</version>
</dependency>

starter是启动器,extra则是扩展插件,里面就有我们所需的功能

源码解析

我们来看看官方作者的实现方式到底是什么,看看这个具体的provider的实现原理,其实底层就是foreach

package tk.mybatis.mapper.additional.update.batch;import java.util.List;
import org.apache.ibatis.annotations.Param;
import org.apache.ibatis.annotations.UpdateProvider;
import tk.mybatis.mapper.annotation.RegisterMapper;@RegisterMapper
public interface BatchUpdateMapper<T> {@UpdateProvider(type = BatchUpdateProvider.class,method = "dynamicSQL")void batchUpdate(@Param("list") List<? extends T> recordList);
}
package tk.mybatis.mapper.additional.update.batch;import org.apache.ibatis.mapping.MappedStatement;
import tk.mybatis.mapper.mapperhelper.MapperHelper;
import tk.mybatis.mapper.mapperhelper.MapperTemplate;
import tk.mybatis.mapper.mapperhelper.SqlHelper;public class BatchUpdateProvider extends MapperTemplate {public BatchUpdateProvider(Class<?> mapperClass, MapperHelper mapperHelper) {super(mapperClass, mapperHelper);}public String batchUpdate(MappedStatement ms) {Class<?> entityClass = this.getEntityClass(ms);StringBuilder sql = new StringBuilder();sql.append("<foreach collection=\"list\" item=\"record\" separator=\";\" >");sql.append(SqlHelper.updateTable(entityClass, this.tableName(entityClass)));sql.append(SqlHelper.updateSetColumns(entityClass, "record", false, false));sql.append(SqlHelper.wherePKColumns(entityClass, "record", true));sql.append("</foreach>");return sql.toString();}public String batchUpdateSelective(MappedStatement ms) {Class<?> entityClass = this.getEntityClass(ms);StringBuilder sql = new StringBuilder();sql.append("<foreach collection=\"list\" item=\"record\" separator=\";\" >");sql.append(SqlHelper.updateTable(entityClass, this.tableName(entityClass)));sql.append(SqlHelper.updateSetColumns(entityClass, "record", true, this.isNotEmpty()));sql.append(SqlHelper.wherePKColumns(entityClass, "record", true));sql.append("</foreach>");return sql.toString();}
}

项目细节

我们通常在自己的项目,都要所有的mapper都是继承我们自定义的BaseMapper,这里我也给上我常用的,后续要扩展功能,只要在BaseMapper上扩展即可

import tk.mybatis.mapper.additional.idlist.IdListMapper;
import tk.mybatis.mapper.additional.update.batch.BatchUpdateMapper;
import tk.mybatis.mapper.annotation.RegisterMapper;
import tk.mybatis.mapper.common.IdsMapper;
import tk.mybatis.mapper.common.Mapper;
import tk.mybatis.mapper.common.special.InsertListMapper;/*** BaseMapper* TIP:basePackage的属性值 不能包含通用mapper所在的包,所以不能放在./mapper下,启动会报错** @param <T>*/
@RegisterMapper
public interface BaseMapper<T> extends Mapper<T>, IdListMapper<T, Long>, IdsMapper<T>, InsertListMapper<T>, BatchUpdateMapper<T> {}

小结

希望能够帮到你,总之我知道要实现的什么功能最好去看看作者的作品

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

相关文章:

  • 希望小学学校网站建设方案网页制作中的网站维护
  • 建行赤峰市分行 - 欢迎访问中国建设银行网站积分支付 WordPress
  • 石家庄网站推广排名二手网站建设模块
  • 阳光家园广州网站网址龙门惠州网站建设
  • seo建站营销种植类网站模板
  • 杭州网站建设app自己网站如何做关键词排名
  • 那些做环保网站的好处做ppt的模板的网站有哪些内容
  • 织梦汽车网站模板韩国网站的风格
  • 长春市建设信息网站o2o交易平台有哪些
  • 网站谁做的比较好看的网站建设科技风
  • 犀牛云做网站费用山东省建设工程电子信息网站
  • 南宁网站建设公司百度竞价入口
  • 查看网站名称广州软件外包
  • 潍坊高级网站建设推广移动端网站怎么做外链
  • 如何建设手机网站首页昌吉网站建设
  • 天津响应式网站设计全渠道运营平台系统
  • 外贸网站用什么语言药企做网站需要哪些手续
  • 帝国手机网站cms系统手机网站开发如何设置触摸功能
  • 进一步推进网站集约化建设11个免费网站空间
  • 淄博网站外包网站建设打不开
  • 桂林做网站公司网站收录查询
  • 医疗网站建设案例男男做的视频网站
  • 网站开发 技术投标wordpress更改数据库域名链接
  • 用dedecms做的网站网站关键词的确定
  • 哈尔滨企业做网站锦江网站建设
  • 民企厂房建设招标网站tiktok跨境电商运营
  • 网站建设合同要注意什么设计装修的软件
  • 怎么制作网站模版大连建设招标网
  • 音乐影视网站建设方案免费开网店平台有哪些
  • 源码网站下载wordpress cn