`

Ibatis学习一. 简单入门

阅读更多

 

iBatis 简介:

 

iBatis apache 的一个开源项目,一个O/R Mapping 解决方案,iBatis 最大的特点就是小巧,上手很快。如果不需要太多复杂的功能,iBatis 是能够满足你的要求又足够灵活的最简单的解决方案,现在的iBatis 已经改名为Mybatis 了。

特性:

1. 简单性

Ibatis 是一个非常简单易用的工具包。这个简单性不仅仅体现在开发库的轻量小巧上,iBATIS 对于 Java 开发者来说也非常简单。因为它除了不用编写那么多代码外与 JDBC 的工作机制非常相像,iBATIS 就是以 XML 的形式来描述的 JDBC 代码。iBATIS 对于数据库管理员以及 SQL 程序员来 说也非常容易理解。iBATIS 配置文件几乎人人都能读懂,只要他有 SQL 编程的经验。

2. 效率与性能

iBATIS 通过一种简单的方式来配置和使用,其性能与 JDBC 相当。通过直接编写 SQL 查询,开发人员可以直接控制 SQL 语句来优化执行效率,甚至可以在其中调用存储过程,为开发人员提供了巨大的 SQL 优化空间。

3. 代码分离

在 iBATIS 中,SQL 语句在很大程度上同应用的源代码是分离 的,SQL 程序员可以按照 SQL 原本的方式来编写它,而不必担心有关 SQL 字符串连接的问题。iBATIS 提供了充分的自由,使得任何人都可以开发、观察并且修改在数据库中执行的 SQL 语句。

4. 可移植性

iBATIS 是可移植的。由于它相对简单的设计,它几乎可以用任何一种语言在任何一个平台上实现。iBATIS 支持 3 种最受欢迎的开发平台:Java、Ruby 和微软 .NET 的 C#。

 

官网为:http://www.mybatis.org/

 

搭建iBatis 开发环境:

    1 、导入相关的jar 包:(2个)ibatis-2.3.0.677.jar 、mysql-connector-java-5.1.6-bin.jar

    2 、编写配置文件:(3种)

 

           Jdbc 连接的属性文件:jdbc.properties

 

           总配置文件:SqlMapConfig.xml

 

           关于每个实体的映射文件(Map 文件):Student.xml

 

iBatis 的优缺点:

优点:

      1、减少代码量,简单;

      2、性能增强;

      3、 Sql 语句与程序代码分离;

      4、增强了移植性;

缺点:

      1、Hibernate 相比,sql 需要自己写;

      2、参数数量只能有一个,多个参数时不太方便;

 

实例分析:

1.Pom文件

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>

    <groupId>Ibatis00</groupId>
    <artifactId>Ibatis00</artifactId>
    <version>1.0-SNAPSHOT</version>

    <dependencies>
        <!--Junit-->
        <dependency>
            <groupId>junit</groupId>
            <artifactId>junit</artifactId>
            <version>4.11</version>
        </dependency>
        <!--Ibatis-->
        <dependency>
            <groupId>org.apache.ibatis</groupId>
            <artifactId>ibatis-sqlmap</artifactId>
            <version>2.3.4.726</version>
        </dependency>
        <!--Mysql-->
        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <version>5.1.27</version>
        </dependency>
    </dependencies>

</project>

 

说明:

如果xml 中没有ibatis 的提示,则window --> Preference--> XML-->XML Catalog---> 点击add

选择uri URI: 请选择本地文件系统上

iBatisDemo1/WebContent/WEB-INF/lib/sql-map-config-2.dtd 文件;

Key Type: 选择Schema Location;

Key: 需要联网的,不建议使用

 

 2.SqlMapConfig.xml总配置文件:(1.加载属性文件 2.配置数据源 3.确定事务 4.关联实体映射文件)

<?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="mysql.properties"/>

    <!-- 使用JDBC事务管理 -->
    <transactionManager type="JDBC">

        <!-- 数据源 -->
        <dataSource type="SIMPLE">
            <property name="JDBC.Driver" value="${driver}"/>
            <property name="JDBC.ConnectionURL" value="${url}"/>
            <property name="JDBC.Username" value="${root}"/>
            <property name="JDBC.Password" value="${password}"/>
        </dataSource>

    </transactionManager>

    <!-- 实体类映射文件 -->
    <sqlMap resource="Student.xml"/>

</sqlMapConfig>
  

3.jdbc.properties属性文件

driver=com.mysql.jdbc.Driver
url=jdbc:mysql://localhost:3306/ibatis?useUnicode=true&amp;characterEncoding=UTF-8
username=root
password=111111

 

4.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>

    <!--指定实体类别名,方便下面的书写-->
    <typeAlias alias="Student" type="com.zyzy.ibatis.entity.Student"/>

    <!--查询-->
    <select id="findAll" resultClass="Student">
        select * from student
    </select>
    <select id="findById" resultClass="Student">
        select * from student where id=#id#
    </select>
    <select id="findByName" resultClass="Student">
        select * from student where name like '%$name$%'
    </select>

    <!--添加-->
    <insert id="addStudent" parameterClass="Student">
        insert into student values(#id#,#name#,#age#)
        <selectKey keyProperty="id" resultClass="int">
            select @@identity as id
        </selectKey>
    </insert>
    <!-- 这里需要说明一下不同的数据库主键的生成,对各自的数据库有不同的方式: -->
    <!-- mysql:SELECT LAST_INSERT_ID() AS VALUE -->
    <!-- mssql:select @@IDENTITY as value -->  
    <!-- oracle:SELECT STOCKIDSEQUENCE.NEXTVAL AS VALUE FROM DUAL -->
    <!-- 还有一点需要注意的是不同的数据库生产商生成主键的方式不一样 -->
    <!-- 有些是预先生成 (pre-generate)主键的,如Oracle和PostgreSQL。-->
    <!-- 有些是事后生成(post-generate)主键的,如MySQL和SQL Server -->
    <!-- 所以如果是Oracle数据库,则需要将selectKey写在insert之前 -->   

    <!--更新-->
    <update id="updateStudent" parameterClass="Student">
        update student set name=#name#,age=#age# where id=#id#
    </update>

    <!--删除-->
    <delete id="deleteById" parameterClass="int">
        delete from student where id=#id#
    </delete>

</sqlMap>
 

5.Student实体类

public class Student {
//注意这里需要保证有一个无参构造方法,因为包括Hibernate在内的映射都是使用反射的,
// 如果没有无参构造可能会出现问题
    private int id;
    private String name;
    private int age;

    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;
    }

    @Override
    public String toString() {
        return "Student{" +
                "id=" + id +
                ", name='" + name + '\'' +
                ", age=" + age +
                '}';
    }
}

 

6.IbatisUtil工具类

public class IbatisUtil {
    private static SqlMapClient client = null;
    static{
        try {
            Reader reader = Resources.getResourceAsReader("SqlMapConfig.xml");
            client = SqlMapClientBuilder.buildSqlMapClient(reader);
            reader.close();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }

    public static SqlMapClient getClient() {
        return client;
    }
}

 

7.IStudentDao接口

public interface IStudentDao {
    List<Student> findAll();                //查找全部
    Student findById(int id);               //通过id查找
    List<Student> findByName(String name);  //通过name模糊查询
    void addStudent(Student student);       //增加
    void updateStudent(Student student);    //修改
    void deleteById(int id);             //删除
}

 

8.StudentDaoImpl数据库持久层实现类

public class StudentDaoImpl implements IStudentDao {

    private static SqlMapClient client = IbatisUtil.getClient();

    /**
     * 查找全部
     * @return 返回Student集合
     */
    @Override
    public List<Student> findAll() {
        try {
            return client.queryForList("findAll");
        } catch (SQLException e) {
            e.printStackTrace();
        }
        return null;
    }

    /**
     * 通过ID查找单个
     * @param id
     * @return 返回单个Student
     */
    @Override
    public Student findById(int id) {
        try {
            return (Student) client.queryForObject("findById",id);
        } catch (SQLException e) {
            e.printStackTrace();
        }
        return null;
    }

    /**
     * 通过name模糊查询
     * @param name
     * @return 返回Student集合
     */
    @Override
    public List<Student> findByName(String name) {
        try {
            return client.queryForList("findByName",name);
        } catch (SQLException e) {
            e.printStackTrace();
        }
        return null;
    }

    /**
     * 插入一个Student
     * @param student
     */
    @Override
    public void addStudent(Student student) {
        try {
            client.insert("addStudent",student);
        } catch (SQLException e) {
            e.printStackTrace();
        }
    }

    /**
     * 更新Student
     * @param student
     */
    @Override
    public void updateStudent(Student student) {
        try {
            client.update("updateStudent",student);
        } catch (SQLException e) {
            e.printStackTrace();
        }
    }

    /**
     * 删除指定的Student
     * @param id
     */
    @Override
    public void deleteById(int id) {
        try {
            client.delete("deleteById",id);
        } catch (SQLException e) {
            e.printStackTrace();
        }
    }

}

 

9.StudentService业务类

public class StudentService {
    public static void main(String[] args) {
        IStudentDao dao = new StudentDaoImpl();
        List<Student> students = null;
        students = dao.findAll();
        System.out.println(students);
//		dao.deleteById(8);
    }
}

 

 

分享到:
评论

相关推荐

    框架iBATIS入门教程.

    #### 一、iBATIS框架介绍与学习目的 iBATIS是一个开源框架,用于简化Java应用程序与数据库之间的交互。它通过提供一种称为SQL Maps的方式,来帮助开发者更好地管理和执行SQL语句。本教程旨在为初学者提供一个快速...

    最简单的iBatis入门例子.rar

    这个“最简单的iBatis入门例子.rar”压缩包文件显然是为了帮助初学者快速理解和上手iBatis。 在学习iBatis之前,首先需要理解什么是持久层框架。持久层是应用程序中负责数据存储的部分,它处理与数据库的交互。...

    ibatis-2.3.3.720.jar 及chm格式帮助文档

    2. **简单易用**:Ibatis 提供了简单直观的API,通过SqlSession对象执行SQL操作,如插入、更新、删除和查询。它的API设计使得学习成本相对较低,开发者可以快速上手。 3. **灵活的数据映射**:Ibatis 的数据映射...

    ibatis视频教程.rar

    1. Ibatis入门:介绍Ibatis的基本概念、架构和安装步骤,引导学习者快速上手。 2. 配置详解:讲解如何创建和配置SqlMapConfig.xml文件,以及如何在项目中引入Ibatis。 3. 数据源配置:介绍如何配置数据源,如JNDI...

    Ibatis 入门经典 实例

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

    Ibatis实例,手把手交你入门

    Ibatis,一个轻量级的Java持久层框架,以其灵活、简单的特点,被广泛应用于各种项目中。本文将引导你从零开始,逐步了解并掌握Ibatis的基本用法,包括配置环境、创建数据表、编写Mapper XML文件、映射SQL语句以及在...

    ibatis 开发指南.pdf

    - **简单性**:相较于其他 ORM 框架,iBATIS 更加轻量级,学习曲线较平缓。 #### 三、iBATIS 的核心概念 - **SqlMapClient**:iBATIS 的主要接口,用于执行 SQL 映射文件中定义的 SQL 语句。 - **SQL 映射文件**:...

    最简单的iBatis入门例子

    这个入门例子通过一步步的指导,帮助初学者理解如何使用iBatis进行简单的数据库操作。通过学习和实践,你可以逐渐掌握更复杂的查询、动态SQL以及事务管理等高级特性,进一步提升你的Java开发能力。

    Ibatis入门例子,Ibatis教程

    在本教程中,我们将通过一个简单的Ibatis入门例子,带你逐步了解并掌握这个强大的框架。 首先,我们需要在项目中引入Ibatis的依赖。通常,我们会在Maven的pom.xml文件中添加以下依赖: ```xml &lt;groupId&gt;org....

    iBatis简明教程及快速入门

    ### iBatis简明教程及快速入门 #### 一、iBatis简介 iBatis是一个开源框架,用于实现Java应用程序中的对象关系映射(Object Relational Mapping, ORM)。相较于其他ORM框架如Hibernate,iBatis更加轻量级且易于...

    iBATIS-SqlMaps2入门代码文档

    通过本文档的学习,你可以掌握如何使用iBATIS-SqlMaps2来进行数据库操作,包括创建配置文件、定义数据源、以及编写简单的映射文件等内容。此外,本文档还简要介绍了SQLMap的基本架构和设计理念,帮助开发者更好地...

    iBatis入门与精通

    `一个简单的ibatis示例.doc`是一个实际操作的示例,通常包含如何集成iBatis到Java项目中,编写映射文件,以及如何在代码中执行SQL查询。这样的例子对于初学者来说非常直观,能快速理解iBatis的工作原理。 `ibatis ...

    ibatis教程外加jar包

    创建一个简单的Java项目,引入ibatis-2.3.4.726.jar库,配置SqlMapConfig.xml文件,然后编写一个Mapper接口和对应的XML映射文件,实现对数据库的CRUD操作。例如,查询用户信息,可以在XML文件中定义SQL,然后在...

    ibatis入门教程_ibatis入门教程_源码

    Ibatis,全称为MyBatis,是一个优秀的Java持久层框架,它主要负责SQL映射,使得...通过学习这个Ibatis入门教程,你可以了解并掌握如何在Java应用中使用Ibatis进行数据操作,为后续的进阶学习和项目开发打下坚实的基础。

    ibatis初级入门(主要是ibatis的配置简单介绍).

    Ibatis,一个轻量级的Java持久层框架,是许多开发者在处理数据库操作时的首选工具。本教程将带你入门Ibatis,主要关注其配置方面的基础知识。...继续深入学习Ibatis,你会发现它是一个功能强大且灵活的持久层解决方案。

    ibatis入门到精通详细讲解

    **Ibatis 入门到精通详细讲解** Ibatis 是一个优秀的持久层框架,它允许开发者将 SQL 语句与 Java 代码分离,提供了一个灵活的映射框架,从而减轻了开发人员在数据库操作上的工作负担。这篇详细讲解将带你从入门到...

    iBatis入门(三)

    iBatis作为一款优秀的持久层框架,提供了一种简单而灵活的方式来处理数据库操作。通过学习和实践,开发者可以利用其特性提高开发效率,同时避免过度封装带来的复杂性。在实际项目中,合理地运用iBatis,可以大大提高...

    ibatis快速入门(仅需两天)绝对经典,值得收藏.doc

    《ibatis快速入门:两天精通,经典收藏》 在当今数据驱动的世界里,ORM(对象关系映射)框架成为连接数据库与应用层的关键桥梁。...无论是初学者还是有经验的开发者,ibatis都是一款值得深入学习和掌握的经典工具。

Global site tag (gtag.js) - Google Analytics