`
ifWhileCaseFor
  • 浏览: 8453 次
  • 性别: Icon_minigender_1
  • 来自: 济南
社区版块
存档分类
最新评论

初识ibatis

 
阅读更多

ibatis简介

         阿帕奇开源项目,一个O/RMapping解决方案,最大特点是小巧,上手很快。如果不需要太复杂的功能,一般都可以满足要求。http://ibatis.apache.org

搭建环境

导入相关jar

         ojdbc6.jar    ibatis-core-3.0-sources.jar

配置文件:

         jdbc连接的属性文件(db.properties文件)

         总配置文件(SqlMapConfig.xml

         关于每个实体的映射文件(map文件)

使用步骤:

1.新建web工程ibatis,在src下新建包dao,保存处理数据库相关的类。首先创建数据库连接属性文件db.properties,内容如下:

driver=oracle.jdbc.OracleDriver

url=jdbc:oracle:thin:@localhost:1521:Oracle

usr=xxx

pwd=xxx

2.在数据库中创建表student

create table student(id number,name varchar2(20),age number,class varchar2(20));

insert into student values(1,'张三',18,'高一');

insert into student values(2,'张三',19,'高二');

insert into student values(3,'张三',17,'高三');

insert into student values(4,'张三',15,'高一');

insert into student values(5,'张三',17,'高二');

insert into student values(6,'张三',15,'高三');

insert into student values(7,'张三',19,'高一');

insert into student values(8,'张三',15,'高三');

insert into student values(9,'张三',17,'高二');

commit;

3.根据数据库中表字段创建Student实体类;包名为entity

package entity;

 

public class Student {

         private int id;

         private String name;

         private int age;

         private String className;

         public int getId() {

                   return id;

         }

         public void setId(int id) {

                   this.id = id;

         }

         public String getName() {

                   return name;

         }

         public void setName(String name) {

                   this.name = name;

         }

         public int getAge() {

                  return age;

         }

         public void setAge(int age) {

                   this.age = age;

         }

         public String getClassName() {

                   return className;

         }

         public void setClassName(String className) {

                   this.className = className;

         }

         @Override

         public String toString() {

                   return "Student [id=" + id + ", name=" + name + ", age=" + age

                                     + ", className=" + className + "]";

         }

        

}

4.dao包下自定义异常类DAOException,继承自Exception,实现查询数据库时抛出自定义异常

package dao;

 

public class DAOException extends Exception {

         public DAOException(String message,Throwable couse){

                   super(message, couse);

         }

}

5.在dao包下定义IStudentDAO接口,定义抽象方法

        

package dao;

 

import java.util.List;

 

import entity.Student;

 

public interface IStudentDAO {

         List<Student> findAll() throws DAOException;

}

5.dao包下,配置Student实体类的映射文件Student.xml

<?xml version="1.0" encoding="UTF-8" ?>

<!DOCTYPE sqlMap    

    PUBLIC "-//ibatis.apache.org//DTD SQL Map 2.0//EN"    

    "http://ibatis.apache.org/dtd/sql-map-2.dtd">

<sqlMap>

         <!-- alias表示type的简写形式 -->

         <typeAlias alias="Student" type="entity.Student"/>

         <!-- id代表了该sql语句,resultClass表示返回值的类型 -->

          <select id="selectAllStudent" resultClass="Student" >

                 select * from student

          </select>

</sqlMap>

6.src/dao包下配置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>

         <!-- 加载数据库属性配置文件db.properties -->

         <properties resource="dao/db.properties"/>

         <!-- type="JDBC" 时事务是自动提交的,如果要控制事务不自动提交,如下的配置 -->

         <transactionManager type="JDBC" commitRequired="false">

                   <dataSource type="SIMPLE">

                            <property name="JDBC.Driver" value="${driver}"/>

                            <property name="JDBC.ConnectionURL" value="${url}"/>

                            <property name="JDBC.Username" value="${usr}"/>

                            <property name="JDBC.Password" value="${pwd}"/>

                   </dataSource>

         </transactionManager>

         <!-- 引入映射实体类的配置文件 -->

         <sqlMap resource="dao/Student.xml"/>

</sqlMapConfig>

7.dao包下新建实现IStudentDAO的类,StudentDaoImpl

package dao;

 

import java.io.IOException;

import java.io.Reader;

import java.sql.SQLException;

import java.util.List;

 

import com.ibatis.sqlmap.client.SqlMapClient;

 

import entity.Student;

 

 

public class StudentDaoImpl implements IStudentDAO {

        

         private static SqlMapClient sqlMapClient = null;

         private static Reader reader = null;

         static{

                   try {

                            //xml文件转换为一个字符输入流

                            reader = com.ibatis.common.resources.Resources.getResourceAsReader("dao/sqlMapConfig.xml");

                            //将字符输入流转换为SqlMapClient

                            sqlMapClient = com.ibatis.sqlmap.client.SqlMapClientBuilder.buildSqlMapClient(reader);

                   } catch (IOException e) {

                            e.printStackTrace();

                   }finally{

                            if(reader != null){

                                     try {

                                               reader.close();

                                     } catch (IOException e) {

                                               e.printStackTrace();

                                     }

                            }

                   }

         }

 

         public List<Student> findAll() throws DAOException {

                   List<Student> list = null;

                   try {

                            //此处的selectAllStudent对应的是Student.xml映射文件中的select标签的id值,代表了那条sql语句

                            list = sqlMapClient.queryForList("selectAllStudent");

                   } catch (SQLException e) {

                            e.printStackTrace();

                   }

                   return list;

         }

 

         public static void main(String[] args) throws Exception {

                   IStudentDAO dao = new StudentDaoImpl();

                   System.out.println(dao.findAll());

         }

}

8.测试查看

Student [id=1, name=张三, age=18, className=null]

Student [id=2, name=张三, age=19, className=null]

Student [id=3, name=张三, age=17, className=null]

Student [id=4, name=张三, age=15, className=null]

Student [id=5, name=张三, age=17, className=null]

Student [id=6, name=张三, age=15, className=null]

Student [id=7, name=张三, age=19, className=null]

Student [id=8, name=张三, age=15, className=null]

Student [id=9, name=张三, age=17, className=null]

 

上面实体类Student中的className字段与数据库中的class字段不对应因此查询出的className都是null,修改数据库中的字段名之后就好了。

分享到:
评论

相关推荐

    ibatis总结 ibatis ibatis ibatis ibatis

    Ibatis 是一款轻量级的Java持久层框架,它允许开发者将SQL语句与Java代码分离,从而使得数据库访问更加灵活、易于维护。本篇文章将深入探讨Ibatis的核心概念、最佳实践以及与其他框架如Struts和Spring的整合。 1. ...

    ibatis demo,ibatis例子,ibatis示例

    Ibatis,全称为MyBatis,是一个优秀的Java持久层框架,它主要负责SQL映射,使得开发者能够将SQL语句与Java代码分离,从而更好地管理数据库操作。Ibatis的出现,解决了传统JDBC中手动编写SQL和结果集映射的繁琐工作,...

    ibatis源码,ibatis源码 ibatis源码 ibatis源码

    《深入解析iBatis源码》 iBatis,一个优秀的Java持久层框架,以其轻量级、灵活的特性在众多ORM(Object-Relational Mapping)框架中独树一帜。iBatis的核心在于它的SQL映射机制,它将数据库操作与业务逻辑解耦,...

    iBATIS-DAO-2.3.4.726.rar_com.ibatis.dao_iBATIS dao 2_iBatis DAO_

    iBATIS DAO是Java开发中的一个持久层框架,它提供了数据访问对象(DAO)的实现,使得数据库操作更加简单和灵活。在这个2.3.4.726版本的源码中,我们可以深入理解iBATIS DAO的工作原理,并通过添加注释来帮助我们更好...

    Ibatis入门例子,Ibatis教程

    Ibatis,全称为MyBatis,是一个优秀的Java持久层框架,它主要负责SQL映射,使得开发者能够将注意力集中在编写SQL语句上,而无需关注JDBC代码的编写。Ibatis消除了几乎所有的JDBC代码和手动设置参数以及获取结果集的...

    ibatis教程,ibatis帮助文档

    iBATIS是一个由Clinton Begin创建,目前由Apache基金会支持的持久化框架,它专注于数据库查询的简化,尤其在JDBC编程方面提供了极大的便利。相对于全自动化ORM解决方案如Hibernate,iBATIS被称为“半自动化”ORM实现...

    ibatis api,ibatis文档,ibatis说明文档

    Ibatis,全称为MyBatis,是一个优秀的Java持久层框架,它主要负责SQL映射,将数据库操作与业务逻辑解耦,使得开发者可以更专注于业务逻辑的实现,而无需关心繁琐的SQL语句编写。本篇文章将深入探讨Ibatis API、文档...

    Ibatis3手册 Ibatis3参考手册

    ### Ibatis3手册知识点概述 Ibatis3作为一款流行的持久层框架,在软件开发领域具有重要的地位。本篇文章基于“Ibatis3手册 Ibatis3参考手册”的标题及描述,深入解析Ibatis3的核心概念、架构特点以及如何进行实际...

    ibatis应对批量update

    ### ibatis应对批量update 在处理大量数据更新时,传统的for循环方式往往会导致效率低下。这是因为每一次循环都需要执行一次数据库连接操作,对于批量更新来说,这样的处理方式显然不够高效。为了解决这个问题,...

    Spring与iBATIS的集成

    Spring与iBATIS的集成 iBATIS似乎已远离众说纷纭的OR框架之列,通常人们对非常流行的Hibernate情有独钟。但正如Spring A Developer's Notebook作者Bruce Tate 和Justin Gehtland所说的那样,与其他的OR框架相比...

    ibatis api 帮助文档+IBATIS 开发文档

    **IBATIS API 帮助文档与IBATIS开发文档详解** IBATIS,一个由iBATIS公司开发的开源持久层框架,是Java世界中广泛使用的数据访问接口(DAO)工具。它允许开发者将SQL语句直接写在XML配置文件中,实现了SQL与Java...

    ibatis2指南及ibatis包

    ibatis2指南ibatis2指南ibatis2指南ibatis2指南ibatis2指南ibatis2指南ibatis2指南ibatis2指南ibatis2指南ibatis2指南ibatis2指南ibatis2指南ibatis2指南

    iBatis开发指南和一个iBatis实例

    iBatis是一个轻量级的Java持久层框架,它提供了SQL映射框架,将SQL语句与Java代码分离,使得数据库访问更为灵活和可控。在本压缩包中,你将找到一系列关于iBatis的学习资源,包括PDF文档、实例代码等,这些都是深入...

    Spring+ibatis 保留ibatis事务的配置

    根据提供的文件信息,本文将详细解析如何在Spring与ibatis框架整合时,通过特定配置来保留ibatis事务处理机制,并实现对事务的自定义控制。文章将围绕标题、描述及部分代码片段展开讨论。 ### Spring与ibatis整合...

    Ibatis 入门经典 实例

    《Ibatis 入门经典 实例》 Ibatis 是一款著名的轻量级 Java 持久层框架,它提供了一种映射 SQL 和 Java 对象的简单方式,从而减轻了开发人员在数据库操作中的工作负担。这篇实例教程将带你深入理解 Ibatis 的核心...

    iBATIS实战.pdf

    《iBATIS实战》是讲述iBATIS框架的权威著作。书中既详实地介绍了iBATIS的设计理念和基础知识,也讨论了动态SQL、高速缓存、DAD框架等高级主题,还讲解了iBATIS在实际开发中的应用。《iBATIS实战》的最后给出了一个...

    Ibatis

    **Ibatis 指南** Ibatis 是一个优秀的开源持久层框架,它允许开发者将 SQL 查询与 Java 代码分离,从而避免了传统的 JDBC 编程中的大量模板代码。作为一个轻量级的框架,Ibatis 提供了灵活的映射机制,使得 XML 或...

    ibatis乱码解决方法(ibatis独立)

    在IT行业中,数据库操作是必不可少的一部分,而Ibatis作为一款流行的Java持久层框架,它使得SQL与Java代码更好地结合,提供了灵活的数据库操作方式。然而,数据处理时遇到的编码问题,如乱码,常常会给开发者带来...

    C# IBatis IBatis基础 完整项目

    【标题】:“C# IBatis IBatis基础 完整项目” 【描述】中提到的是一个基于C#的IBatis学习项目,适用于初学者。IBatis是一个流行的数据访问层框架,它允许开发者将SQL语句与应用程序代码分离,提高了代码的可维护性...

    ibatis教程 输入参数详解

    标题:ibatis教程 输入参数详解 描述:ibatis教程 输入参数详解 ibatis快速入门 标签:ibatis list 部分内容:这段部分提供了ibatis用户指南的警告,关于从文档复制代码的问题,以及ibatis的概述、如何开始使用...

Global site tag (gtag.js) - Google Analytics