1、要在ibatis里面使用命名空间需要在sqlMapConfig.xml中增加如下设置
2、写JavaBean类时 建议把属性全部写成引用类型 对于基本类型写成它对应的包装类型
这样可以避免数据库中对应的字段可以为空时 查询结果在映射时报错
3、
4、
配置4 parameterClass为java.util.ArrayList/List 这时在遍历时 不要property属性,否则报错。String index out of range: -1
具体可以参考http://hongzhguan.iteye.com/blog/1222353这篇博客 写的很详细了!
5、批量插入时 配置文件的写法:
同样empVoList也是empVO类的一个属性 必须写;#empVoList[].empno#, 说明:前面的empVoList代表的是VO中的属性 且这个属性必须是List OR是Iterabale类型的;
这个List里面放的还是empVO对象 后面的empno为empVO对象的一个属性 后面依次类推
如果传入的参数是List/Arraylist时 []前面的内容是不需要定义的 也就是说跟前面那个名没关系 但是[]必须要写 以让Ibatis知道你传入的是一个集合 下面的写法可以证明这一点
6、
上面那种写法传入的参数也是个List
7、VO类代码:
public class EmpVO implements Serializable{ private int empno; private String ename; private String job; private Integer mgr; private Date hiredate; private Float sal; private Float comm; private int deptno; private String[] empNames; private ListempNameList; private List empVoList; }
8、调用类代码:
public class CRUDTest { /** * @param args */ public static void main(String[] args) throws Exception{ CRUDTest test = new CRUDTest(); ListempList = test.getEmpList(); for(Iterator ite = empList.iterator(); ite.hasNext();) { System.err.println(ite.next()); } /* 通过员工姓名来查询*/ EmpVO empVO = new EmpVO(); empVO.setEmpNames(new String[]{"SMITH", "ALLEN", "WARD", "JONES"}); List empList1 = test.getEmpList(empVO); for(Iterator ite = empList1.iterator(); ite.hasNext();) { System.err.println(ite.next()); } List empNameList = new ArrayList (); empNameList.add("SMITH"); empNameList.add("ALLEN"); empNameList.add("WARD"); empNameList.add("JONES"); empVO.setEmpNameList(empNameList); List empList2 = test.getEmpListByListParam(empVO); for(Iterator ite = empList2.iterator(); ite.hasNext();) { System.err.println(ite.next()); } List empList3 = test.getEmpListByListParam(empNameList); for(Iterator ite = empList3.iterator(); ite.hasNext();) { System.err.println(ite.next()); } List empList4 = new ArrayList (); for(int i = 0; i < 4; i++) { EmpVO empVo = new EmpVO(); empVo.setComm(Float.valueOf(20 + i)); empVo.setDeptno(20); empVo.setEmpno(7935 + i); empVo.setEname("Andy-yong" + i); empVo.setJob("MANAGER" + i); empVo.setMgr(7902); empVo.setSal(Float.valueOf(1003 + i)); Map empVoMap = new HashMap (); empVoMap.put("empno", 7935 + i); empVoMap.put("ename", "Andy-yong" + i); empVoMap.put("job", "MANAGER" + i); empVoMap.put("mgr", 7902); empVoMap.put("sal", Float.valueOf(1003 + i)); empVoMap.put("comm", Float.valueOf(20 + i)); empVoMap.put("deptno", 30); empList4.add(empVo); } empVO.setEmpVoList(empList4); //int rowNums = Integer.valueOf((test.insertBatchEmpByListParam(empList4)).toString()); System.err.println(test.insertBatchEmpByListParam(empVO) + "**************"); } /** select without parameters * @throws SQLException */ public List getEmpList() throws SQLException{ return DaoUtil.getInstance().queryForList("emp.getSomeEmp"); } /** * select employees by enames 数组属性 * @return empVO list * @throws SQLException */ public List getEmpList(EmpVO empVO) throws SQLException{ return DaoUtil.getInstance().queryForList("emp.getSomeEmpByName", empVO); } /** parameter is a listProperty of the vo object 集合属性*/ public List getEmpListByListParam(EmpVO empVO) throws SQLException { return DaoUtil.getInstance().queryForList("emp.getSomeEmpByList", empVO); } /** parameter is a list 传入参数是个List*/ public List getEmpListByListParam(List empNameList) throws SQLException { return DaoUtil.getInstance().queryForList("emp.getSomeEmpByListParam", empNameList); } public Object insertBatchEmpByListParam(EmpVO empVOList) throws SQLException { return DaoUtil.getInstance().insert("emp.insertBatchEmp", empVOList); } }
9、参考博客: http://hongzhguan.iteye.com/blog/1222353; http://hi.baidu.com/xiami9910/blog/item/8caacc1f45fe9ccda686697b.html;
http://www.cnblogs.com/eugenewu0808/archive/2011/03/18/1987668.html;http://www.javadn.com/read.php?tid-790.html