这是一个简单的ibatis 增删改查例子。做为初学者参考
使用本程序时,要下载ibatis的jar 包放可运行。
package com.test; import java.io.Serializable; /*** * * @author doudou * 一个实体类 */ public class Person implements Serializable { private int id; private String name; private String password; public String getName() { return name; } public void setName(String name) { this.name = name; } public String getPassword() { return password; } public void setPassword(String password) { this.password = password; } public int getId() { return id; } public void setId(int id) { this.id = id; } }
package com.test; import java.io.Reader; import com.ibatis.common.resources.Resources; import com.ibatis.sqlmap.client.SqlMapClient; import com.ibatis.sqlmap.client.SqlMapClientBuilder; public class MySqlMapClient { private static SqlMapClient sqlMapClient; //指定 ibatis配置文件的路径 private static String path = "com/test/SqlMapConfig.xml"; static { Reader reader = null; try { //初始,加载配置文件 reader = Resources.getResourceAsReader(path); sqlMapClient = SqlMapClientBuilder.buildSqlMapClient(reader); } catch (Exception ex) { ex.printStackTrace(); } } public static SqlMapClient getSqlMapClient() { return sqlMapClient; } } /******SqlMapConfig.xml***/ "http://ibatis.apache.org/dtd/sql-map-config-2.dtd"> /****jdbc.properties***/ driver=com.mysql.jdbc.Driver url=jdbc:mysql://localhost:3306/icinfo username=root password=root
/***Person.xml***/ "http://www.ibatis.com/dtd/sql-map-2.dtd"> //在这里定义的是一些对数据库 增删改查的语句 insert into person(name,password) values(#name#,#password#) delete from person where id = #id# update person set name=#name#,password=#password# where id=#id# select id,name,password from person where id=#id# select * from person select id,name,password from person select count(*) from person; select count(*)count,max(id)max from person /**DAO ***/ package com.test; import java.sql.SQLException; import java.util.Iterator; import java.util.List; import java.util.Map; import com.ibatis.sqlmap.client.SqlMapClient; /*** * * @author doudou * 在这里请注意和Person.xml文件对应去看。这样更清楚些。 */ public class DAO { private SqlMapClient sqlMapClient = MySqlMapClient.getSqlMapClient(); /** * * @param person * @throws SQLException */ public void insertPerson(Person person) throws SQLException { /* insert("insertPerson",person) * insertPerson 是你在配置文件里的一个插入的id名称 * insert into person(name,password) values(#name#,#password#) * * person 当然是你赋好值的一个Person 对象啦! * */ sqlMapClient.insert("insertPerson", person); } public void deletePerson(Person person) throws SQLException { //同上。。。不做详细介绍 sqlMapClient.delete("deletePerson", person); } public void updatePerson(Person person) throws SQLException { //同上。。。不做详细介绍 sqlMapClient.update("updatePerson", person); } public Person getPerson(Person person) throws Exception { /* * 这个查询是 返回一个对象 * 所以在Person.xml里的配置也会有所不同。 * */ return (Person) sqlMapClient.queryForObject("getPerson", person); } public List getAllPerson() throws Exception { /* *这里是查询所有的数据 返回一个List集合。集合里放的是你配置的对象,很有趣, * queryForList("getAllPerson", "name", 2,4); * "getAllPerson"这个不用解释了,就是配置里面的id名称 * "name" 这个name 有点不清楚什么意思 赋个""也是没问题的。 * 2,4 这个有点像hibernate 的 setFirstResult(int arg0) & setMaxResults(int arg1); * 表示从第二第数据开始,拿后面四条。做分页很方便。 * * queryForList("getAllPerson", "name"); 这个就是查询所有了。 * */ return sqlMapClient.queryForList("getAllPerson", "name", 2,4); //return sqlMapClient.queryForList("getAllPerson", "name"); } public Map getAllPersonByMap() throws Exception { /* * queryForMap("getAllPersonByMap", null, "id");返回一个Map集合 * null 这个东西也搞不清楚是干啥的。不知道有什么用。 * "id" 表示 在Map集合里的key 是id的值。 * * */ return sqlMapClient.queryForMap("getAllPersonByMap", null, "id"); } //聚合查询 public int getCount() throws SQLException { /* * 聚合查询 返回一个int类型的值 针对一行一列的值。 * */ return (Integer)sqlMapClient.queryForObject("getCount", null); } public Map get() throws Exception { /* * 聚合查询 返回一个Map,可以是一列或多列 * */ return sqlMapClient.queryForMap("get", null, "count"); }