【SSI开发总结.7】Struts+Spring+Ibatis环境配置(二)

spring提供了ibatis的模板类封装,通过简单的设置就能使用ibatis了

1. 编写POJO

package model;

public class Product{
private int id;//产品ID
private int user_id;//用户ID
private int count;//商品数量
private String name;//商品名称
private String detail;//商品细节
private String time;//发布时间



public int getCount() {
return count;
}
public void setCount(int count) {
this.count = count;
}
public String getDetail() {
return detail;
}
public void setDetail(String detail) {
this.detail = detail;
}
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 String getTime() {
return time;
}
public void setTime(String time) {
this.time = time;
}
public int getUser_id() {
return user_id;
}
public void setUser_id(int user_id) {
this.user_id = user_id;
}

}

2. 在Spring配置文件中配置IBATIS

/****** /web-inf/bean-main.xml*******/

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN 2.0//EN"
"http://www.springframework.org/dtd/spring-beans-2.0.dtd">
<beans>

<!-- 1.配置数据源 -->
<bean id="myDataSource"
class="org.springframework.jdbc.datasource.DriverManagerDataSource">
<property name="driverClassName"
value="com.microsoft.jdbc.sqlserver.SQLServerDriver" />
<property name="url"
value="jdbc:microsoft:sqlserver://localhost:1433;DatabaseName=game" />
<property name="username" value="sa" />
<property name="password" value="123456" />
</bean>
<!-- 2.配置数据工厂(ibatis) -->
<bean id="myIbatis"
class="org.springframework.orm.ibatis.SqlMapClientFactoryBean">
<property name="configLocation"
value="/WEB-INF/ibatis-sql-map-config.xml" />

<property name="dataSource" ref="myDataSource" />
</bean>
</beans>

其中<property name="configLocation"
value="/WEB-INF/ibatis-sql-map-config.xml" />指定ibatis配置文件路径

3.配置IBATIS

/****** /web-inf/ibatis-sql-map-config.xml *******/

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE sqlMapConfig
PUBLIC "-//ibatis.apache.org//DTD SQL Map Config 2.0//EN"
"http://ibatis.apache.org/dtd/sql-map-config-2.dtd">
<sqlMapConfig>
<settings useStatementNamespaces="true" />
<sqlMap resource="ibatis/product.xml"/>
</sqlMapConfig>

其中<settings useStatementNamespaces="true" /> 表示允许使用命名空间,保证不同的映射文件存在相同的查询定义标签ID时不冲突,在使用命名空间之前,必须配置。而sqlmap标签用于指定映射文件路 径,所有路径都相对于应用程序的类路径,比如/web-inf/classes,在开发阶段,相对于SRC路径就可以了。。。。

4.配置IBATIS映射

/****** /ibatis/product.xml *******/

<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE sqlMap
PUBLIC "-//ibatis.apache.org//DTD SQL Map 2.0//EN"
"http://ibatis.apache.org/dtd/sql-map-2.dtd">
<sqlMap namespace="product">

<typeAlias alias="Product" type="model.Product"/>


<select id="readForId" resultClass="Product" parameterClass="java.lang.Integer">
select * from product where id=#value#
</select>
<insert id="add" parameterClass="Product">
insert into product (user_id,name,detail,[time])
values (#user_id#,#name#,#detail#,#time#)
</insert>
<delete id="delete" parameterClass="java.lang.Integer">
delete from product where id=#value#
</delete>
<update id="updateCount" parameterClass="java.lang.Integer">
update product set [count]=[count]-1 where id=#value#
</update>
</sqlMap>

如果查询语句包含比较运算符,用" <![CDATA[ ]]> "包含,typeAlias标签,指定实体类名字,便于后面的标签引用

5.编写DAO类,并继承自ActionSupport类

package dao;

import org.springframework.orm.ibatis.support.SqlMapClientDaoSupport;
import java.util.*;
import model.Product;

public class ProductDao extends SqlMapClientDaoSupport {
//读取特定产品
public Product readForId(int id){
return (Product)getSqlMapClientTemplate().queryForObject("product.readForId",id);
}
//增加产品
public void add(Product product){
getSqlMapClientTemplate().insert("product.add",product);
}
//删除产品
public void delete(int id){
getSqlMapClientTemplate().delete("product.delete",id);
}
//更新产品数量
public void updateCount(int id){
getSqlMapClientTemplate().update("product.updateCount",id);
}
}

在spring配置文件中,对DAO注入sqlMapClient对象,本类中,getSqlMapClientTemplate()方法就能得到sqlMapClient对象的引用,以下为注入的例子:

......................................................................

<bean id="productDao" class="dao.ProductDao">
<property name="sqlMapClient" ref="myIbatis" />
</bean>

.....................................................................

配置好IBATIS,配置好DAO,剩下的就是把DAO注入到需要数据库操作的BO对象中,实现业务逻辑了:

......................................................................

<bean id="productBo" class="bo.ProductBo">
<property name="dao" ref="productDao" />
</bean>

.....................................................................

你可能感兴趣的:(spring)