一.前言   MyBatis的update元素的用法与insert元素基本相同,因此本篇不打算重复了.本篇仅记录批量update操作的sql语句,懂得SQL语句,那么MyBatis部分的操作就简单了. 注意:下列批量更新语句都是作为一个事务整体执行,要不全部成功,要不全部回滚. 二.MSSQL的SQL语句 WITH R AS( SELECT as id UNION ALL SELECT as id UNION ALL SELECT as id ) UPDATE TStudent SET name…
一.前言   MyBatis是基于“数据库结构不可控”的思想建立的,也就是我们希望数据库遵循第三范式或BCNF,但实际事与愿违,那么结果集映射就是MyBatis为我们提供这种理想与现实间转换的手段了,而resultMap就是结果集映射的配置标签了. 二.从SQL查询结果到领域模型实体 在深入ResultMap标签前,我们需要了解从SQL查询结果集到JavaBean或POJO实体的过程. 1. 通过JDBC查询得到ResultSet对象 2. 遍历ResultSet对象并将每行数据暂存到HashM…
mybatis的批量update操作写法很简单,如下: public interface YourMapper extends BaseMapper<YourExt> { void updateBatch(@Param("pojos") Collection<YourExt> pojos); } <update id="updateBatch" parameterType="java.util.Collection"…
一.前言    数据库操作怎能少了INSERT操作呢?下面记录MyBatis关于INSERT操作的笔记,以便日后查阅. 二. insert元素 属性详解   其属性如下: parameterType ,入参的全限定类名或类型别名 keyColumn ,设置数据表自动生成的主键名.对特定数据库(如PostgreSQL),若自动生成的主键不是第一个字段则必须设置 keyProperty ,默认值unset,用于设置getGeneratedKeys方法或selectKey子元素返回值将赋值到领域模型的…
一.前言 数据库操作怎能少了INSERT操作呢?下面记录MyBatis关于INSERT操作的笔记,以便日后查阅. 二. insert元素 属性详解 其属性如下: parameterType:入参的全限定类名或类型别名 keyColumn:设置数据表自动生成的主键名.对特定数据库(如PostgreSQL),若自动生成的主键不是第一个字段则必须设置 keyProperty :默认值unset,用于设置getGeneratedKeys方法或selectKey子元素返回值将赋值到领域模型的哪个属性中 u…
一.前言                   本篇内容以理解MyBatis的基本用法和快速在项目中实践为目的,遵循Make it work,better and excellent原则. 技术栈为MyBatis3.2.7+log4j1.2.17+sqlite3+jdk1.7. 二.示例         示例代码功能: 学校人员管理系统,对象分别为学生.教师和班级,学生与班级为多对一关系,班级与教师为一对多关系.示例代码主要为操作学生对象.   1. 表结构   学生表(TStudentML) 字…
https://www.cnblogs.com/wodebudong/articles/7976474.html 最近遇到一件锁表的情况,发现更新的语句where检索的字段,没有建索引,且是批量操作的,就出现了锁表的情况了. 所以有两个问题: 1.建索引和不建索引,对锁表的影响 2.为什么批量更新时会锁表 1. 建索引和不建索引,对锁表的影响 1.带索引  2.不带索引 前提介绍: 方式:采用命令行的方式来模拟 1.mysq由于默认是开启自动提交事务,所以首先得查看自己当前的数据库是否开启了自动…
最近工作中需要优化以前各种的Excel批量导入功能,目前将能优化的方面做个记录. 选用技术: 目前.Net可以访问Oracle常用的Dll,有三种: 微软自带的 System.Data.OracleClient Oracle 公司提供的 Oracle.DataAccess System.Data.OleDb  通过比对以后,使用第二种,其原因如下: 访问数据库方式 优点 缺点 System.Data.OracleClient 操作简单,无论32,64直接引用即可使用 微软在4.0之后不会对其更新…
  MyBatis的update元素的用法与insert元素基本相同,因此本篇不打算重复了.本篇仅记录批量update操作的sql语句,懂得SQL语句,那么MyBatis部分的操作就简单了. 注意:下列批量更新语句都是作为一个事务整体执行,要不全部成功,要不全部回滚. 二.MSSQL的SQL语句 WITH R AS( SELECT 'John' as name, 18 as age, 42 as id UNION ALL SELECT 'Mary' as name, 20 as age, 43…
  本文是记录Java中实现批量删除操作(Java对数据库进行事务处理),在开始之前先来看下面这样的一个页面图: 上面这张图片显示的是从数据库中查询出的出租信息,信息中进行了分页处理,然后每行的前面提供了一个复选按钮和对应的一个删除操作,可以选中多个进行操作,这里主要是进行删除操作.在执行删除操作之前先要选中对应的行信息,点击删除选中按钮进行删除.当进行多条信息删除的时候,需要使用java的事务处理机制对数据库进行删除,也就是说删除的时候如果选中的要删除的说有信息其中一条没有成功删除的话,那么就…
在今天之前,当我遇到需要使用JDBC对数据库进行批量插入操作的时候,我使用的方法如下: ①使用Connection建立数据库连接: ②使用PreparedStatement提交SQL语句,将数据插入: ③关闭数据库连接,释放资源. 但是今晚,我遇到一个问题,需要对MySQL数据库批量插入10000条记录,于是,我将插入操作封装成了一个方法,然后调用,没插入一条记录,都要打开.关闭一次数据库,结果就是,等着一万条记录插入数据库之后,时间居然用了6分半钟.这是不能容忍的,用户不能等待这么久的时间.于…
在日常开发中,有时候会遇到批量更新操作,这时候最普通的写法就是循环遍历,然后一条一条地进行update操作.但是不管是在服务端进行遍历,还是在sql代码中进行遍历,都很耗费资源,而且性能比较差,容易造成阻塞. Mysql没有提供直接的方法来实现批量更新,但可以使用case when语法来实现这个功能. Mysql中代码示例: UPDATE tablename SET sort = CASE id THEN 'sort1' THEN 'sort2' THEN 'sort3' END, update…
Foreach标签 foreach: collection:指定要遍历的集合; 表示传入过来的参数的数据类型.该参数为必选.要做 foreach 的对象,作为入参时,List 对象默认用 list 代替作为键, 数组对象有 array 代替作为键,Map 对象没有默认的键.当然在作为入参时可以使用 @Param(“keyName”) 来设置键, 设置 keyName 后,list,array 将会失效 item:将当前遍历出的元素赋值给指定的变量,然后用#{变量名},就能取出变量的值,也就是当前…
mybatis批量更新返回结果为-1,是由于mybatis的defaultExExecutorType引起的,    它有三个执行器:SIMPLE 就是普通的执行器:REUSE 执行器会重用预处理语句(prepared statements): BATCH 执行器将重用语句并执行批量更新. BATCH可以批量更新操作,缓存SQL以提高性能,缺陷就是无法获取update.delete返回的行数. 如果要拿到更新条数,修改如下: 在mybatis-config.xml配置: <configurati…
摘录自:http://www.linuxidc.com/Linux/2012-05/60863.htm MyBatis的前身就是著名的Ibatis,不知何故脱离了Apache改名为MyBatis.MyBatis所说是轻量级的ORM框架,在网上看过一个测试报告,感觉相比于Hibernate来说,优势并不明显. 下面说一下比较有趣的现象,根据MyBatis的官方文档,在获得sqlSession时,它有为批量更新而专门准备的: session = sessionFactory.openSession(…
原文地址:https://blog.csdn.net/javaee_sunny/article/details/52511842 一. 这里主要考虑两种参数类型:数组或者集合. 而这点区别主要体现在EmpMapper.xml文件中标签的collection属性: 当collection=”array“时,表名参数为数组; 当collection=”list“时,表名参数为集合. 二. 注意: 无论Mybatis是与mysql数据库结合,还是与Oracle数据库,都同样适合如下设置与操作. 三.…
转: mybatis 的批量更新操作sql 2018年07月23日 10:38:19 海力布 阅读数:1689   版权声明:本文为博主原创文章,未经博主允许不得转载. https://blog.csdn.net/dmcpxy/article/details/81163735 mybatis的批量更新操作 我们知道mybatis的插入和删除是可以支持批量操作的,但是update也是支持的,代码如下: <update id="updateBatch" parameterType=&…
更新单条记录 UPDATE course SET name = 'course1' WHERE id = 'id1'; 更新多条记录的同一个字段为同一个值 UPDATE course SET name = 'course1' WHERE id in ('id1', 'id2', 'id3); 更新多条记录为多个字段为不同的值 比较普通的写法,是通过循环,依次执行update语句. Mybatis写法如下: <update id="updateBatch"  parameterTy…
mybatis+oracle 完成插入数据库,并将主键返回的注意事项一条插入语句就踩了不少的坑,首先我的建表语句是: create table t_openapi_batch_info( BATCH_NO VARCHAR2(200), UM_CODE VARCHAR2(50), BATCH_STATUS CHAR(1) DEFAULT '0', BATCH_TYPE CHAR(1), CREATED_DATE DATE, CREATED_BY VARCHAR(100), UPDATED_DATE…
利用Mybatis拦截器对数据库水平分表 需求描述 当数据量比较多时,放在一个表中的时候会影响查询效率:或者数据的时效性只是当月有效的时候:这时我们就会涉及到数据库的分表操作了.当然,你也可以使用比较完善的第三方组件:sharding-jdbc来实现:但是你使用后会发现,貌似对oracle的兼容性不是很好.所以最后我还是决定使用Mybatis拦截器对数据库进行水平分表. 为什么要选用Mybatis拦截器 拦截器:我们可以拦截某些方法的调用,我们可以选择在这些被拦截的方法执行前后加上某些逻辑,也可…
提到死锁,最最常规的场景之一是Session1 以排它锁的方式锁定A表,请求B表,session2以排它锁的方式锁定B表,请求A表之类的,访问顺序不一致导致死锁的情况本文通过简化,测试这样一种稍显特殊的场景:对同一张表,并发update其中的多行记录引起的死锁,同时简单分析,对于update操作的加锁步骤这种场景引起的死锁比较少见,但是并不代表不存在,在某些并发场景下,可能会引起死锁的,应该需要引起重视. 测试环境搭建 sqlserver 数据库版本: Microsoft SQL Server…
MyBatis 学习笔记(七)批量插入ExecutorType.BATCH效率对比一.在mybatis中ExecutorType的使用1.Mybatis内置的ExecutorType有3种,默认的是simple,该模式下它为每个语句的执行创建一个新的预处理语句,单条提交sql:而batch模式重复使用已经预处理的语句, 并且批量执行所有更新语句,显然batch性能将更优: 2.但batch模式也有自己的问题,比如在Insert操作时,在事务没有提交之前,是没有办法获取到自增的id,这在某型情形下…
前言  最近加入到新项目组负责前端技术预研和选型,其中涉及到一个熟悉又陌生的需求--国际化&本地化.熟悉的是之前的项目也玩过,陌生的是之前的实现仅仅停留在"有"的阶段而已.趁着这个机会好好学习整理一下,为后面的技术选型做准备.  本篇将阐述国际化和本地化的概念,以及其中一个很重要的概念--Language tag(也叫Language code 或 Culture). 何为国际化?  国际化我认为就是应用支持多语言和文化习俗(数字.货币.日期和字符比较算法等),而本地化则是应用…
前言  最近加入到新项目组负责前端技术预研和选型,其中涉及到一个熟悉又陌生的需求--国际化&本地化.熟悉的是之前的项目也玩过,陌生的是之前的实现仅仅停留在"有"的阶段而已.趁着这个机会好好学习整理一下,为后面的技术选型做准备.  本篇将于大家一起挽起袖子撸代码:) 如何获取Language tag?  在实现本地化处理前,我们起码先要获取Language tag吧?那么获取方式分为两类 1.直接获取浏览器的Language tag信息  一般来说浏览器语言的版本标示着用户所属或…
前言  通过<WebComponent魔法堂:深究Custom Element 之 面向痛点编程>,我们明白到其实Custom Element并不是什么新东西,我们甚至可以在IE5.5上定义自己的alert元素.但这种简单粗暴的自定义元素并不是我们需要的,我们需要的是具有以下特点的自定义元素: 自定义元素可通过原有的方式实例化(<custom-element></custom-element>,new CustomElement()和document.createEle…
前言  最近加入到新项目组负责前端技术预研和选型,一直偏向于以Polymer为代表的WebComponent技术线,于是查阅各类资料想说服老大向这方面靠,最后得到的结果是:"资料99%是英语无所谓,最重要是UI/UX上符合要求,技术的事你说了算.",于是我只好乖乖地去学UI/UX设计的事,木有设计师撑腰的前端是苦逼的:(嘈吐一地后,还是挤点时间总结一下WebComponent的内容吧,为以后作培训材料作点准备. 浮在水面上的痛 组件噪音太多了!  在使用Bootstrap的Modal组…
Mybatis关联查询和数据库不一致问题分析与解决 本文的前提是,确定sql语句没有问题,确定在数据库中使用sql和项目中结果不一致. 在使用SpringMVC+Mybatis做多表关联时候,发现也不报错,也没有出现任何问题,但是就是和数据库查出的数据不一致,永远返回的只有一条数据,究其原因,在做多表关联查询时候,应该将关联两张表的ID主键在数据库中写出,这样在用BaseResultMap做关联,就可以找到所有的属性.其中所关联的表使用的是<association></associati…
前言  说起box-shadow那第一个想法当然就是用来实现阴影,其实它还能用于实现其他好玩的效果的,本篇就打算说说box-shadow的那些事. 二话不说看效果 3D小球 <style type="text/css"> .ball{ background: rgba(100,100,100,0.2); width: 100px; height: 100px; padding: 10px; border-radius: 50%; box-shadow: -14px 8px…
前言  当CSS3推出border-radius属性时我们是那么欣喜若狂啊,一想到终于不用再添加额外元素来模拟圆角了,但发现border-radius还分水平半径和垂直半径,然后又发现border-top-left/right-radius的水平半径之和大于元素宽度时,实际值会按比例分配元素宽度时,不禁会问"我真的懂border吗?".本系列将稍微深入探讨一下那个貌似没什么好玩的border! <CSS魔法堂:重拾Border之--解构Border> <CSS魔法堂:…
前言  当CSS3推出border-radius属性时我们是那么欣喜若狂啊,一想到终于不用再添加额外元素来模拟圆角了,但发现border-radius还分水平半径和垂直半径,然后又发现border-top-left/right-radius的水平半径之和大于元素宽度时,实际值会按比例分配元素宽度时,不禁会问"我真的懂border吗?".本系列将稍微深入探讨一下那个貌似没什么好玩的border! <CSS魔法堂:重拾Border之--解构Border> <CSS魔法堂:…