博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
MyBatis直接执行SQL查询及批量插入数据
阅读量:6321 次
发布时间:2019-06-22

本文共 1666 字,大约阅读时间需要 5 分钟。

一、直接执行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类节选

public 
interface SomeDAO{
  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); 

 }

 

参考:

1、《MyBatis用户指南中文版》 译者:曾令祝 

2、

 

转自:

转载地址:http://rncaa.baihongyu.com/

你可能感兴趣的文章
印度海得拉巴发生连环爆炸
查看>>
经典java转码程序,实现和 jdk\bin\native2ascii.exe 同样的功能
查看>>
警惕:移动应用App背后的安全危机!
查看>>
java
查看>>
python 异常
查看>>
拿什么来拯救你,电视!
查看>>
计算机网络改变了人们的娱乐方式
查看>>
django模板高级进阶
查看>>
我是一个硬盘
查看>>
块级元素与内联元素
查看>>
二次剩余Cipolla算法学习笔记
查看>>
String类的一些常用方法
查看>>
hdu 4122(RMQ)2011福州现场赛B题
查看>>
小组项目冲刺第四天的个人总结
查看>>
Mybatis入门
查看>>
2019.2.15 t2
查看>>
17、ListView & GridView
查看>>
java中的继承与oc中的继承的区别
查看>>
Django之ORM
查看>>
布局的一点总结
查看>>