mybatis以map的方式批量插入list集合数据操作步骤
2017-07-27 18:28
791 查看
介绍:因为项目框架的存在未知的版本号org错误,导致使用mybatis自带的常规以list集合和array数组的形式批量插入不可行,因此解决办法是:自行创建map以"list"为map的键,要批量输入的list对象为值,再调用mybaits的getSqlSession().insert()方法即可.
1,首先创建抽象类AbstracTestDao继承SqlSessionDaoSupport
2,创建接口方法
3,创建接口的实现类
4,mapping文件的id方法
5,Junit测试类
1,首先创建抽象类AbstracTestDao继承SqlSessionDaoSupport
import javax.annotation.Resource; import org.apache.ibatis.session.SqlSessionFactory; import org.mybatis.spring.support.SqlSessionDaoSupport; public abstract class AbstractTestDao extends SqlSessionDaoSupport{ @Resource public void setSqlSessionFactory(SqlSessionFactory sqlSessionFactory){ super.setSqlSessionFactory(sqlSessionFactory); } }
2,创建接口方法
public interface TestDaos { //@Param("list") void ib(List<TmCisCustIdx> clist); }
3,创建接口的实现类
import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; import org.springframework.stereotype.Repository; import com.allinfinance.cis.dao.impl.AbstractTestDao; import com.allinfinance.cis.infrastructure.TmCisCustIdx; import com.allinfinance.cis.zm.dao.TestDaos; @Repository("testDao") public class TestDao extends AbstractTestDao implements TestDaos{ public void ib(List<TmCisCustIdx> clist){ Map<String,List<TmCisCustIdx>> map = new HashMap<String,List<TmCisCustIdx>>(); map.put("list",clist);//将传来的list参数放进map中,因为mybits的批量mapping文件中的for循环的collection的值key固定为"list",所以map的key也为list,如果参数是数组,key则为"array" getSqlSession().insert("com.allinfinance.cis.infrastructure.mapping.TmCisCustIdxMapper.insertBatch",map);//mapper文件对应的id方法 } }
4,mapping文件的id方法
<insert id="insertBatch" parameterType="java.util.Map"> insert into TM_CIS_CUST_IDX ( ORG,CUST_ID,BIZ_ORG_CODE,ID_TYPE,ID_NO,CREATE_DATE,CREATE_BY,UPDATE_DATE,UPDATE_BY,JPA_VERSION ) values <foreach collection="list" item="item" index="index" open="(" close=")" separator="union all"> select #{item.org,jdbcType=VARCHAR } ,#{item.custId,jdbcType=VARCHAR } , #{item.bizOrgCode,jdbcType=VARCHAR } , #{item.idType,jdbcType=VARCHAR } , #{item.idNo,jdbcType=VARCHAR } , #{item.createDate,jdbcType=TIMESTAMP } , #{item.createBy,jdbcType=VARCHAR } ,#{item.updateDate,jdbcType=TIMESTAMP } , #{item.updateBy,jdbcType=VARCHAR } , #{item.jpaVersion,jdbcType=INTEGER }from dual </foreach> </insert>
5,Junit测试类
@RunWith(SpringJUnit4ClassRunner.class) @ContextConfiguration("classpath:spring-context.xml") public class TestTest{ @Autowired private TmCisCustIdxDao tmCisCustIdxDao; @Autowired private TestDaos testDao; @Before public void setUp() throws Exception { } @Test public void test() { TmCisCustIdx tmCisCustIdx = new TmCisCustIdx(); String custId = UUID.randomUUID().toString(); Date date = new Date(); tmCisCustIdx.setCustId(custId); tmCisCustIdx.setOrg("01"); tmCisCustIdx.setBizOrgCode("TLJR"); tmCisCustIdx.setIdNo("6200000CP"); tmCisCustIdx.setIdType("I"); tmCisCustIdx.setCreateBy("admin"); tmCisCustIdx.setCreateDate(date); tmCisCustIdx.setUpdateBy("admin"); tmCisCustIdx.setUpdateDate(date); tmCisCustIdx.setJpaVersion(0); List<TmCisCustIdx> clist = new ArrayList<TmCisCustIdx>(); clist.add(tmCisCustIdx); testDao.ib(clist); } } }
相关文章推荐
- mybatis中批量操作List集合
- Mybatis:List批量插入数据
- Mybatis中传入值,只传入list集合或者数组或者map操作
- mybatis 批量插入list对象集合
- mybatis注解方式批量插入数据
- 记录一下项目中Mybatis实现批量插入数据的操作
- mybatis 注解的方式批量插入,更新数据
- foreach实现MyBatis遍历集合与批量操作数据
- mybatis的mapper.xml利用map遍历集合进行插入,以及利用list进行遍历插入的注意点
- mybatis传入List<Map>批量插入
- mybatis以map为参,动态生成表并插入数据
- MyBatis批量操作报错:Parameter 'xxxList' not found. Avail
- MyBatis传入参数为集合 list 数组 map写法
- mybatis 做 insert操作的时候返回插入的那条数据的id
- 【数据结构_顺序表_List_0943】顺序表插入操作的实践
- list集合对于基本数据类型与引用数据类型(对象)去重操作
- C# 数据批量插入到数据库SqlBulkCopy(源数据类型:List<T> Or DataTable)
- jQuery通过json的方式响应map的list对象集合,并以table的形式展示
- MyBatis:Insert操作详解(返回主键、批量插入)
- 利用redis缓存对 list集合中的数据 进行分页操作(一)