IBATIS的简单使用

来源:互联网 发布:黑马校对软件价格 编辑:程序博客网 时间:2024/04/29 04:59
使用步骤:

导包-->配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 * FROMSTUDENT WHERE ID=#id#</select><select id="queryStudentById1" parameterClass="int" resultClass="earl.vo.Student">SELECT * FROMSTUDENT 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 * FROMSTUDENT<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

0 0
原创粉丝点击