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
<!--
Code highlighting produced by Actipro CodeHighlighter (freeware)
http://www.CodeHighlighter.com/
-->
/**
* Created by IntelliJ IDEA.<br>
* <b>User</b>: leizhimin<br>
* <b>Date</b>: 2008-6-15 22:50:15<br>
* <b>Note</b>: 客户订单一对多模型:客户
*/
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<Customer> 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<Customer> list = customerDAO.getWithCashById(pk);
for (Customer c : list) {
System.out.println(c);
}
}
public void testGetWithCashByIdInnerjoin() {
System.out.println("--------getWithCashByIdInnerjoin()--------");
List<Customer> 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<Orders> 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<Orders> list = ordersDAO.getByIdWithCash(1L);
for(Orders o : list){
System.out.println(o +"\n\t"+o.getCustomer().toString());
}
}
}
分享到:
相关推荐
ibatis教程_插入一个实体对象.raribatis教程_插入一个实体对象.raribatis教程_插入一个实体对象.rar
通过Ibatis3xml文件配置+Mysql实现数据批量插入,原先在网上找很多,都是关于批量更新,批量插入的很少,而且其写法又完全不同,所以自己研究了一下。可供参考。另外插入时如出现内容报错,请参照my.cnf修改书库配置...
04_传智播客ibatis教程_插入一个实体对象04_传智播客ibatis教程_插入一个实体对象
04_ibatis教程_插入一个实体对象.zip 04_ibatis教程_插入一个实体对象.zip
iBATIS 级联iBATIS 级联iBATIS 级联
ibatis批量
Ibatis复杂查询语句.doc
ibatis学习 ibatis总结 ibatis ibatis ibatis
ibatis教程_查询指定id的单个对象 ibatis教程_查询指定id的单个对象
ibatis教程_删除指定id的单个对象.raribatis教程_删除指定id的单个对象.raribatis教程_删除指定id的单个对象.rar
NULL 博文链接:https://vbtboy.iteye.com/blog/831099
ibatis资料ibatis资料ibatis资料ibatis资料ibatis资料ibatis资料ibatis资料ibatis资料ibatis资料
ibatis 读取oracle clob类型
Ibatis一对一映射提示,需要学习的同学请关注,谢谢。
ibatis日期格式.doc
ibatis
利用ibatis实现一对一、多对一的示例代码。每种关系用两种方式实现,具体的讲解可看我的博客http://blog.csdn.net/duwenchao1986/article/details/8565386
ibatis demo,ibatis例子,ibatis示例
ibatis入门与ibatis迭代的用法
复杂类型属性(即自定义类型的属性) 避免N+1 Select(1:1) 延迟加载 VS 联合查询(1:1) 复杂类型集合的属性 避免N+1 Select(1:M和M:N) 组合键值或多个复杂参数属性 支持Parameter Map和Result Map的数据类型 ...