项目结构:

依赖jar:

数据库依赖:

 CREATE TABLE `person` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`name` varchar(45) NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 CREATE TABLE `user_account` (
`userid` int(11) NOT NULL AUTO_INCREMENT,
`username` varchar(30) NOT NULL,
`password` varchar(30) NOT NULL,
`groupname` varchar(10) NOT NULL,
PRIMARY KEY (`userid`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8
 INSERT INTO ssi.user_account (userid, username, password, groupname) VALUES (1, 'LMEADORS', 'PICKLE', 'EMPLOYEE');
INSERT INTO ssi.user_account (userid, username, password, groupname) VALUES (2, 'JDOE', 'TEST', 'EMPLOYEE');

数据库连接信息:db.properties

driverClass=com.mysql.jdbc.Driver
url=jdbc:mysql://localhost:3306/ssi
username=root
password=

主配置文件:sqlMapConfig.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>
<properties resource="db.properties"/>
<!--iBatis配置信息-->
<settings enhancementEnabled="true"
useStatementNamespaces="true"
cacheModelsEnabled="true"
lazyLoadingEnabled="true"/> <!--事务管理器-->
<transactionManager type="JDBC">
<!--数据库连接信息-->
<dataSource type="SIMPLE">
<property name="JDBC.Driver" value="${driverClass}"/>
<property name="JDBC.ConnectionURL" value="${url}"/>
<property name="JDBC.Username" value="${username}"/>
<property name="JDBC.Password" value="${password}"/>
</dataSource>
</transactionManager>
<!-- 映射文件位置 -->
<sqlMap resource="org/zln/ibatis/sqlmaps/Person.xml" />
<sqlMap resource="org/zln/ibatis/sqlmaps/UserAccount.xml" />
</sqlMapConfig>

初始化配置文件

 package org.zln.ibatis.utils;

 import com.ibatis.common.resources.Resources;
import com.ibatis.sqlmap.client.SqlMapClient;
import com.ibatis.sqlmap.client.SqlMapClientBuilder; import java.io.IOException;
import java.io.Reader; /**
* Created by sherry on 000008/6/8 14:36.
*/
public class SqlMapUtils {
private static final String resource = "sqlMapConfig.xml";
public static SqlMapClient sqlMapClient = null; public static SqlMapClient getSqlMapClient() throws IOException {
Reader reader = Resources.getResourceAsReader(resource);
sqlMapClient = SqlMapClientBuilder.buildSqlMapClient(reader);
return sqlMapClient;
}
}

映射文件

<?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 namespace="org.zln.ibatis.domain.UserAccount"> <typeAlias alias="UserAccount" type="org.zln.ibatis.domain.UserAccount"/> /*外部参数映射*/
<parameterMap id="fullUserAccountMapExport" class="UserAccount">
<parameter property="userid" jdbcType="INTEGER"/>
<parameter property="username" jdbcType="VARCHAR"/>
<parameter property="password" jdbcType="VARCHAR"/>
<parameter property="groupname" jdbcType="VARCHAR"/>
</parameterMap>
/*结果集映射*/
<resultMap id="UserAccountMap" class="UserAccount">
<result property="userid" column="userid"/>
<result property="username" column="username"/>
<result property="password" column="password"/>
<result property="groupname" column="groupname"/>
<!--当查询tt的时候,会查询select-id对应的SQL,然后映射到JavaBean中的listColl,-->
<!--<result column="tt" property="listColl" select="select-id"/>-->
</resultMap> <select id="getUserAccountList" parameterClass="UserAccount" resultClass="UserAccount">
SELECT userid,username,password,groupname FROM user_account
<dynamic prepend="WHERE">
<isNotEmpty property="username" prepend="AND">
username LIKE '%'||#username#||'%'
</isNotEmpty>
<isNotEmpty property="password" prepend="AND">
password = #password#
</isNotEmpty>
<isNotEmpty property="groupname" prepend="AND">
groupname LIKE '%'||#groupname#||'%'
</isNotEmpty>
<!--循环标签-->
<iterate property="ids" open="(" close=")" conjunction=",">
userid = #userid#
</iterate>
</dynamic>
</select> <insert id="insertUserAccount" parameterClass="UserAccount">
INSERT INTO user_account (username,password,groupname) VALUES (#username#,#password#,#groupname#)
</insert>
/*使用外部映射*/
<insert id="insertUserAccount_1" parameterMap="fullUserAccountMapExport">
INSERT INTO user_account (username,password,groupname) VALUES (?,?,?)
</insert>
/*Oracle的序列使用演示*/
<!--<insert id="insertUserAccount_2" parameterMap="fullUserAccountMapExport">
<selectKey keyProperty="userid" resultClass="int">
SELECT nextVal(#序列#) FROM dual
</selectKey>
INSERT INTO user_account (userid,username,password,groupname) VALUES (?,?,?,?)
</insert>--> <update id="updateUserAccount" parameterClass="UserAccount">
UPDATE user_account set userid = #userid#
<dynamic>
<isNotEmpty prepend="," property="username">
username = #username#
</isNotEmpty>
<isNotEmpty prepend="," property="password">
password = #password#
</isNotEmpty>
<isNotEmpty prepend="," property="groupname">
groupname = #groupname#
</isNotEmpty>
</dynamic>
WHERE userid = #userid#
</update> <sql id="select-user_account-list">
SELECT userid,username,password,groupname FROM user_account
</sql>
<sql id="select-user_account-count">
SELECT COUNT(1) FROM user_account
</sql>
<sql id="where-user_account">
<![CDATA[
WHERE userid > #userid:INTEGER#
]]>
</sql>
<select id="selectUserAccountsAfterId" parameterClass="UserAccount" resultClass="UserAccount">
<include refid="select-user_account-list"/>
<include refid="where-user_account"/>
</select> /*调用存储过程演示*/
<!--<procedure id="callProDemo" parameterClass="string" resultClass="int">
{call product(?)}
</procedure>--> </sqlMap>

BaseDao.java

 package org.zln.ibatis.dao.base;

 import com.ibatis.sqlmap.client.SqlMapClient;
import org.zln.ibatis.utils.SqlMapUtils; import java.io.IOException; /**
* Created by sherry on 000008/6/8 15:16.
*/
public class BaseDao {
public SqlMapClient sqlMapClient; {
try {
sqlMapClient = SqlMapUtils.getSqlMapClient();
} catch (IOException e) {
e.printStackTrace();
}
}
}

UserAccountDaoImpl.java

 package org.zln.ibatis.dao.impl;

 import org.zln.ibatis.dao.UserAccountDao;
import org.zln.ibatis.dao.base.BaseDao;
import org.zln.ibatis.domain.UserAccount; import java.sql.SQLException;
import java.util.List;
import java.util.Map; /**
* Created by sherry on 000008/6/8 15:15.
*/
public class UserAccountDaoImpl extends BaseDao implements UserAccountDao { @Override
public List<UserAccount> getUserAccountList(UserAccount userAccount){
List<UserAccount> userAccounts = null;
try {
userAccounts = sqlMapClient.queryForList("org.zln.ibatis.domain.UserAccount.getUserAccountList",userAccount); //start test queryForMap
Map<String,UserAccount> map = sqlMapClient.queryForMap("org.zln.ibatis.domain.UserAccount.getUserAccountList",userAccount,"username");
System.out.println(map);
//end
} catch (SQLException e) {
e.printStackTrace();
}
return userAccounts;
} @Override
public List<UserAccount> getUserAccountListAfterId(UserAccount userAccount) {
List<UserAccount> userAccounts = null;
try {
userAccounts = sqlMapClient.queryForList("org.zln.ibatis.domain.UserAccount.selectUserAccountsAfterId",userAccount); } catch (SQLException e) {
e.printStackTrace();
}
return userAccounts;
} @Override
public void insertUserAccount(List<UserAccount> userAccounts) {
try {
/*批处理*/
sqlMapClient.startTransaction();
sqlMapClient.startBatch();
for (UserAccount userAccount:userAccounts){
sqlMapClient.insert("org.zln.ibatis.domain.UserAccount.insertUserAccount",userAccount);
}
sqlMapClient.executeBatch();
sqlMapClient.commitTransaction();
} catch (SQLException e) {
e.printStackTrace();
}finally {
try {
sqlMapClient.endTransaction();
} catch (SQLException e) {
e.printStackTrace();
}
}
} @Override
public void updateUserAccount(UserAccount userAccount) {
try {
sqlMapClient.update("org.zln.ibatis.domain.UserAccount.updateUserAccount",userAccount);
} catch (SQLException e) {
e.printStackTrace();
}
} }

日志配置文件:log4j.properties

## LOGGERS ##
#define a logger
#log4j.rootLogger=DEBUG,console,file
log4j.rootLogger=INFO,console
## APPENDERS ## log4j.appender.console=org.apache.log4j.ConsoleAppender
# define an appender named file, which is set to be a RollingFileAppender
log4j.appender.file=org.apache.log4j.RollingFileAppender
#set the log's size
log4j.appender.file.MaxFileSize=1000KB
log4j.appender.file.MaxBackupIndex=
## LAYOUTS ##
# assign a SimpleLayout to console appender
log4j.appender.console.layout=org.apache.log4j.SimpleLayout
# assign a PatternLayout to file appender
log4j.appender.file.layout=org.apache.log4j.PatternLayout
# For debug
# log4j.appender.file.layout.ConversionPattern=[%-5p][%t][%C][%d{yyyy-MM-dd HH:mm:ss}] %m%n
# For deployment
log4j.appender.file.layout.ConversionPattern=[%-5p][%d{yyyy-MM-dd HH:mm:ss}] %m%n
# show SQL Where ibatis run
log4j.logger.com.ibatis=DEBUG
log4j.logger.com.ibatis.common.jdbc.SimpleDataSource=DEBUG
log4j.logger.com.ibatis.common.jdbc.ScriptRunner=DEBUG
log4j.logger.com.ibatis.sqlmap.engine.impl.SqlMapClientDelegate=DEBUG
log4j.logger.java.sql.Connection=DEBUG
log4j.logger.java.sql.Statement=DEBUG
log4j.logger.java.sql.PreparedStatement=DEBUG

iBatis的基本使用的更多相关文章

  1. 值得注意的ibatis动态sql语法格式

    一.Ibatis常用动态sql语法,简单粗暴用一例子 <select id="iBatisSelectList" parameterClass="java.util ...

  2. org.apache.ibatis.binding.BindingException: Invalid bound statement (not found):

    org.apache.ibatis.binding.BindingException: Invalid bound statement (not found): da.huying.usermanag ...

  3. [入门级] visual studio 2010 mvc4开发,用ibatis作为数据库访问媒介(一)

    [入门级] visual studio 2010 mvc4开发,用ibatis作为数据库访问媒介(一) Date  周二 06 一月 2015 By 钟谢伟 Tags mvc4 / asp.net 示 ...

  4. Spring+ibatis动态管理数据源

    Spring动态配置多数据源,即在大型应用中对数据进行切分,并且采用多个数据库实例进行管理,这样可以有效提高系统的水平伸缩性.而这样的方案就会不同于常见的单一数据实例的方案,这就要程序在运行时根据当时 ...

  5. iBatis.net 循环iterate,没有foreach

    3.9.4. Iterate Element This tag will iterate over a collection and repeat the body content for each ...

  6. ibatis 轻松入门

    1.总中的配置文件 <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE sqlMapConfig ...

  7. IBatis.Net使用总结(四)-- IBatis 调用存储过程

    IBatis 调用存储过程 http://www.cnblogs.com/jeffwongishandsome/archive/2010/01/10/1543219.html http://www.c ...

  8. MyBatis-Exception:org.apache.ibatis.exceptions.PersistenceException

    错误信息如下: HTTP Status 500 - org.mybatis.spring.MyBatisSystemException: nested exception is org.apache. ...

  9. Exception:HTTP Status 500 - org.apache.ibatis.binding.BindingException: Invalid bound statement (not found)

    主要错误信息如下: HTTP Status 500 - org.apache.ibatis.binding.BindingException: Invalid bound statement (not ...

  10. ibatis 和 mybatis

    ibatis 在daoImpl 层 继承 SqlMapClientDaoSupport  实现 dao 层的接口. this.getSqlMapClientTemplate().queryForObj ...

随机推荐

  1. Python实现爬虫从网络上下载文档

    最近在学习Python,自然接触到了爬虫,写了一个小型爬虫软件,从初始Url解析网页,使用正则获取待爬取链接,使用beautifulsoup解析获取文本,使用自己写的输出器可以将文本输出保存,具体代码 ...

  2. 二进制部署etcd集群

    kuberntes 系统使用 etcd 存储所有数据,本文档介绍部署一个三节点高可用 etcd 集群的步骤,这三个节点配置复用 ,我在这里没有做认证,如果有需要也可以做. 下载二进制文件 到 http ...

  3. ethereum(以太坊)(基础)--容易忽略的坑(二)

    pragma solidity ^0.4.0; contract EMath{ string public _a="lin"; function f() public{ modif ...

  4. Docker(一):概述

    Docker 是什么? Docker是一个开源的应用容器引擎,基于Go语言开发 并遵从Apache2.0协议开源. Docker 可以让开发者打包他们的应用以及依赖包到一个轻量级.可移植的容器中,然后 ...

  5. QQ群认证 人数再度扩容 权限随之升级

    群排名,得资源得天;之于排名,群容量有杠杆意义. 而今,流量分散,打法完全无法集中,全平台战略,越发凸显.QQ群,已是必争之地. 去年,Q群霸屏春天,一切那么顺其自然;而今,除了拼资源,还是拼资源.除 ...

  6. ECSHOP和SHOPEX快递单号查询德邦插件V8.6专版

    发布ECSHOP说明: ECSHOP快递物流单号查询插件特色 本ECSHOP快递物流单号跟踪插件提供国内外近2000家快递物流订单单号查询服务例如申通快递.顺丰快递.圆通快递.EMS快递.汇通快递.宅 ...

  7. 总结laravel假数据填充步骤

    定义好模型 xxx.php 定义好数据生成的规则 database/factories/XxxlFactory.php 写入生成数据的代码,控制好生成的数据数目,对生成后的数据做出修改 databas ...

  8. JOI2017 春季合宿:Railway Trip

    自己的AC做法似乎离正解偏了十万八千里而且复杂了不少--不管怎样还是记录下来吧. 题意: 题目链接: JOISC2017 F - AtCoder JOISC2017 F - LOJ \(N\)个车站排 ...

  9. DATAGUARD实施文档

    DATAGUARD实施文档 一.前期准备及备机安装: 通过获取到的主机信息规划备机数据库安装基础信息:(注:在安装备机时需要尽量保障与主机库信息一致,以下表格中的备机信息为根据主机信息规划的安装信息. ...

  10. python语句和语法

    python语句和语法 python程序结构: 1.程序由模块构成. 2.模块包含语句. 3.语句包含表达式. 4.表达式建立并处理对象. python的语法实质上是有语句和表达式组成的.表达式处理对 ...