Spring MVC+ibatis框架详解:[1]ibatis入门
1、先打开MyEclipse,右键菜单,新建一个JAVA工程,名称为ibatis-01,确定完成。
2、在工程里面新建一个文件夹,存放我们的ibatis相关jar包,ibatis依赖的jar包很少,几乎没有,不像hibernate,依赖好几个jar包
3、打开MyEclipse Database Exployer,作为MySQL客户端,创建一张表TB_USER,包含字段UID,USER_NAME,如图所示CREATE TABLE tb_user ( UID VARCHAR(255), USER_NAME VARCHAR(255) )
4、配置ibatis配置文件,如图<?xml version="1.0" encoding屏顿幂垂="UTF-8" ?><!DOCTYPE sqlMapConfig PUBLIC "-//ibatis.apache.org//DTD SQL Map Config 2.0//EN" "http://www.ibatis.com/dtd/sql-map-config-2.dtd"><sqlMapConfig><!-- 读取数据配置文件 --><properties resource="jdbc.properties" /> <!-- 基本的配置项 cacheModelsEnabled 是否使用缓存对象lazyLoadingEnabled 是否懒加载errorTracingEnabled 如果遇到异常是否打印statementCachingEnabled SQL上下文是否进行缓存useStatementNamespaces 是否使用命名空间classInfoCacheEnabled 类信息是否需要缓存enhancementEnabled 是否使用encachemaxRequests 最大请求数 maxSessions 最大接受的会话数maxTransactions 最大的处理事务数量defaultStatementTimeout SQL处理超时时间配置的时间要注意:maxRequests > maxSessions > maxTransactions --><settings cacheModelsEnabled="false" lazyLoadingEnabled="true" errorTracingEnabled="true" statementCachingEnabled="true" useStatementNamespaces="true" classInfoCacheEnabled="true" enhancementEnabled="true" defaultStatementTimeout="60" maxRequests="512" maxSessions="256" maxTransactions="128" /><!-- 事务管理器类型 --><transactionManager type="JDBC"> <dataSource type="SIMPLE"> <property name="JDBC.Driver" value="${driver}" /> <property name="JDBC.ConnectionURL" value="${url}" /> <property name="JDBC.Username" value="${username}" /> <property name="JDBC.Password" value="${password}" /> </dataSource> </transactionManager><!-- JAVA POJO类映射文件,也是我们手写SQL的注入文件 --><sqlMap resource="com/dfzq/ibatis01/domain/TB_USER_SqlMap.xml"/></sqlMapConfig>
5、再编写TB_USER_SqlMap.xml文件,文件存放在com.dfzq.ibatis01.domain包下面,如图所示<?xml version="1.0" encoding="U皈其拄攥TF-8" ?><!DOCTYPE sqlMap PUBLIC "-//ibatis.apache.org//DTD SQL Map 2.0//EN" "http://ibatis.apache.org/dtd/sql-map-2.dtd" ><sqlMap namespace="TB_USER" > <resultMap id="BaseResultMap" class="com.dfzq.ibatis01.domain.TbUser" > <result column="UID" property="uid" jdbcType="VARCHAR" /> <result column="USER_NAME" property="userName" jdbcType="VARCHAR" /> </resultMap><select id="queryUserByUid" parameterClass="java.lang.String" resultMap="BaseResultMap">select UID, USER_NAME from TB_USER where UID=#uid:VARCHAR#</select><insert id="addUser" parameterClass="com.dfzq.ibatis01.domain.TbUser">insert into TB_USER(UID,USER_NAME)values(#uid:VARCHAR#,#userName:VARCHAR#)</insert><update id="updateUser" parameterClass="com.dfzq.ibatis01.domain.TbUser">update TB_USER set USER_NAME=#userName:VARCHAR# where UID=#uid:VARCHAR#</update><delete id="deleteUser" parameterClass="java.lang.String">delete from TB_USER where UID=#uid:VARCHAR#</delete></sqlMap>
6、再在包com.dfzq.ibatis01.domain下面创建一个TbUser.java,与SQLMap的XML文件保持一致package com.dfzq.ibatis01.domain;public class TbUser{private String uid;private String userName;public String getUid() {return uid;}public void setUid(String uid) {this.uid = uid;}public String getUserName() {return userName;}public void setUserName(String userName) {this.userName = userName;}}
7、最后编写测试类,在包com.dfz孥恶膈茯q.ibatis01.runner下面创建IbatisRunner.java类,类里面包含一个ma足毂忍珩in入口函数,如图所示package com.dfzq.ibatis01.runner;import java.io.IOException;import java.io.Reader;import java.sql.SQLException;import com.dfzq.ibatis01.domain.TbUser;import com.ibatis.common.resources.Resources;import com.ibatis.sqlmap.client.SqlMapClient;import com.ibatis.sqlmap.client.SqlMapClientBuilder;public class IbatisRunner {public static void main(String[] args) { try { //初始化SqlMapClient,读入配置文件, Reader reader = Resources.getResourceAsReader("sql-map-config.xml"); SqlMapClient sqlMapClient = SqlMapClientBuilder.buildSqlMapClient(reader); //插入一条数据 TbUser user = new TbUser(); user.setUid("xiaoming"); user.setUserName("xiaoming"); sqlMapClient.insert("TB_USER.addUser",user); //查询刚插入的数据 TbUser user2 = (TbUser) sqlMapClient.queryForObject("TB_USER.queryUserByUid", "xiaoming"); System.out.println("1______查询结果:uid="+user2.getUid()+",userName="+user2.getUserName()); //修改刚刚查到的数据 user2.setUserName("xiaoming brother"); sqlMapClient.update("TB_USER.updateUser",user2); user2 = (TbUser) sqlMapClient.queryForObject("TB_USER.queryUserByUid", "xiaoming"); System.out.println("2______查询结果:uid="+user2.getUid()+",userName="+user2.getUserName()); //删除数据,并验证是否已经删除成功 sqlMapClient.delete("TB_USER.deleteUser","xiaoming"); user2 = (TbUser) sqlMapClient.queryForObject("TB_USER.queryUserByUid", "xiaoming"); if(null!=user2){ System.out.println("3______查询结果:uid="+user2.getUid()+",userName="+user2.getUserName()); } else { System.out.println("3______查询结果:xiaoming brother 已经被删除"); } //释放资源 reader.close();} catch (IOException e) {e.printStackTrace();} catch (SQLException e) {e.printStackTrace();} }}
8、最终的目录结构和文件如图所示
9、运行IbatisRunner.java