使用ibatis
首先导入一个ibatis jar包,然后在项目src下,添加了两个xml文件,一个是user.xml映射文件,另一个是 ibatis的基本配置文件sqlMapClient.xml
User.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="User">
<resultMap id="result" class="com.user.entity.User">
<result property="userId" column="user_id" columnIndex="1"/>
<result property="name" column="user_name" columnIndex="2"/>
<result property="sex" column="user_sex" columnIndex="3"/>
<result property="birthday" column="user_birthday" columnIndex="4"/>
<result property="passWord" column="user_passWord" columnIndex="5"/>
<result property="email" column="user_email" columnIndex="6"/>
<result property="state" column="user_state" columnIndex="7"/>
</resultMap>
<insert id="INSERT_sql">
INSERT INTO t_users(user_name,user_sex,user_birthday,user_passWord,user_emal,user_state)
VALUES(#name#,#sex#,#birthday#,#passWord#,#email#,
#state#)
</insert>
</sqlMap>
ibatis基本配置文件sqlMapClient.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>
<sqlMap resource="User.xml"/>
</sqlMapConfig>
在spring配置文件applicationContext.xml 中注入sqlMapClien.xml
<?xml version="1.0" encoding="UTF-8"?>
<beans
xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:p="http://www.springframework.org/schema/p"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-2.5.xsd">
<bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource">
<property name="driverClassName" value="com.mysql.jdbc.Driver">
</property>
<property name="url" value="jdbc:mysql://localhost:3306/jd1115db">
</property>
<property name="username" value="root"></property>
<property name="password" value="1234"></property>
</bean>
<!-- Action -->
<bean id="registAction" class="com.user.action.RegistAction">
<property name="userService" ref="userService">
</property>
</bean>
<!-- service -->
<bean id="userService" class="com.user.service.UserService">
<property name="dao" ref="userDao"/>
</bean>
<!-- dao -->
<bean id="userDao" class="com.user.dao.UserDao">
<property name="sqlMapClient" ref="sqlMapClient"/>
</bean>
<!-- 将数据源dataSource 与ibatis 基本文件 sqlMapClient.xml注入到 spring提供的ibatis的 SqlMap 配置 -->
<bean id="sqlMapClient"
class="org.springframework.orm.ibatis.SqlMapClientFactoryBean">
<property name="configLocation" value="sqlMapClient.xml"></property>
<property name="dataSource" ref="dataSource"></property>
</bean>
</beans>
Userdao
/*
*继承SqlMapClientDaoSupport
*/
public class UserDao extends SqlMapClientDaoSupport implements IUserDao{
/*
* 插入数据方法
* InsertUser() 方法
* @param User user 参数说明
* @return 无
* @throws Exception
* */
public void InsertUser(User user)throws Exception {
//从配置文件中获取到sql语句,然后执行getSqlMapClientTemplate() getSqlMapClientTemplate().update("INSERT_sql",user);
}
再添上 Service 和 Action 、jsp 页面
运行:注册界面:插入数据成功,跳转到登录界面,数据库里,得到插入的新数据
写代码时遇到的情况:
运行时,报错:
Document root element "sqlMapConfig", must match DOCTYPE root "null".
经过检查,发现是sqlMapConfig.xml配置文件写错,文件读不出数据
User.xml配置文件也写错,经过修改,程序运行正常
总结:sqlMapConfig.xml,与User.xml 配置文件不同,这种情况容易被忽视。
使用ibatis后,代码量明显减少了,不仅不用再重复的写connection ,而且sql语句与UserDao分隔开来,真的方便管理。今天也解决了我昨天的问题,就是不用在从spring配置文件中调用sql语句,和使用时写那些String “sql name” 和get、set 方法。