那么是如何集成的呢?
【一】 建立USER_Info_DaoImpl.java类映象属性—base.dao.model.users—Model_USERS_INFO.java—建表(和数据库相关的、程序中要用的字段的定义) 详解代码
创建SqlMap
使用iBATIS SqlMaps涉及创建包含语句和结果对应关系的配置文件。 Spring会负责使用SqlMapFactoryBean或SqlMapClientFactoryBean来读取这些配置文件, 其中后一个类是同SqlMaps2.0联合使用的。
package base.dao.model.users;
public class Model_USERS_INFO {
//-----------------database------------------
private int id;
private String user_name;
private String user_sex;
private String user_dep;
private String user_position;
private String work_id;
private String identity_card;
private String user_pla;
private String user_fam;
private String user_phone;
private String user_limt;
private String adm_count;
private String adm_password;
public String getAdm_count() {
return adm_count;
}
public void setAdm_count(String adm_count) {
this.adm_count = adm_count;
}
public String getAdm_password() {
return adm_password;
}
public void setAdm_password(String adm_password) {
this.adm_password = adm_password;
}
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getIdentity_card() {
return identity_card;
}
public void setIdentity_card(String identity_card) {
this.identity_card = identity_card;
}
public String getUser_dep() {
return user_dep;
}
public void setUser_dep(String user_dep) {
this.user_dep = user_dep;
}
public String getUser_fam() {
return user_fam;
}
public void setUser_fam(String user_fam) {
this.user_fam = user_fam;
假设我们要映射这个类,我们就要创建如下的SqlMap。通过使用查询,我们稍后可以用users.xml:
【二】 编写 Model_USERS_INFO.xml 映象文件—base.conf.ibatis.users—users.xml—链接(在数据库中的底层数据在这里完成SQL语言和JAVA语言的转化,这是ibatis优于Hibernate的重要地方,因为在以后的使用中可以进行调用在这里定义过的函数的ID来省略Hibernate中SQL的“随处嵌套”)
?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="User" >
<typeAlias alias="users_info" type="base.dao.model.users.Model_USERS_INFO"/>
<select id="users.info.getObjPage" resultClass="users_info" parameterClass="java.util.Map" >
select id,user_name,user_sex,user_dep,
user_position,work_id,identity_card,user_pla,
user_fam,user_phone,adm_count,adm_password
from users_info
where
<dynamic>
<isNotEmpty prepend="AND" property="user_name">
user_name = #user_name#
</isNotEmpty>
<isNotEmpty prepend="AND" property="user_sex">
user_sex = #user_sex#
</isNotEmpty>
<isNotEmpty prepend="AND" property="user_dep">
在定义完SqlMap之后,我们必须为iBATIS创建一个配置文件 (sqlmap-config.xml)
【三】编写 SqlMapConfig.xml文件—base.conf.ibatis—ibatis.xml—ibatis的配置文件(包括sqlmap等配置文件,实现了关系数据库到Java中的对象映射,术语称之为JAVA的持久化) <?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 cacheModelsEnabled="true"
enhancementEnabled="true" maxRequests="256" maxSessions="64" maxTransactions="16"/>
<!-- EQU -->
<!-- <sqlMap resource="base/conf/ibatis/equ/EquInfo.xml"/> -->
<!-- USERS -->
<sqlMap resource="base/conf/ibatis/users/users.xml"/>
</sqlMapConfig>
iBATIS会从classpath读取资源,所以要确保Account.xml文件在classpath上面。
用Spring,我们现在能够很容易地通过 SqlMapFactoryBean创建SqlMap:
【四】配置 ApplicationContext.xml文件—base.conf-spring—spring_db.xml—详解
以下是详解Spring的applicationContext.xml文件代码(spring_db.xml)
<!-- 头文件,主要注意一下编码 -->
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN" "http://www.springframework.org/dtd/spring-beans.dtd">
<beans>
<!-- 建立数据源 -->
<bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource">
<!-- 数据库驱动,我这里使用的是Mysql数据库 -->
<property name="driverClassName">
<value>com.mysql.jdbc.Driver</value>
</property>
<!-- 数据库地址,这里也要注意一下编码,不然乱码可是很郁闷的哦! -->
<property name="url">
<value>
jdbc:mysql://localhost:3306/tie?useUnicode=true&characterEncoding=utf-8
</value>
</property>
<!-- 数据库的用户名 -->
<property name="username">
<value>root</value>
</property>
<!-- 数据库的密码 -->
<property name="password">
<value>123</value>
</property>
</bean>
<bean id="sqlMapClient" class="org.springframework.orm.ibatis.SqlMapClientFactoryBean">
<property name="configLocation">
<value>classpath:/base/conf/ibatis/ibatis.xml</value>
</property>
</bean>
</beans>
【五】编写 Dao.java(实现类)—base.dao.def.users—IUSR_Info_Dao.java
后台函数供前台调用,在以后的ACTION的使用中就可以直接调用了,到此springframe封装完成!
package base.dao.ibatis.users;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import org.springframework.orm.ibatis.support.SqlMapClientDaoSupport;
import base.dao.def.users.IUSR_Info_Dao;
//import base.dao.model.ajax.Model_AJAX_ENI_Equ;
import base.dao.model.users.Model_USERS_INFO;
//import base.dao.model.inv.Model_INV_RpGoods;
public class USR_Info_DaoImpl extends SqlMapClientDaoSupport implements
IUSR_Info_Dao {
public boolean deleteObjByID(int id) throws Exception {
try{
this.getSqlMapClientTemplate().delete("users.info.deleteObjByID",id);
return true;
}catch(Exception e){
e.printStackTrace();
}
return false;
}
public int getCountOfObj(Map obj) throws Exception {
try{
Integer o = (Integer)getSqlMapClientTemplate().queryForObject("users.info.getObjCount", obj);
return o.intValue();
}catch(Exception e){
e.printStackTrace();
}
return 0;
}
public Model_USERS_INFO getObjByID(int id) throws Exception {
return (Model_USERS_INFO)this.getSqlMapClientTemplate().queryForObject("users.info.getObjByID",id);
}
public List<Model_USERS_INFO> getObjPage(Map obj, int pageStart, int pageSize, String ziduan,String paixu)
throws Exception {
obj.put("rowStart", (pageStart-1)*pageSize);
obj.put("rowCount", pageSize);
obj.put("ziduan", ziduan);
obj.put("paixu", paixu);
return getSqlMapClientTemplate().queryForList("users.info.getObjPage",obj);
}
public List<Model_USERS_INFO> getObjPage(Map obj, int pageStart, int pageSize)
throws Exception {
obj.put("rowStart", (pageStart-1)*pageSize);
obj.put("rowCount", pageSize);
return getSqlMapClientTemplate().queryForList("users.info.getObjPage",obj);
}
public boolean saveObj(Model_USERS_INFO obj) throws Exception {
try{
this.getSqlMapClientTemplate().insert("users.info.saveObj",obj);
return true;
}catch(Exception e){
e.printStackTrace();
}
return false;
}
public boolean updateObj(Model_USERS_INFO obj) throws Exception {
try{
this.getSqlMapClientTemplate().update("users.info.updateObjByID",obj);
return true;
}catch(Exception e){
e.printStackTrace();
}
return false;
}
}
【有经验者谈1】Spring自身有一个ibatis模板类SqlMapClientTemplate,你继承这个类就可以获取你想要的东西,这是一种叫做模板方法的设计模式,Spring使用这种设计模式来管理Dao的通用增删改查方法,很方便。
【有经验者谈2】持久化是将Java虚拟机对象持久保存,而不是将数据库映射为对象,通常数据的存储是用数据库实现的;当然,如果你有更好的存储系统,也可以映射到系统中的存储设备中,这可能需要你自行开发持久化框架来进行持久化一个Java对象。如果是持久化到数据库,现在已经涌出许多ORM框架,像Hibernate,轻量级的ibatis,都是不错的选择。
现在大部分数据库还是关系型的,而Java是面向对象的语言,很明显将一个对象型的数据如何保存到关系型数据库中呢?这就要借助强大的ORM框架解决这个问题。
比如ibatis框架,使用时只要配置好sqlMapConfig及相应的sqlMap配置文件,只要保存对象或更新对象及可,编程时不再需要写sql才能操作数据,查找时同样查到的是对象数据而不是关系型数据,通过对象set(para),get()方法插入及取得对应数据,Hibernate也是同样的,这里不再祥述,现在网上资料及相关书籍中有很多这样的讲解,了解、熟悉甚至精通这些需要研读相关书籍,有兴趣的话最好研读源码,以上都是开源的框架,网上即可下到
我的感受: 这是最近自己利用空闲时间做的,多少的先理解了这些。希望牛人们看一看,有不对的地方指点指点!