ibatis如何连接到oracle数据库

ibatis如何连接到oracle数据库,第1张

IBatis连接Oracle连接如下: <transactionManager type="JDBC"> <dataSource type="SIMPLE"> <property name="JDBC.Driver" value="oracle.jdbc.driver.OracleDriver"/> <property name="JDBC.ConnectionURL" value="jdbc:oracle:thin:@localhost:1521:oradb"/> <property name="JDBC.Username" value="用户名"/> <property name="JDBC.Password" value="密码"/> <property name="Pool.MaximumActiveConnections" value="10"/> <property name="Pool.MaximumIdleConnections" value="5"/> <property name="Pool.MaximumCheckoutTime" value="120000"/> <property name="Pool.TimeToWait" value="500"/> <property name="Pool.PingQuery" value="select 1 from ACCOUNT"/> <property name="Pool.PingEnabled" value="false"/> <property name="Pool.PingConnectionsOlderThan" value="1"/> <property name="Pool.PingConnectionsNotUsedFor" value="1"/> </dataSource> </transactionManager>

1、Ibatis是MyBatis的前身,它是一个开源的持久层框架。它的核心是SqlMap——将实体Bean跟关系数据库进行映射,将业务代码和SQL语句的书写进行分开。

2、Ibatis是“半自动化”的ORM持久层框架。这里的“半自动化”是相对Hibernate等提供了全面的数据库封装机制的“全自动化”ORM实现而言的,“全自动”ORM实现了POJO与数据库表字段之间的映射并且实现了SQL的自动生成和执行。

3、而Ibatis的着力点,则在于POJO与SQL之间的映射关系,即Ibatis并不会为程序员在运行期自动生成并执行SQL,具体的SQL语句需要程序员编写,然后通过映射配置文件将SQL语句所需的参数和返回的结果字段映射到指定POJO中。

4、StudentDao.java文件中的代码:

package com.ghj.dao.impimport java.io.IOExceptionimport java.io.Readerimport java.sql.SQLExceptionimport java.util.HashMapimport java.util.Listimport java.util.Mapimport com.ghj.dao.IStudentDaoimport com.ghj.vo.Studentimport com.ibatis.common.resources.Resourcesimport com.ibatis.sqlmap.client.SqlMapClientimport com.ibatis.sqlmap.client.SqlMapClientBuilder/** * 学生管理数据访问层接口实现类 *  * @author 高焕杰 */public class StudentDao implements IStudentDao {private SqlMapClient sqlMapClientpublic StudentDao() {String resource = "config/sqlMapConfig.xml"try {Reader reader = Resources.getResourceAsReader(resource)//读取配置文件sqlMapClient = SqlMapClientBuilder.buildSqlMapClient(reader)} catch (IOException e) {e.printStackTrace()}}/** * 添加学生信息 *  * @author 高焕杰 */@Overridepublic boolean add(Student student) throws SQLException{return sqlMapClient.update("add", student) > 0}/** * 依据用户名删除学生信息 *  * @author 高焕杰 */@Overridepublic boolean deleteByUserName(String userName) throws SQLException{return sqlMapClient.delete("deleteByUserName", userName) > 0}/** * 依据用户名更新密码 *  * @author 高焕杰 */@Overridepublic boolean updatePasswordByUserName(String userName, String password) throws SQLException{Map<String, Object> params = new HashMap<String, Object>()params.put("userName", userName)params.put("password", password)return sqlMapClient.update("updatePasswordByUserName", params) > 0}/** * 根据学生用户名查询学生信息 *  * @author 高焕杰 */@Overridepublic Student findByUserName(String userName) throws SQLException{return (Student)sqlMapClient.queryForObject("findByUserName", userName)}/** * 查询所有学生信息 *  * @author 高焕杰 */@Override@SuppressWarnings("unchecked")public List<Student> findAll() throws SQLException{return sqlMapClient.queryForList("findAll")}}

        student.xml文件中的代码:

<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE sqlMap PUBLIC "-//ibatis.apache.org//DTD SQL Map 2.0//EN" "

!-- 为Student类设置一个别名 --><typeAlias alias="student" type="com.ghj.vo.Student"/><!-- 配置表和实体Bean之间的映射关系 --><resultMap id="studentMap" class="com.ghj.vo.Student"><result property="id" column="id"/><result property="userName" column="user_name"/><result property="password" column="password"/><result property="state" column="state"/></resultMap><!-- 添加学生信息 --><insert id="add" parameterClass="student">insert into student values(#id#, #userName#, #password#, #state#)</insert><!-- 依据用户名删除学生信息 --><delete id="deleteByUserName" parameterClass="java.lang.String">      delete from student where user_name=#userName# </delete><!-- 依据用户名更新密码 --><update id="updatePasswordByUserName" parameterClass="java.util.HashMap">        update student set password=#password# where user_name=#userName# </update><!-- 根据学生用户名查询学生信息 --><select id="findByUserName" parameterClass="string" resultMap="studentMap">select * from student where user_name=#userName#</select><!-- 查询所有学生信息 --><select id="findAll" resultMap="studentMap">select * from student</select></sqlMap>

流程:

1、创建pojo类(在一对多关联关系中,应该在“一”这端的pojo有一个“多”这一端的引用,而多这端有一这端的集合引用(即聚合关联)

2、创建pojo对应的数据库表,并插入数据

3、在ibatis配置文件中配置pojo类(配置方法:SqlMappingConfig.xml文件中添加如<typeAlias alias="Key" type="com.longsky.ibatis.lock.model.Key"/>配置,下文会看到。)

4、在pojo对应的xml配置文件中配置resultMap,比如在Lock.xml文件中添加

<resultMap id="LockResult" class="Lock">

<result property="id" column="id"/><result property="lockName" column="lockName"/>

<result property="keys" column="id" select="getKeysByLockId"/>

</resultMap>

5、在需要级联查询的查询语句中使用resultMap,比如

<select id="selectAllLocks" resultMap="LockResult">

<![CDATA[

select id,lockName from lock

]]>

</select>


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/sjk/9964521.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-03
下一篇 2023-05-03

发表评论

登录后才能评论

评论列表(0条)

保存