`

ibatis

阅读更多

iBatis简单入门教程

转自:http://www.cnblogs.com/ycxyyzw/archive/2012/10/13/2722567.html

 

iBatis 简介:

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

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

 

搭建iBatis 开发环境:

1 、导入相关的jar 包,ibatis-2.3.0.677.jarmysql-connector-java-5.1.6-bin.jar

2 、编写配置文件:

Jdbc 连接的属性文件

总配置文件, SqlMapConfig.xml

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

 

Demo

Student.java:

Java代码 复制代码 收藏代码
  1. package com.iflytek.entity;
  2. import java.sql.Date;
  3. /**
  4. * @author xudongwang 2011-12-31
  5. *
  6. * Email:xdwangiflytek@gmail.com
  7. *
  8. */
  9. publicclass Student {
  10. // 注意这里需要保证有一个无参构造方法,因为包括Hibernate在内的映射都是使用反射的,如果没有无参构造可能会出现问题
  11. privateint id;
  12. private String name;
  13. private Date birth;
  14. privatefloat score;
  15. publicint getId() {
  16. return id;
  17. }
  18. publicvoid setId(int id) {
  19. this.id = id;
  20. }
  21. public String getName() {
  22. return name;
  23. }
  24. publicvoid setName(String name) {
  25. this.name = name;
  26. }
  27. public Date getBirth() {
  28. return birth;
  29. }
  30. publicvoid setBirth(Date birth) {
  31. this.birth = birth;
  32. }
  33. publicfloat getScore() {
  34. return score;
  35. }
  36. publicvoid setScore(float score) {
  37. this.score = score;
  38. }
  39. @Override
  40. public String toString() {
  41. return"id=" + id + "\tname=" + name + "\tmajor=" + birth + "\tscore="
  42. + score + "\n";
  43. }
  44. }

 

SqlMap.properties

Properties代码 复制代码 收藏代码
  1. driver=com.mysql.jdbc.Driver
  2. url=jdbc:mysql://localhost:3306/ibatis
  3. username=root
  4. password=123

 

Student.xml

Xml代码 复制代码 收藏代码
  1. <?xmlversion="1.0"encoding="UTF-8"?>
  2. <!DOCTYPE sqlMap PUBLIC "-//ibatis.apache.org//DTD SQL Map 2.0//EN"
  3. "http://ibatis.apache.org/dtd/sql-map-2.dtd">
  4. <sqlMap>
  5. <!-- 通过typeAlias使得我们在下面使用Student实体类的时候不需要写包名 -->
  6. <typeAliasalias="Student"type="com.iflytek.entity.Student"/>
  7. <!-- 这样以后改了sql,就不需要去改java代码了 -->
  8. <!-- id表示select里的sql语句,resultClass表示返回结果的类型 -->
  9. <selectid="selectAllStudent"resultClass="Student">
  10. select * from
  11. tbl_student
  12. </select>
  13. <!-- parameterClass表示参数的内容 -->
  14. <!-- #表示这是一个外部调用的需要传进的参数,可以理解为占位符 -->
  15. <selectid="selectStudentById"parameterClass="int"resultClass="Student">
  16. select * from tbl_student where id=#id#
  17. </select>
  18. <!-- 注意这里的resultClass类型,使用Student类型取决于queryForList还是queryForObject -->
  19. <selectid="selectStudentByName"parameterClass="String"
  20. resultClass="Student">
  21. select name,birth,score from tbl_student where name like
  22. '%$name$%'
  23. </select>
  24. <insertid="addStudent"parameterClass="Student">
  25. insert into
  26. tbl_student(name,birth,score) values
  27. (#name#,#birth#,#score#);
  28. <selectKeyresultClass="int"keyProperty="id">
  29. select @@identity as inserted
  30. <!-- 这里需要说明一下不同的数据库主键的生成,对各自的数据库有不同的方式: -->
  31. <!-- mysql:SELECT LAST_INSERT_ID() AS VALUE -->
  32. <!-- mssql:select @@IDENTITY as value -->
  33. <!-- oracle:SELECT STOCKIDSEQUENCE.NEXTVAL AS VALUE FROM DUAL -->
  34. <!-- 还有一点需要注意的是不同的数据库生产商生成主键的方式不一样,有些是预先生成 (pre-generate)主键的,如Oracle和PostgreSQL。
  35. 有些是事后生成(post-generate)主键的,如MySQL和SQL Server 所以如果是Oracle数据库,则需要将selectKey写在insert之前 -->
  36. </selectKey>
  37. </insert>
  38. <deleteid="deleteStudentById"parameterClass="int">
  39. <!-- #id#里的id可以随意取,但是上面的insert则会有影响,因为上面的name会从Student里的属性里去查找 -->
  40. <!-- 我们也可以这样理解,如果有#占位符,则ibatis会调用parameterClass里的属性去赋值 -->
  41. delete from tbl_student where id=#id#
  42. </delete>
  43. <updateid="updateStudent"parameterClass="Student">
  44. update tbl_student set
  45. name=#name#,birth=#birth#,score=#score# where id=#id#
  46. </update>
  47. </sqlMap>

 

说明:

如果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: 需要联网的,不建议使用;

SqlMapConfig.xml

Xml代码 复制代码 收藏代码
  1. <?xmlversion="1.0"encoding="UTF-8"?>
  2. <!DOCTYPE sqlMapConfig PUBLIC "-//ibatis.apache.org//DTD SQL Map Config 2.0//EN"
  3. "http://ibatis.apache.org/dtd/sql-map-config-2.dtd">
  4. <sqlMapConfig>
  5. <!-- 引用JDBC属性的配置文件 -->
  6. <propertiesresource="com/iflytek/entity/SqlMap.properties"/>
  7. <!-- 使用JDBC的事务管理 -->
  8. <transactionManagertype="JDBC">
  9. <!-- 数据源 -->
  10. <dataSourcetype="SIMPLE">
  11. <propertyname="JDBC.Driver"value="${driver}"/>
  12. <propertyname="JDBC.ConnectionURL"value="${url}"/>
  13. <propertyname="JDBC.Username"value="${username}"/>
  14. <propertyname="JDBC.Password"value="${password}"/>
  15. </dataSource>
  16. </transactionManager>
  17. <!-- 这里可以写多个实体的映射文件 -->
  18. <sqlMapresource="com/iflytek/entity/Student.xml"/>
  19. </sqlMapConfig>

 

StudentDao

Java代码 复制代码 收藏代码
  1. package com.iflytek.dao;
  2. import java.util.List;
  3. import com.iflytek.entity.Student;
  4. /**
  5. * @author xudongwang 2011-12-31
  6. *
  7. * Email:xdwangiflytek@gmail.com
  8. *
  9. */
  10. publicinterface StudentDao {
  11. /**
  12. * 添加学生信息
  13. *
  14. * @param student
  15. * 学生实体
  16. * @return 返回是否添加成功
  17. */
  18. publicboolean addStudent(Student student);
  19. /**
  20. * 根据学生id删除学生信息
  21. *
  22. * @param id
  23. * 学生id
  24. * @return 删除是否成功
  25. */
  26. publicboolean deleteStudentById(int id);
  27. /**
  28. * 更新学生信息
  29. *
  30. * @param student
  31. * 学生实体
  32. * @return 更新是否成功
  33. */
  34. publicboolean updateStudent(Student student);
  35. /**
  36. * 查询全部学生信息
  37. *
  38. * @return 返回学生列表
  39. */
  40. public List<Student> selectAllStudent();
  41. /**
  42. * 根据学生姓名模糊查询学生信息
  43. *
  44. * @param name
  45. * 学生姓名
  46. * @return 学生信息列表
  47. */
  48. public List<Student> selectStudentByName(String name);
  49. /**
  50. * 根据学生id查询学生信息
  51. *
  52. * @param id
  53. * 学生id
  54. * @return 学生对象
  55. */
  56. public Student selectStudentById(int id);
  57. }

StudentDaoImpl

Java代码 复制代码 收藏代码
  1. package com.iflytek.daoimpl;
  2. import java.io.IOException;
  3. import java.io.Reader;
  4. import java.sql.SQLException;
  5. import java.util.List;
  6. import com.ibatis.common.resources.Resources;
  7. import com.ibatis.sqlmap.client.SqlMapClient;
  8. import com.ibatis.sqlmap.client.SqlMapClientBuilder;
  9. import com.iflytek.dao.StudentDao;
  10. import com.iflytek.entity.Student;
  11. /**
  12. * @author xudongwang 2011-12-31
  13. *
  14. * Email:xdwangiflytek@gmail.com
  15. *
  16. */
  17. publicclass StudentDaoImpl implements StudentDao {
  18. privatestatic SqlMapClient sqlMapClient = null;
  19. // 读取配置文件
  20. static {
  21. try {
  22. Reader reader = Resources
  23. .getResourceAsReader("com/iflytek/entity/SqlMapConfig.xml");
  24. sqlMapClient = SqlMapClientBuilder.buildSqlMapClient(reader);
  25. reader.close();
  26. } catch (IOException e) {
  27. e.printStackTrace();
  28. }
  29. }
  30. publicboolean addStudent(Student student) {
  31. Object object = null;
  32. boolean flag = false;
  33. try {
  34. object = sqlMapClient.insert("addStudent", student);
  35. System.out.println("添加学生信息的返回值:" + object);
  36. } catch (SQLException e) {
  37. e.printStackTrace();
  38. }
  39. if (object != null) {
  40. flag = true;
  41. }
  42. return flag;
  43. }
  44. publicboolean deleteStudentById(int id) {
  45. boolean flag = false;
  46. Object object = null;
  47. try {
  48. object = sqlMapClient.delete("deleteStudentById", id);
  49. System.out.println("删除学生信息的返回值:" + object + ",这里返回的是影响的行数");
  50. } catch (SQLException e) {
  51. e.printStackTrace();
  52. }
  53. if (object != null) {
  54. flag = true;
  55. }
  56. return flag;
  57. }
  58. publicboolean updateStudent(Student student) {
  59. boolean flag = false;
  60. Object object = false;
  61. try {
  62. object = sqlMapClient.update("updateStudent", student);
  63. System.out.println("更新学生信息的返回值:" + object + ",返回影响的行数");
  64. } catch (SQLException e) {
  65. e.printStackTrace();
  66. }
  67. if (object != null) {
  68. flag = true;
  69. }
  70. return flag;
  71. }
  72. public List<Student> selectAllStudent() {
  73. List<Student> students = null;
  74. try {
  75. students = sqlMapClient.queryForList("selectAllStudent");
  76. } catch (SQLException e) {
  77. e.printStackTrace();
  78. }
  79. return students;
  80. }
  81. public List<Student> selectStudentByName(String name) {
  82. List<Student> students = null;
  83. try {
  84. students = sqlMapClient.queryForList("selectStudentByName",name);
  85. } catch (SQLException e) {
  86. e.printStackTrace();
  87. }
  88. return students;
  89. }
  90. public Student selectStudentById(int id) {
  91. Student student = null;
  92. try {
  93. student = (Student) sqlMapClient.queryForObject(
  94. "selectStudentById", id);
  95. } catch (SQLException e) {
  96. e.printStackTrace();
  97. }
  98. return student;
  99. }
  100. }

 

TestIbatis.java

Java代码 复制代码 收藏代码
  1. package com.iflytek.test;
  2. import java.sql.Date;
  3. import java.util.List;
  4. import com.iflytek.daoimpl.StudentDaoImpl;
  5. import com.iflytek.entity.Student;
  6. /**
  7. * @author xudongwang 2011-12-31
  8. *
  9. * Email:xdwangiflytek@gmail.com
  10. *
  11. */
  12. publicclass TestIbatis {
  13. publicstaticvoid main(String[] args) {
  14. StudentDaoImpl studentDaoImpl = new StudentDaoImpl();
  15. System.out.println("测试插入");
  16. Student addStudent = new Student();
  17. addStudent.setName("李四");
  18. addStudent.setBirth(Date.valueOf("2011-09-02"));
  19. addStudent.setScore(88);
  20. System.out.println(studentDaoImpl.addStudent(addStudent));
  21. System.out.println("测试根据id查询");
  22. System.out.println(studentDaoImpl.selectStudentById(1));
  23. System.out.println("测试模糊查询");
  24. List<Student> mohuLists = studentDaoImpl.selectStudentByName("李");
  25. for (Student student : mohuLists) {
  26. System.out.println(student);
  27. }
  28. System.out.println("测试查询所有");
  29. List<Student> students = studentDaoImpl.selectAllStudent();
  30. for (Student student : students) {
  31. System.out.println(student);
  32. }
  33. System.out.println("根据id删除学生信息");
  34. System.out.println(studentDaoImpl.deleteStudentById(1));
  35. System.out.println("测试更新学生信息");
  36. Student updateStudent = new Student();
  37. updateStudent.setId(1);
  38. updateStudent.setName("李四1");
  39. updateStudent.setBirth(Date.valueOf("2011-08-07"));
  40. updateStudent.setScore(21);
  41. System.out.println(studentDaoImpl.updateStudent(updateStudent));
  42. }
  43. }
分享到:
评论

相关推荐

    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的工作原理,并通过添加注释来帮助我们更好...

    Spring与iBATIS的集成

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

    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和结果集映射的繁琐工作,...

    iBATIS2.3.4 jar包及源码

    iBATIS 是一款著名的开源Java持久层框架,它在2005年由Clinton Begin创建,最初命名为Apache MyBatis,后来发展为独立的项目。在本主题中,我们关注的是iBATIS 2.3.4版本的jar包及其源码。 首先,`ibatis-2.3.4.jar...

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

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

    ibatis应对批量update

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

    ibatis官方资料及所需要的Jar包

    Ibatis官方资料大全提供了全面的学习资源,包括ibatis-common.jar、ibatis-Dao.jar和ibatis-sqlmap.jar等核心组件的详细讲解和相关jar文件,是学习和使用Ibatis不可或缺的参考资料。 首先,我们来了解一下ibatis-...

    ibatis 自己学的一个ibatis项目(只是打通了Oracle) 非常适合入门

    自己写了一个Ibatis入门文件 JDK用的1.4 ibatis用的2.3.0 一定要注意版本问题,不然出现本本不兼容很费劲,我调了一上午,注意一定要用JDK1.4 ibatis2.3.0! 数据库自己建一张简单的表就行了,特别说明 只适合新手...

    ibatis_with_memcached

    本项目"ibatis_with_memcached"就是关于如何将Ibatis与Memcached集成,实现高效的数据库缓存策略的实例。 Ibatis是一个基于Java的SQL映射框架,它允许开发者编写SQL语句并与Java对象进行绑定,从而避免了传统的JDBC...

    ibatis教程 输入参数详解

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

    maven整合ibatis的简单例子

    在Java开发中,Maven和iBatis是两个非常重要的工具。Maven是一个项目管理和综合工具,它帮助开发者管理依赖、构建项目,并提供了一种标准化的项目结构。而iBatis则是一个SQL映射框架,它将SQL语句与Java代码分离,...

    Ibatis3手册 Ibatis3参考手册

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

    Ibatis 入门经典 实例

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

    ibatis拼接字符串

    在本篇文章中,我们将深入探讨如何使用 Java 编程语言结合 iBatis 框架进行 SQL 字符串的动态拼接。通过分析提供的代码片段,我们可以了解到在实际开发过程中,这种动态 SQL 的构建方式非常常见,尤其是在处理复杂的...

    spring ibatis整合所需jar包

    在Java Web开发中,Spring和iBatis是两个非常重要的框架。Spring是一个全面的后端开发框架,提供了依赖注入、AOP(面向切面编程)、事务管理等特性,而iBatis则是一个优秀的持久层框架,它将SQL语句与Java代码分离,...

    Ibatis入门例子,Ibatis教程

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

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

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

    ibatis教程,ibatis帮助文档

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

    Ibatis

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

Global site tag (gtag.js) - Google Analytics