批量数据上传的sql.xml

<!-- User.xml -->
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd" >

<!-- namespace命名空间,作用就是对sql进行分类化管理,可以理解为sql隔离
注意:使用mapper代理方法开发,namespace有特殊重要的作用,namespace要与接口名称一致
-->
<mapper namespace="test" >
<!-- 在映射文件中配置很多sql语句 -->
<!-- 通过select执行数据库查询
id: 标识映射文件中的sql,将sql语句封装到mappedStatement对象中,所以称为statement的id
mapper代理开发方法中,该id要与接口的方法名一致
#{}表示一个占位符
parameterType指定输入参数的类型
#{id}:其中的id表示接收输入的参数,参数名称就是id,如果输入参数是简单类型,#{}中的参数名可以任意
resultType指定输出结果所映射的java对象类型,自动生成的该文件中使用了resultMap指定
-->
<insert id="addUserBatch" useGeneratedKeys="true" parameterType="java.util.List">
insert into user (id, first_name)
values
<foreach collection="list" item="item" index="index" separator="," >
(#{item.id},#{item.username})
</foreach>
</insert>
</mapper>

<!-- User.java -->
package entity;

import java.util.Date;

public class User {
private Integer id;

private String username;

public Integer getId() {
return id;
}

public void setId(Integer id) {
this.id = id;
}

public String getUsername() {
return username;
}

public void setUsername(String username) {
this.username = username == null ? null : username.trim();
}
}

<!-- InsertTest.java -->
package entity;

import java.io.InputStream;
import java.util.ArrayList;
import java.util.List;

import org.apache.ibatis.io.Resources;
import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.session.SqlSessionFactoryBuilder;
import org.apache.poi.hssf.record.UserSViewBegin;

public class InsertTest {

/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
//mybatis配置文件
String resource = "SqlMapConfig.xml";
//得到配置文件流
InputStream inputStream = null;
SqlSession sqlSession = null;
try {
inputStream = Resources.getResourceAsStream(resource);
//创建会话工厂
SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
//通过工厂得到SqlSession
sqlSession = sqlSessionFactory.openSession();
//通过SqlSession操作数据库
//第一个参数:映射文件中statement中的id,等于namespace+"."+statement的id
//第二个参数: 指定和映射文件中所匹配的parameterType类型的参数
//sqlSession.selectOne结果就是与映射文件中所匹配的resultType类型的对象
User user = new User();
user.setId(2);
user.setUsername("test");
User user2 = new User();
user2.setId(3);
user2.setUsername("test2");
List<User> users = new ArrayList<User>();
users.add(user);
users.add(user2);
sqlSession.insert("test.addUserBatch", users);
sqlSession.commit();
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
} finally {
//释放资源
sqlSession.close();
}
}

}

 

posted @ 2016-08-23 23:11  tdyhs  阅读(433)  评论(0编辑  收藏  举报