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

用rp怎么做网站按钮下拉菜单/百度优化是什么意思

用rp怎么做网站按钮下拉菜单,百度优化是什么意思,韶关公司做网站,谷歌网站诊断mybatis-plus 提供了根据id批量更新和修改的方法,这个大家都不陌生 但是当表没有id的时候怎么办 方案一: 手写SQL方案二: 手动获取SqlSessionTemplate 就是把mybatis plus 干的事自己干了方案三 : 重写 executeBatch 方法结论: mybatis-plus 提供了根据id批量更新和修改的方法,…

mybatis-plus 提供了根据id批量更新和修改的方法,这个大家都不陌生 但是当表没有id的时候怎么办

  • 方案一: 手写SQL
  • 方案二: 手动获取SqlSessionTemplate 就是把mybatis plus 干的事自己干了
  • 方案三 : 重写 executeBatch 方法
  • 结论:

mybatis-plus 提供了根据id批量更新和修改的方法,这个大家都不陌生 但是当表没有id的时候怎么办)

方案一: 手写SQL

  • 这个就不说了,就是因为不想手写SQL 所以才有这篇博客

方案二: 手动获取SqlSessionTemplate 就是把mybatis plus 干的事自己干了

// 这种方法就是把mybatis的活在干一遍,还是一条一条处理的.只是共用一个session连接
@Autowired
private SqlSessionTemplate sqlSessionTemplate;// 新获取一个模式为BATCH,自动提交为false的session
SqlSession session = sqlSessionTemplate.getSqlSessionFactory().openSession(ExecutorType.BATCH,false);
static final BATCH_SIZE = 1000;
// XxxMapper 为 对应的mapper文件
XxxMapper xxMapper = session.getMapper(XxxMapper.class);
int size = updateList.size();
try {for(int i=0; i < size; i++) {// updateByXxx 写好的单条数据的方法xxMapper.updateByXxx(updateList.get(i));if(i % BATCH_SIZE == 0 || i == size-1){//手动每1000个一提交,提交后无法回滚session.commit();//清理缓存,防止溢出session.clearCache();}}
}catch (Exception e) {session.rollback();
} finally {session.close();
}

方案三 : 重写 executeBatch 方法

	// mybatis plus 源码@Transactional(rollbackFor = Exception.class)@Overridepublic boolean updateBatchById(Collection<T> entityList, int batchSize) {String sqlStatement = getSqlStatement(SqlMethod.UPDATE_BY_ID);return executeBatch(entityList, batchSize, (sqlSession, entity) -> {MapperMethod.ParamMap<T> param = new MapperMethod.ParamMap<>();param.put(Constants.ENTITY, entity);sqlSession.update(sqlStatement, param);});}
  • mybatis plus 的 executeBatch
    在这里插入图片描述
  • 参考 mybatis plus 的updateBatchById 方法.
  • 调用处:
//删除方法 deleteList  是要删除的主键list
List<String> deleteList = new ArrayList<>();
dao.batchDelete(deleteList, delete -> new QueryWrapper<String>().eq("xx", delete));// 修改方法 OBJ 代码表对象
List<OBJ> updateList = new ArrayList<>();
dao.batchUpdate(updateList, update -> new LambdaQueryWrapper<OBJ>().eq(OBJ::getProductId, update.getProductId()));
  • 接口
    boolean batchUpdate(List<OBJ> updateList, Function<OBJ, LambdaQueryWrapper> queryWrapperFunction);boolean batchDelete(List<String> deleteList, Function<String, QueryWrapper> queryWrapperFunction);
  • 重写方法 实现
	@Overridepublic boolean batchUpdate(List<OBJ> entityList, Function<OBJ, LambdaQueryWrapper> function) {return this.executeBatch(entityList, DEFAULT_BATCH_SIZE, (sqlSession, entity) -> {ParamMap param = new ParamMap();param.put(Constants.ENTITY, entity);param.put(Constants.WRAPPER, function.apply(entity));sqlSession.update(this.getSqlStatement(SqlMethod.UPDATE), param);});}@Overridepublic boolean batchDelete(List<String> deleteList, Function<String, QueryWrapper> function) {return this.executeBatch(deleteList, DEFAULT_BATCH_SIZE, (sqlSession, entity) -> {ParamMap param = new ParamMap();param.put(Constants.ENTITY, entity);param.put(Constants.WRAPPER, function.apply(entity));sqlSession.delete(this.getSqlStatement(SqlMethod.DELETE), param);});}

结论:

  • 这种写法其实批量的效率还是比较慢的,如果对性能没有要求,并且还不想手写SQL的,可以试一试.
http://www.rdtb.cn/news/327.html

相关文章:

  • 网站开发案例/湖南长沙疫情最新消息
  • 营销型网站开发公司/免费发布信息网
  • 做有后台的网站/关键词seo排名怎么做的
  • 杭州视频网站建设/免费下载百度一下
  • 网站页面背景/惠州seo网络推广
  • 网站建设要求报告/百度指数关键词
  • 无上升级系统/seo在线培训课程
  • 网站开发类参考文献/重要新闻今天8条新闻
  • 兰溪做网站/贴吧推广400一个月
  • 怎么查看一个网站有没有做推广/搜索引擎优化是什么工作
  • 东莞网站优化找哪家/百度广告标识
  • 备案停止网站/seo能干一辈子吗
  • 泊头公司做网站/互联网营销师证
  • 个人网站做废品回收/软文代写服务
  • 帝国cms 网站迁移/seo服务优化
  • 在线修图编辑器免费/关键词排名优化方法
  • 网站建设中企动力强/网络竞价推广托管公司
  • 惠州附近公司做网站建设多少钱/seo优化网站教程
  • 大理建设投资有限公司网站/nba排名最新
  • 帕绍网站建设/怎么找一手app推广代理
  • 花都网站(建设信科网络)/小程序开发模板
  • 网站中有哪些标签需要优化/产品推广网站哪个好
  • 柳州城市的城乡建设管理局网站/营销管理系统
  • 2017年网站设计/口碑营销的优势有哪些
  • 山东天狐做网站cms/南京seo优化
  • 网站开发哈尔滨网站开发公司/网络推广一般都干啥
  • 资深做网站公司/国家卫健委最新疫情报告
  • vs2010网站制作教程/网站定制
  • 广西临桂建设局网站/西安疫情最新数据
  • 网站托管共享服务器费用一年多少钱/网络推广法