MyBatis直接执行SQL查询及批量插入数据
来源:互联网 发布:比特币 2013年淘宝 编辑:程序博客网 时间:2024/05/18 00:10
<span style="font-family: Arial, Helvetica, sans-serif; font-size: 12px; background-color: rgb(255, 255, 255);">一:直接执行SQL语句查询</span>
1.mapper文件
<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指定一个类的路径。
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文件节选
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); }
0 0
- MyBatis直接执行SQL查询及批量插入数据
- MyBatis直接执行SQL查询及批量插入数据
- MyBatis直接执行SQL查询及批量插入数据
- MyBatis直接执行SQL查询及批量插入数据
- MyBatis直接执行SQL查询及批量插入数据
- MyBatis直接执行SQL查询及批量插入数据
- MyBatis直接执行SQL查询及批量插入数据
- MyBatis使用动态SQL批量插入数据
- Mybatis-批量查询&&批量插入
- mybatis数据批量插入
- mybatis数据批量插入
- mybatis批量插入数据
- mybatis 批量插入数据
- MyBatis批量插入数据
- mybatis数据批量插入
- mybatis批量插入数据
- mybatis数据批量插入
- MyBatis批量插入数据
- IOT集群性能测试异常
- CSDN博客导出(三) - 将HTML转换为PDF
- Java中int和Integer的区别详解
- 实现单例模式
- 项目经验总结(一)
- MyBatis直接执行SQL查询及批量插入数据
- 王立平--android out of memory(OOM)产生原因
- [Android] [SMALI]smali文件内容具体介绍
- SMO算法
- Android 悬浮窗口
- Spring 2.0的新标签----util实例
- JAVA APT处理Annotation
- 如何用 openssl 生成RSA双密匙;签名证书;加密文件邮件
- UIImagePickerController用法