博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
复杂对象ibatis插入,属性为list,怎么一次性插入
阅读量:4692 次
发布时间:2019-06-09

本文共 9002 字,大约阅读时间需要 30 分钟。

转自:

public class PfStuffInfoVo implements Serializable {

/** 信息Id */
  private String infoId;
  /** 项目Id */
  private String proid;
/** 附件信息 */
  private List<PfFileVo> fileList;
...
这是我的对象 该怎么把fileList属性已插入,PfFileVo 有对应的表

貌似iBatis没有提供多个关联对象的同时插入
你需要再Service层调用多个DAO去做多个关联对象的插入操作
批处理在iBatis里是肯定有的
貌似叫batchUpdate方法
不记得了,这个你可以上网搜搜,答案很多的
iBatis3里貌似确实木有批量插入,很郁闷的说
回答者:clarck_913 - 2011-05-05 09:24:52
可以通过ibatis建立一对多的映射
POJO
Java code
 
<!-- Code highlighting produced by Actipro CodeHighlighter (freeware) http://www.CodeHighlighter.com/ -->
public
class Customer {
private Long id;
private String name;
private String address;
private String postcode;
private String sex;
private List<Orders> orderlist =
new ArrayList<Orders>();
public
class Orders {
private Long id;
private String code;
private Long customerId;
private Customer customer;
Customer.xml
XML code
 
<!-- Code highlighting produced by Actipro CodeHighlighter (freeware) http://www.CodeHighlighter.com/ -->
<?
xml version="1.0" encoding="UTF-8"
?>
<!
DOCTYPE sqlMap PUBLIC "-//ibatis.apache.org//DTD SQL Map 2.0//EN" "http://ibatis.apache.org/dtd/sql-map-2.dtd"
>
<
sqlMap
namespace
="customer"
>
<
typeAlias
alias
="customer"
type
="com.lavasoft.ssi.domain.Customer"
/>
<
resultMap
id
="result_base"
class
="customer"
>
<
result
property
="id"
column
="id"
/>
<
result
property
="name"
column
="name"
/>
<
result
property
="address"
column
="address"
/>
<
result
property
="postcode"
column
="postcode"
/>
<
result
property
="sex"
column
="sex"
/>
</
resultMap
>
<
resultMap
id
="result"
class
="customer"
extends
="result_base"
>
<
result
property
="orderlist"
column
="id"
select
="orders.findByCustomerId"
/>
</
resultMap
>
<
insert
id
="insert"
parameterClass
="customer"
> insert into customer(address,postcode,sex,name) values(#address#,#postcode#,#sex#,#name#)
<
selectKey
keyProperty
="id"
resultClass
="long"
> select LAST_INSERT_ID()
</
selectKey
>
</
insert
>
<
select
id
="getById"
parameterClass
="long"
resultMap
="result_base"
> select * from customer where id = #value#
</
select
>
<
select
id
="getWithCashById"
parameterClass
="long"
resultMap
="result"
> select * from customer where id = #value#
</
select
>
<
select
id
="getWithCashByIdInnerjoin"
parameterClass
="long"
resultClass
="customer"
resultMap
="result"
> select c.* from customer c inner join orders o on c.id=o.customerId
</
select
>
</
sqlMap
>
Orders.xml
XML code
 
<!-- Code highlighting produced by Actipro CodeHighlighter (freeware) http://www.CodeHighlighter.com/ -->
<?
xml version="1.0" encoding="UTF-8"
?>
<!
DOCTYPE sqlMap PUBLIC "-//ibatis.apache.org//DTD SQL Map 2.0//EN" "http://ibatis.apache.org/dtd/sql-map-2.dtd"
>
<
sqlMap
namespace
="orders"
>
<
typeAlias
alias
="orders"
type
="com.lavasoft.ssi.domain.Orders"
/>
<
resultMap
id
="result_base"
class
="orders"
>
<
result
property
="id"
column
="id"
/>
<
result
property
="code"
column
="code"
/>
<
result
property
="customerId"
column
="customerId"
/>
</
resultMap
>
<
resultMap
id
="result"
class
="orders"
extends
="result_base"
>
<
result
property
="customer"
column
="customerId"
select
="customer.getById"
/>
</
resultMap
>
<
insert
id
="insert"
parameterClass
="orders"
> insert into orders(id,code,customerId) values(#id#,#code#,#customerId#)
<
selectKey
keyProperty
="id"
resultClass
="long"
> select LAST_INSERT_ID()
</
selectKey
>
</
insert
>
<
select
id
="findByCustomerId"
resultMap
="result_base"
parameterClass
="long"
> select * from orders where customerId = #value#
</
select
>
<
select
id
="getById"
parameterClass
="long"
resultMap
="result_base"
> select * from orders where id = #value#
</
select
>
<
select
id
="getByIdWithCash"
resultMap
="result"
resultClass
="orders"
parameterClass
="long"
> select * from orders where id = #value#
</
select
>
</
sqlMap
>
DAO
Java code
 
<!-- Code highlighting produced by Actipro CodeHighlighter (freeware) http://www.CodeHighlighter.com/ -->
public
interface CustomerDAO {
public Long insert(Customer c);
public List<Customer> getById(Long id);
public List<Customer> getWithCashById(Long id);
public List<Customer> getWithCashByIdInnerjoin(); }
public
class CustomerDAOImpl
extends SqlMapClientDaoSupport
implements CustomerDAO {
public Long insert(Customer c) {
return (Long) getSqlMapClientTemplate().insert("customer.insert",c); }
public List<Customer> getById(Long id) {
return getSqlMapClientTemplate().queryForList("customer.getById",id); }
public List<Customer> getWithCashById(Long id) {
return getSqlMapClientTemplate().queryForList("customer.getWithCashById",id); }
public List<Customer> getWithCashByIdInnerjoin(){
return getSqlMapClientTemplate().queryForList("customer.getWithCashByIdInnerjoin"); } }
public
interface OrdersDAO {
public Long insert(Orders o);
public Orders getById(Long id);
public List<Orders> findByCustomerId(Long cid);
public List<Orders> getByIdWithCash(Long id); }
public
class OrdersDAOImpl
extends SqlMapClientDaoSupport
implements OrdersDAO {
public Long insert(Orders o) {
return (Long) getSqlMapClientTemplate().insert("orders.insert", o); }
public Orders getById(Long id) {
return (Orders) getSqlMapClientTemplate().queryForObject("orders.getById", id); }
public List<Orders> findByCustomerId(Long cid) {
return getSqlMapClientTemplate().queryForList("orders.findByCustomerId", cid); }
public List<Orders> getByIdWithCash(Long id) {
return (List<Orders>) getSqlMapClientTemplate().queryForList("orders.getByIdWithCash",id); } }
test
Java code
/** * Created by IntelliJ IDEA.
* User: leizhimin
* Date: 2008-6-15 22:50:15
* Note: 客户订单一对多模型:客户 */ public class CustomerDAOTest { private CustomerDAO customerDAO = (CustomerDAO) ApplicationContextUtils.getApplicationContext().getBean("customerDAO"); public void testInsert() { System.out.println("--------insert(Customer c)--------"); Customer c = new Customer(); //fuck!竟然不支持级联保存! // Orders order1 = new Orders("o1"); // Orders order2 = new Orders("o2"); // c.getOrderlist().add(order1); // c.getOrderlist().add(order2); c.setName("多对一"); c.setSex("M"); c.setPostcode("450003"); c.setAddress("郑州市花园路"); Long pk = customerDAO.insert(c); System.out.println("插入数据的ID=" + pk); } public void testGetById() { System.out.println("--------getById(Long id)--------"); Long pk = 1L; List
list = customerDAO.getById(pk); for (Customer c : list) { System.out.println(c); } } public void testGetWithCashById() { System.out.println("--------getWithCashById(Long id)--------"); Long pk = 1L; List
list = customerDAO.getWithCashById(pk); for (Customer c : list) { System.out.println(c); } } public void testGetWithCashByIdInnerjoin() { System.out.println("--------getWithCashByIdInnerjoin()--------"); List
list = customerDAO.getWithCashByIdInnerjoin(); for (Customer c : list) { System.out.println(c); } } public static void main(String args[]) { System.out.println("正在测试CustomerDAO"); CustomerDAOTest customerDAOTest = new CustomerDAOTest(); customerDAOTest.testInsert(); customerDAOTest.testGetById(); customerDAOTest.testGetWithCashById(); customerDAOTest.testGetWithCashByIdInnerjoin(); } } public class OrdersDAOTest { OrdersDAO ordersDAO = (OrdersDAO) ApplicationContextUtils.getApplicationContext().getBean("ordersDAO"); public void testInsert() { System.out.println("--------getWithCashById(Long id)--------"); Orders o = new Orders("o1"); o.setCustomerId(1L); Long pk = ordersDAO.insert(o); System.out.println("所插入数据ID=" + pk); } public void testGetById() { System.out.println("--------getById(Long id)--------"); Orders o = ordersDAO.getById(1L); System.out.println("查询结果:" + o.toString()); } public void testFindByCustomerId() { System.out.println("--------findByCustomerId(Long cid)--------"); List
list = ordersDAO.findByCustomerId(1L); for(Orders o : list){ System.out.println(o); } } public static void main(String args[]){ System.out.println("正在测试OrderDAO"); OrdersDAOTest ordersDAOTest = new OrdersDAOTest(); ordersDAOTest.testInsert(); ordersDAOTest.testGetById(); ordersDAOTest.testFindByCustomerId(); ordersDAOTest.testGetByIdWithCash(); } public void testGetByIdWithCash(){ System.out.println("------------getByIdWithCash(Long id)----------"); List
list = ordersDAO.getByIdWithCash(1L); for(Orders o : list){ System.out.println(o +"\n\t"+o.getCustomer().toString()); } } }

转载于:https://www.cnblogs.com/jubincn/archive/2012/04/06/3381214.html

你可能感兴趣的文章
eclipse 编辑 python 中文乱码的解决方案
查看>>
Python 爬虫的集中简单方式
查看>>
数据库MySQL/mariadb知识点——触发器
查看>>
Ubuntu做Tomcat服务:insserv: warning: script 'tomcat' missing LSB tags and overrides
查看>>
Binary Agents
查看>>
入门Webpack,看这篇就够了
查看>>
短信拦截马”黑色产业链与溯源取证研究
查看>>
Mac Xdebug安装时遇到了Zend Engine API 不一致的问题
查看>>
最小公倍数
查看>>
asp.net如何定时执行任务
查看>>
在github上实现页面托管预览功能
查看>>
css选择器
查看>>
prim
查看>>
给陌生人写一封信
查看>>
noip2013花匠
查看>>
[CF]Equalize Them All
查看>>
React Ant design table表单与pagination分页配置
查看>>
重大发现: windows下C++ UI库 UI神器-SOUI(转载)
查看>>
linux 压缩文件的命令总结
查看>>
linux tail 命令详解
查看>>