我们已经对接了数据库,目前缺少ORM,我们采用iBATIS来实现ORM。
一、目录结构
talk is cheap,先看看我们项目的目录结构:
二、ORM类
我们先建立三个文件:
1.Person类:存放与数据库中表字段的对应关系,以及set、get方法
2.PersonDAO接口:对数据库表的操作功能
3.PersonDAOImpl类:实现PersonDAO接口
public class Person implements Serializable { private static final long serialVersionUID = -517413165963030507L; private int id; private String name; private int sex; /** * create table person(id int primary key, name varchar(10), sex int); */ public Person(){ } public Person(int id,String name,int sex){ this.id = id; this.name = name; this.sex = sex; } public int getId() { return id; } public void setId(int id) { this.id = id; } public String getName() { return name; } public void setName(String name) { this.name = name; } public int getSex() { return sex; } public void setSex(int sex) { this.sex = sex; } @Override public String toString() { return"id=" + id + "\tname=" + name + "\tsex=" + sex; } }
public interface PersonDAO { public boolean insertPerson(Person person); //添加 public boolean deleteById(int id); //删除 public List<Person> queryAllPerson(); //查询全部 }
public class PersonDAOImpl extends SqlMapClientDaoSupport implements PersonDAO { @Override public boolean insertPerson(Person person) { getSqlMapClientTemplate().insert("insertPerson",person); return false; } @Override public boolean deleteById(int id) { getSqlMapClientTemplate().delete("deleteById", id); return false; } @Override public List<Person> queryAllPerson() { List<Person> persons = getSqlMapClientTemplate().queryForList("queryAllPerson"); return persons; } }三、配置文件
1.引入ibatis的sqlmap包,在pom.xml中加入:
<dependency> <groupId>org.apache.ibatis</groupId> <artifactId>ibatis-sqlmap</artifactId> <version>2.3.4.726</version> </dependency>2.spring-core.xml文件里加入ibatis sql map定义:
<!-- iBatis SQL map定义 --> <bean id="sqlMapClient" class="org.springframework.orm.ibatis.SqlMapClientFactoryBean"> <property name="dataSource" ref="dataSource" /> <property name="configLocation" value="classpath:/sql-map-config.xml"/> </bean> <bean id="personDAOImpl" class="com.alibaba.druid.model.PersonDAOImpl"> <!-- dataSource不是必需 --> <property name="dataSource"> <ref local="dataSource" /> </property> <!-- sqlMapClient必需 --> <property name="sqlMapClient"> <ref local="sqlMapClient"/> </property> </bean> <!-- transactionManager不是必需 --> <bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager"> <property name="dataSource"> <ref local="dataSource" /> </property> </bean>3.第2步中涉及到sql-map-config.xml文件,新建这个文件,加入:
<?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE sqlMapConfig PUBLIC "-//iBATIS.com//DTD SQL Map Config 2.0//EN" "http://www.ibatis.com/dtd/sql-map-config-2.dtd"> <sqlMapConfig> <!--此处一定不能有<settings/> 标签--> <!--<settings cacheModelsEnabled="true"--> <!--enhancementEnabled="true"--> <!--lazyLoadingEnabled="true"--> <!--errorTracingEnabled="true"--> <!--maxRequests="32"--> <!--maxSessions="10"--> <!--maxTransactions="5"--> <!--useStatementNamespaces="false" />--> <sqlMap resource="person.xml" /> </sqlMapConfig>4.第3步中涉及到person.xml文件,新建这个文件,加入:
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE sqlMap PUBLIC "-//iBATIS.com//DTD SQL Map 2.0//EN" "http://www.ibatis.com/dtd/sql-map-2.dtd"> <sqlMap> <typeAlias alias="Person" type="com.alibaba.druid.model.Person" /> <insert id="insertPerson" parameterClass="Person"> <![CDATA[ insert into person values (#id#,#name#,#sex#) ]]> </insert> <delete id="deleteById" parameterClass="int"> <![CDATA[ delete from person where id=#id# ]]> </delete> <update id="updatePerson" parameterClass="Person"> <![CDATA[ update person set name=#name#,sex=#sex# where id=#id# ]]> </update> <select id="queryById" parameterClass="int" resultClass="Person"> <![CDATA[ select * from person where id=#id# ]]> </select> <select id="queryAllPerson" cacheModel="personCache" resultClass="Person"> <![CDATA[ select * from person ]]> </select> </sqlMap>四、测试
新建一个测试类,测试数据库连通性:
public class PersonDAOImplTest { private static ApplicationContext applicationContext; //提供静态ApplicationContext private static PersonDAOImpl personDAOImpl; static{ applicationContext = new ClassPathXmlApplicationContext("spring-core.xml"); personDAOImpl = (PersonDAOImpl)applicationContext.getBean("personDAOImpl"); } //添加操作 @Test public void testInsertPerson(){ personDAOImpl.insertPerson(new Person(1,"zhangsan",2)); } //删除操作 @Test public void testDeletePerson(){ personDAOImpl.deleteById(1); } //查询全部 @Test public void testQueryAllPerson(){ List<Person> persons = personDAOImpl.queryAllPerson(); //System.out.println(persons.size()); Iterator<Person> ite = persons.iterator(); while(ite.hasNext()){ Person person = ite.next(); System.out.println(person); } } }