针对上一篇的bootstarp table 页面最后提交表格所有数据到后台,统一保存到后台批量插入。
bootstrap table 页面的增删改,不通过后台。http://blog.csdn.net/orangetop/article/details/76532707
下面是mybatis的批量插入:
java后台
@Controller
@RequestMapping("/assets")
public class AssetsController {
@Resource
private BizAssetsService assetsService;
@RequestMapping(value = "/insert")
@ResponseBody
public void insertBizAssetsList(HttpServletRequest request, HttpServletResponse response){
String data = request.getParameter("mydata"); //获取表格中的数据mydata是传递过来data的name
List
assetsService.insertBizAssetsList(dataList); //批量插入方法
}
}
Dao:
public interface IAssetsDao {
/**
* 批量插入
*/
int insertBizAssetsList(List
}
service:
@Service
public class BizAssetsService {
@Autowired
private IAssetsDao assetsDao;
public int insertBizAssetsList(List
return assetsDao.insertBizAssetsList(assetsList);
}
}
java bean:
public class BizAssets {
private String assetsType;
private BigDecimal assetsAmt;
private Integer coefficient;
private BigDecimal valueAmt;
// get set方法略
}
mapper.xml的配置
SELECT LAST_INSERT_ID()
insert into biz_assets (REC_UID, CREDIT_RATING_ID, ASSETS_TYPE, ASSETS_AMT,
COEFFICIENT, VALUE_AMT, STATUS, CREATE_USER, CREATE_TIME)
values
( #{item.assetsType,jdbcType=VARCHAR},
#{item.assetsAmt,jdbcType=DECIMAL}, #{item.coefficient,jdbcType=INTEGER}, #{item.valueAmt,jdbcType=DECIMAL}
)
到此代码已经结束,下面说下自己在使用mybatis过程遇到的坑吧!
首先刚开始,直接insert,数据,搞了好久都没有成功一直报错,后来看了 一下,加入
SELECT LAST_INSERT_ID()
总算可以了。解释下:
SelectKey在Mybatis中是为了解决Insert数据时不支持主键自动生成的问题,他它可以很随意的设置生成主键的方式。
resultType:结果的类型。MyBatis 通常可以算出来,但是写上也没有问题。MyBatis 允许任何简单类型用作主键的类型,包括字符串。
keyProperty:selectKey 语句结果应该被设置的目标属性。如果希望得到多个生成的列,也可以是逗号分隔的属性名称列表。
order:这可以被设置为 BEFORE 或 AFTER。如果设置为 BEFORE,那么它会首先选择主键,设置 keyProperty 然后执行插入语句。如果设置为 AFTER,那么先执行插入语句,然后是 selectKey 元素 - 这和像 Oracle 的数据库相似,在插入语句内部可能有嵌入索引调用。
还有我写的数据库原来为空的,如何数据库已经有值,你在新增的时候,新增了已经存在的主键di,mybatis会报错,要么你避免插入已经存在的数据,要么在插入之前进行判断数据是否存在,我是直接加入了ignore .用法-在into 前加ignore例如:insert ignore into biz_assets(,,,,)values(?,?,?,?)
加入ignore, 插入重复的数据不报错也不插入。
下面对顺便对foreach标签解释下:
foreach的主要用在构建in条件中,它可以在SQL语句中进行迭代一个集合。
foreach元素的属性主要有 item,index,collection,open,separator,close。
item表示集合中每一个元素进行迭代时的别名,
index指 定一个名字,用于表示在迭代过程中,每次迭代到的位置,
open表示该语句以什么开始,与colse一起使用,
separator表示在每次进行迭代之间以什么符号作为分隔 符,
close表示以什么结束,与open一起使用。
当传入的参数不一样collection属性也不一样,具体可以参看http://www.cnblogs.com/fangyu19900812/p/6046209.html