IBATIS的简单使用

使用步骤:

导包-->配sqlMapConfig.xml-->配sql-->调用API


1.引入jar包ibatis-2.3.jar

2.配置sqlMapConfig.xml,放在src下config文件夹中即可。

sqlMapConfig.xml如下:

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE sqlMapConfig 
PUBLIC "-//iBATIS.com//DTD SQL Map Config2.0//EN" 
"http://www.ibatis.com/dtd/sql-map-config-2.dtd">

<sqlMapConfig>

	<!--使用properties属性文件可以存储相应的属性值-->
	<properties resource="config/SqlMapConfigExample.properties " />

	<!-- setting用于配置和优化sqlMapClient的各选项。 maxRequest是同时执行sql的最大线程数 。maxSession是同一时间最大的会话数。 
		减小数值类型的属性可以提高性能,降低消耗 -->
	<settings cacheModelsEnabled="true" enhancementEnabled="true"
		lazyLoadingEnabled="true" maxRequests="32" maxSessions="10"
		maxTransactions="5" useStatementNamespaces="true" />

	<!-- 配置事务管理服务 -->
	<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>

	<!--引入存储sql语句的配置文件-->
	<sqlMap resource="config/sql/student.xml" />
</sqlMapConfig>

3.配置sql语句的xml,放在src下config/sql文件夹中即可。
配置sql的配置文件:

<?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="student">
	<resultMap class="earl.vo.Student" id="student">
		<result property="id" column="ID"/>
		<result property="name" column="NAME"/>
		<result property="age" column="AGE"/>
		<result property="sex" column="SEX"/>
		<result property="major" column="MAJOR"/>
	</resultMap>
	<select id="queryAllStudent" resultMap="student">
		SELECT * FROM STUDENT
	</select>

	<select id="queryStudentById" parameterClass="int" resultMap="student">
		SELECT * FROM
		STUDENT WHERE ID=#id#
	</select>
	
	<select id="queryStudentById1" parameterClass="int" resultClass="earl.vo.Student">
		SELECT * FROM
		STUDENT WHERE ID=#id#
	</select>
	
	<insert id="addStudent" parameterClass="earl.vo.Student">
		INSERT INTO STUDENT(ID,NAME,AGE,SEX,MAJOR) VALUES(#id#,#name#,#age#,#sex#,#major#)
	</insert>
	
	<delete id="deleteStudent" parameterClass="int">
		DELETE FROM STUDENT WHERE ID=#id#
	</delete>
	
	<update id="updateStudent" parameterClass="earl.vo.Student">
		UPDATE STUDENT SET ID=#id#,NAME=#name#,AGE=#age#,SEX=#sex#,MAJOR=#major#
	</update>
	
	
	<!-- 以下是动态拼接sql -->
	<select id="queryStudentById2" parameterClass="java.util.HashMap" resultMap="student">
		SELECT * FROM
		STUDENT
		<dynamic prepend="where">
			<isNotEmpty prepend="" property="id">ID=#id#</isNotEmpty>
		</dynamic>
	</select>
	
	<!-- 大写的为数据库字段名,小写的为传入参数map的key值,上下的property为对应关系 -->
	<insert id="addStudent1" parameterClass="earl.vo.Student">
		INSERT INTO STUDENT(
		<dynamic prepend=" ">
			<isNotEmpty prepend="," property="id">ID</isNotEmpty>
			<isNotEmpty prepend="," property="name">NAME</isNotEmpty>
			<isNotEmpty prepend="," property="age">AGE</isNotEmpty>
			<isNotEmpty prepend="," property="sex">SEX</isNotEmpty>
			<isNotEmpty prepend="," property="major">MAJOR</isNotEmpty>
		</dynamic>
		)VALUES(
			<dynamic prepend=" ">
				<isNotEmpty prepend="," property="id">#id#</isNotEmpty>
				<isNotEmpty prepend="," property="name">#name#</isNotEmpty>
				<isNotEmpty prepend="," property="age">#age#</isNotEmpty>
				<isNotEmpty prepend="," property="sex">#sex#</isNotEmpty>
				<isNotEmpty prepend="," property="major">#major#</isNotEmpty>
			</dynamic>
		)
	</insert>
	
	<select id="selectUseIterator" parameterClass="java.util.List" resultMap="student">
		SELECT * FROM STUDENT
		<dynamic prepend="WHERE ID IN">
			<iterate open="(" close=")" conjunction="," >#[]#</iterate>
		</dynamic>
	</select>	
</sqlMap>

4.在java代码中调用API执行数据库操作
可以在需要使用sqlMapClient的地方这样获取:

static{
  try {
    Reader reader=Resources.getResourceAsReader("config/sqlMapConfig.xml");
    sqlMapClient=SqlMapClientBuilder.buildSqlMapClient(reader);
    reader.close();
  } catch (IOException e) {
    e.printStackTrace();
  }		
}

接下来就可以使用sqlMapClient调用API操作数据库了。

ibatis用于操作数据库的常用方法
增:

insert(String sql):根据sql进行插入,这里的sql可以使用namespace.要调用的sql的id调用相应的sql。在sql配置文件里的相应的标签里无需使用parameterClass或parameterMap
insert(String sql,Object para):根据sql,以及传入的参数进行插入,para对应于sql配置文件中相应标签的parameterClass或parameterMap
删:
delete(String sql):类似插入
delete(String sql,Object para):类似插入
改:
update(String sql):类似插入
update(String sql,Object para):类似插入
查:
queryForObject(String sql,Object para):类似插入,返回一个对象,常用于返回一个对象的查询
queryForObject(String sql):类似插入,返回一个对象的
queryForList(String sql,Object para):类似插入,返回一个对象列表,常用于返回一组对象的查询
queryForList(String sql):类似插入,返回一个对象列表
queryForPaginatedList:这个方法可以返回一个查询后分页的列表,但是当数据量较大时,查询效率非常低,因为他过分的依赖jdbcDriver

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值