MyBatis直接执行SQL查询及批量插入数据
转:http://www.cnblogs.com/mabaishui/archive/2012/06/20/2556500.html
一、直接执行SQL查询:
1、mappers文件节选
<resultMap id="AcModelResultMap" type="com.izumi.InstanceModel">
<result column="instanceid" property="instanceID" jdbcType="VARCHAR" />
<result column="instancename" property="instanceName" jdbcType="VARCHAR" />
</resultMap>
<select id="getInstanceModel" resultType="com.izumi.InstanceModel">
${paramSQL}
</select>
2、DAO类节选
List<InstanceModel> getInstanceModel(@Param("paramSQL")String sql);
}
3、注意事项
3.1:传入方法的参数sql必须遵循以下规范"select XXX as instanceid, XXX as instancename ....." ,否则MyBatis无法自动将查询结果变成Java对象。
3.2: mappers文件中的#{}语法与${}语法的区别:
默认情况下, #{}语法会促使MyBatis生成PreparedStatement属性并且使用PreparedStatement的参数(=?)来设置值。如果你想直接将未更改的字符串代入到sql中,可以使用${}。
也就是说,MyBatis看到 #{}会认为你在给sql中的变量赋值,就像JDBC编程中给问号赋值一样(比如MyBatis会判断它的类型,并自动在前后加单引号)。而当MyBatis看到${}的时候会直接将之替换成变量的值而不做任何处理。
所以在使用${}的时候,不需要像#{}一样写"jdbcType=VARCHAR"之类的属性。
3.3:resultType和resultMap
按照1中的写法, < resultMap > 部分可以删除不用了,因为在接下来的<select >中没用使用定义的resultMap,而是使用了resultType。
所以我们可以看出,关于<select >返回值的定义有两种写法,一种是定义一个resultMap然后引用这个resultMap,还有一种就是直接使用resultType指定一个类的路径。
二、批量插入数据
1、经验告诉我们,使用insert into XXX values(XX)(XXX)(XXX),比使用insert into XXX values(XX),insert into XXX values(XXX),insert into XXX values(XXX)效率要高。
2、在MyBatis中的用法
2.1、mappers文件节选
< insert id ="insertBatch" >
insert into student ( < include refid ="Base_Column_List" /> )
values
< foreach collection ="list" item ="item" index ="index" separator ="," >
(null,#{item.name},#{item.sex},#{item.address},#{item.telephone},#{item.tId})
</ foreach >
</insert>
2.2、DAO类节选
public interface SomeDAO{
public void insertBatch(@Param("list")List<Student> students);
}
MyBatis直接执行SQL查询及批量插入数据相关推荐
- java批量执行查询sql语句_详解MyBatis直接执行SQL查询及数据批量插入
一.直接执行SQL查询: 1.mappers文件节选 ${paramSQL} 2.DAO类节选 public interface SomeDAO{ List getInstanceModel(@Par ...
- SQL Server 2008 批量插入数据时报错
前几天在SQL Server 2008同步产品数据时,总是提示二进制文本被截断的错误,但是经过检查发现数据都符合格式要求. 百思不得其解,单独插入一条条数据则可以插入,但是批量导入则报错. 批量导入代 ...
- Mybatis——注入执行sql查询、更新、新增以及建表语句
文章目录 前言 案例 dao和mapper编写 XXXmapper.xml编写 编写业务层代码,进行注入调用 额外扩展--创建表语句 前言 在平时的项目开发中,mybatis应用非常广泛,但一般都是直 ...
- 查询并批量插入数据的Sql命令
数据库原始数据: 执行命令: insert into camas_monitor_rule_asset(ipid,port,name,five_tuple_id,rule_id,accuracy,up ...
- Mybatis批量插入数据的两种方式
总体描述 软件开发过程中需要批量插入数据的场景有几种: 从离线文件(excel, csv等)导入大批量数据到系统. 从其它系统定时或者人工同步大批量数据到系统. 程序自身的某些算法执行时会生成大批量数 ...
- sql批量插入数据mysql_MYSQL批量插入数据库实现语句性能分析
假定我们的表结构如下: CREATE TABLE example ( example_id INT NOT NULL, name VARCHAR( 50 ) NOT NULL, value VARCH ...
- 【笔试面试考点】PreparedStatement和Statement的区别与联系批量插入数据的优化
目录 一.PreparedStatement和Statement的区别去联系 一.preparedStatement与Statement的联系: 二.区别: 二.批量插入数据到数据的逐步优化 一. ...
- mybatis多个foreach_使用 Mybatis 的 foreach 批量模糊 like 查询及批量插入
使用 mybatis 平时都是用遍历集合 in ( ) ....,其实还可以多模糊查询和批量操作等其他操作,要明白 foreach 元素的属性主要意义,灵活使用,举例如下. 1.根据多个品牌名字分类, ...
- springboot执行批量插入_springboot+Mybatis 注解\Xml两种方式批量添加数据
1.使用注解的方式批量添加数据,在该方法中,传进来的参数是一个List集合,使用一个foreach 循环解析集合的数据,最后再批量保存到数据库,具体如下截图: 代码如下: //批量保存 @Insert ...
最新文章
- 第10章 序列的修改、散列和切片
- 一位老工程师的终告 (推荐)
- PHP中文件操作基础:文件路径基础
- android 在同一activity切换layout,在 Android Studio 添加一个activity并实现跳转
- Visual Source Safe的安装和使用简明教程
- GCD dispatch_semaphore
- echart 高度 不用 不撑满_注意厨房台面高度及细节 装出省心舒服 装出事半功倍...
- CSS尺寸和字体单位-em、px还是%
- 荒岛余生最后一个包裹_从《荒岛余生》看上世纪九十年代美国社会主流价值观...
- mysql默认密码是多少_192.168.3.1默认登录密码是多少【详细介绍】
- 网络校时(非NTP)
- 每日算法系列【LeetCode 386】字典序排数
- tk芯片智能机刷机方法_MTK通用刷机教程 MTK芯片智能机刷机方法
- 弧微分直角系最详细推导
- toolbar遇到问题和解决方式
- selenium爬取拉勾网
- Go语言channel
- 《大数据机器学习实践探索》 ---- 大数据机器学习:spark mlib 库【简介 与 架构初探】
- python 中文分词工具
- 拆解USB无线网卡,电路方案非常经典(附高清美图)
热门文章
- Spring AOP中declare-parents为特定的类增加新的功能
- Windows下第三方库安装Nuget与Vcpkg
- Redis5.0重量级特性Stream尝鲜
- 建站如此容易:WordPress3.9建站简明视频教程完成发布啦
- java内存管理(适合初学者)
- oracle数组的使用
- CentOS(RedHat)命令行永久修改IP地址、网关、DNS
- 也谈虚拟化的服务器选型,以及性能考虑
- 无法定位序数于动态库mfc90d.dll上 由于应用程序配置不正确...解决方法
- 【题解】洛谷P1283 平板涂色(搜索+暴力)