有个需求mybatis 插入的时候不知道有哪些字段,需要动态的传入值和字段
有個需求mybatis?插入的時候不知道有哪些字段,需要動態的傳入值和字段,
?
Java code?
| 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | ????@Test ????public?void?testAddProductGuaranty()?{ ????????//1??? 560??? 50000??? 2014/10/2?0:00:00??? 2014/11/1?0:00:00??? 500000??? 車況良好 ????????Map<String,?Object>?productGuaranty?=?new?HashMap<String,?Object>(); ??????????????//這些字段可能是不固定的,只做測試用 ????????productGuaranty.put("product_id",?1); ????????productGuaranty.put("remark",?"車況良好"); ????????productGuaranty.put("price",?50000); ????????productGuaranty.put("release_date",?new?Date()); ????????productGuaranty.put("license_date",?new?Date()); ????????productGuaranty.put("distance",?50000); ????????productGuaranty.put("car_type",?560); ????????productGuaranty.put("car_id",?1); ????????productGuarantyService.addProductGuaranty(productGuaranty); ????} |
?
Java code?
| 1 2 3 4 5 6 7 8 9 | ????@Override ????public?void?addProductGuaranty(Map<String,?Object>?productGuaranty)?{ ????????Map<String,?Object>?params?=?new?HashMap<String,?Object>(); ???????????????//獲取動態字段 ????????List<CustomTableFields>?customTableFields?=?configService.getTableFields("product_guaranty"); ????????? ????????productGuaranty.put("customTableFields",?customTableFields); ????????productGuarantyDao.insert(productGuaranty);??????? ????} |
?
SQL code?
| 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 | ??<insert?id="insert"?parameterType="java.util.Map"?statementType="STATEMENT"?> ????insert?into?product_guaranty? ????????<foreach?item="item"?collection="customTableFields"?open="("???separator=","?close=")">?? ????????????????${item.fieldName} ????????</foreach> ????values ????????<foreach?item="item"?collection="customTableFields"?open="("???separator=","?close=")">?? ????????????<choose>?? ???????????????<when?test="item.type?==?'date'">?? ????????????????????${item.fieldName}??????? ?????????????????? ???????????????</when> ???????????????<when?test="item.type?==?'int'">?? ????????????????????${item.fieldName}??????? ?????????????????? ???????????????</when> ???????????????<when?test="item.type?==?'float'">?? ????????????????????${item.fieldName}??????? ?????????????????? ???????????????</when>?? ???????????????<otherwise> ????????????????????????${item.fieldName}??? ???????????????</otherwise>?? ???????????</choose> ????????</foreach>? ??</insert> |
問題是第二個循環這里如何根據${item.fieldName}?從params中獲取值?
總結
以上是生活随笔為你收集整理的有个需求mybatis 插入的时候不知道有哪些字段,需要动态的传入值和字段的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: elk docker
- 下一篇: mybatis insert 动态生成插