您的位置:首页 > 编程语言 > Java开发

spring系列之3--iBATIS的使用

2015-10-13 20:36 429 查看
我们已经对接了数据库,目前缺少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;
}
}
三、配置文件[/code]
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定义:[/code]
<!-- 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文件,新建这个文件,加入:[/code]
<?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文件,新建这个文件,加入:[/code]
<?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>
四、测试[/code]
新建一个测试类,测试数据库连通性:
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);
}
}
}
[/code]

                                            
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: