ibatis学习过程
ibatis的SqlClient通过读取sqlMapConfig信息建立一个Sql客户端,而由于SqlMapConfig中对数据库进行配置,并且加载数据源不同的SqlMap映射文件,因此在ibatisTest中通过SqlClient调用其方法,然后在SqlClient中通过其新建的SqlMap客户端来调用对应的映射文件中的sql语句
SqlMap映射文件
1 2 3 DOCTYPE sqlMap 4 PUBLIC "-//ibatis.apache.org//DTD SQL Map 2.0//EN" 5 "http://ibatis.apache.org/dtd/sql-map-2.dtd"> 6 //命名空间 78 9
//别名 1011 12
//返回结果集映射 1617 27 28 29 41 5518 19 20 21 22 23 24 25 26 56 delete from emp where empno=#empno# 57 5859 update emp set ename=#ename# where empno=#empno# 60 6162 insert into emp(empno,ename) values (#empno#,#ename#) 63 64
SqlMapConfig类 (在ibatis中,在SqlMapConfig中配置数据库连接属性和SqlMap数据源)
1 2 3 DOCTYPE sqlMapConfig 4 PUBLIC "-//ibatis.apache.org//DTD SQL Map Config 2.0//EN" 5 "http://ibatis.apache.org/dtd/sql-map-config-2.dtd"> 6 78 9
//节点 事务交给JDBC处理 1220 21
//配置Oracle数据源 1314 1915 16 17 18
//配置SqlMap映射文件数据源 2324 28 29
SqlClient(在SqlClient中去读取SqlMapConfig的信息,并且根据信息建立一个SqlMap客户端,并在该类中新建方法,在方法中利用客户端去调用SqlMap中的方法)
package com.yinhai.ibatisdemo.ibatis.test;
import com.ibatis.sqlmap.client.SqlMapClient;
import com.ibatis.sqlmap.client.SqlMapClientBuilder;
import com.ibatis.common.resources.Resources;
import com.yinhai.ibatisdemo.ibatis.domain.Emp;
import java.io.Reader; import java.io.IOException; import java.util.List; import java.sql.SQLException; public class SqlClient { private static SqlMapClient sqlMapper; static { try {
//读取SqlMapConfig的信息 Reader reader = Resources.getResourceAsReader("SqlMapConfig.xml");
//根据读取到的信息建立一个SqlMapClient客户端 sqlMapper = SqlMapClientBuilder.buildSqlMapClient(reader);
//关闭读取流 reader.close(); } catch (IOException e) { // Fail fast. throw new RuntimeException("Something bad happened while building the SqlMapClient instance." + e, e); } } // 查询所有信息 public static List selectAllEmps () throws SQLException { return sqlMapper.queryForList("emp.selectAllEmps"); } //根据id查询信息 public static Emp selectEmpById(Integer empno) throws SQLException { return (Emp)sqlMapper.queryForObject("emp.selectEmpById",empno); } /*新增*/ public static int insertEmp(Emp emp)throws SQLException{ return sqlMapper.update("emp.insertEmp",emp); } /*修改*/ public static int updateEmp(Emp emp)throws SQLException{ return sqlMapper.update("emp.updateEmp",emp); } /*删除*/ public static int deleteEmp(Integer empno)throws SQLException{ return sqlMapper.update("emp.deleteEmp",empno); } }
ibatisTest(通过SqlClient对应的方法去调用对应的SqlMap)
1 package com.yinhai.ibatisdemo.ibatis.test;
2
3 import com.yinhai.ibatisdemo.ibatis.domain.Emp;
4
5 import java.sql.SQLException;
6 import java.util.List;
7
8 public class ibatisTests {
9 public static void main(String[] args) { 10 try { 11 //查询 12 List list=SqlClient.selectAllEmps(); 13 for (Object i:list 14 ) { 15 System.out.println(i); 16 } 17 // System.out.print("one"+list.toString()); 18 19 //根据id查询 20 // Emp emp=SqlClient.selectEmpById(9999); 21 // System.out.print("two "+emp); 22 //删除 23 // int i = SqlClient.deleteEmp(1466); 24 // System.out.print(i); 25 26 //修改 27 // Emp emp = new Emp(); 28 // emp.setEname("测试"); 29 // emp.setEmpno(1483); 30 // int i = SqlClient.updateEmp(emp); 31 // System.out.print(i); 32 //新增 33 // Emp emp = new Emp(); 34 // emp.setEmpno(1011); 35 // emp.setEname("傅旭东"); 36 // int i = SqlClient.insertEmp(emp); 37 // System.out.print(i); 38 }catch(SQLException e){ 39 e.printStackTrace(); 40 } 41 42 } 43 }