- 浏览: 675365 次
- 性别:
- 来自: 安徽
文章分类
- 全部博客 (252)
- Html/Div+CSS (12)
- Js/Jquery (34)
- Flex (2)
- Ajax (3)
- Java (35)
- C# (15)
- Spring (16)
- Hibernate (13)
- Struts2 (12)
- Struts1 (7)
- DWR (1)
- iBatis/myBatis (9)
- Tag(JSTL、EL) (1)
- Android (44)
- SQL (7)
- SEO (7)
- Exception (3)
- Tool (10)
- Other (3)
- WebService (9)
- Apache (7)
- Ext (0)
- Utils (12)
- thinking in programme (2)
- Hadoop (0)
- ActiveMQ (0)
- HTML5/CSS3 (0)
- WPF (1)
- NodeJs (1)
- 设计模式 (0)
- 程序人生 (1)
- 随笔 (1)
- Linux (1)
- Load Balance (0)
最新评论
-
drinkjava2:
太复杂了而且不通用,利用ThreadLocal可完美解决这一问 ...
JDBC的多条件动态查询 -
u013107014:
multipartRequest.getFiles(" ...
多文件上传 by MultipartFile and Multiple -
liyys:
可惜没讲你mysql数据库的表的设计
iBatis入门 -
Mapple_leave:
效果还是挺不错的,谢谢了。
中文简体与繁体的转换 -
arcpad:
JS禁用浏览器退格键
iBatis 简介:
iBatis 是apache 的一个开源项目,一个O/R Mapping 解决方案,iBatis 最大的特点就是小巧,上手很快。如果不需要太多复杂的功能,iBatis 是能够满足你的要求又足够灵活的最简单的解决方案,现在的iBatis 已经改名为Mybatis 了。
官网为:http://www.mybatis.org/
搭建iBatis 开发环境:
1 、导入相关的jar 包,ibatis-2.3.0.677.jar 、mysql-connector-java-5.1.6-bin.jar
2 、编写配置文件:
Jdbc 连接的属性文件
总配置文件, SqlMapConfig.xml
关于每个实体的映射文件(Map 文件)
Demo :
Student.java:
package com.iflytek.entity; import java.sql.Date; /** * @author xudongwang 2011-12-31 * * Email:xdwangiflytek@gmail.com * */ public class Student { // 注意这里需要保证有一个无参构造方法,因为包括Hibernate在内的映射都是使用反射的,如果没有无参构造可能会出现问题 private int id; private String name; private Date birth; private float score; 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 Date getBirth() { return birth; } public void setBirth(Date birth) { this.birth = birth; } public float getScore() { return score; } public void setScore(float score) { this.score = score; } @Override public String toString() { return "id=" + id + "\tname=" + name + "\tmajor=" + birth + "\tscore=" + score + "\n"; } }
SqlMap.properties :
driver=com.mysql.jdbc.Driver url=jdbc:mysql://localhost:3306/ibatis username=root password=123
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使得我们在下面使用Student实体类的时候不需要写包名 --> <typeAlias alias="Student" type="com.iflytek.entity.Student" /> <!-- 这样以后改了sql,就不需要去改java代码了 --> <!-- id表示select里的sql语句,resultClass表示返回结果的类型 --> <select id="selectAllStudent" resultClass="Student"> select * from tbl_student </select> <!-- parameterClass表示参数的内容 --> <!-- #表示这是一个外部调用的需要传进的参数,可以理解为占位符 --> <select id="selectStudentById" parameterClass="int" resultClass="Student"> select * from tbl_student where id=#id# </select> <!-- 注意这里的resultClass类型,使用Student类型取决于queryForList还是queryForObject --> <select id="selectStudentByName" parameterClass="String" resultClass="Student"> select name,birth,score from tbl_student where name like '%$name$%' </select> <insert id="addStudent" parameterClass="Student"> insert into tbl_student(name,birth,score) values (#name#,#birth#,#score#); <selectKey resultClass="int" keyProperty="id"> select @@identity as inserted <!-- 这里需要说明一下不同的数据库主键的生成,对各自的数据库有不同的方式: --> <!-- 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之前 --> </selectKey> </insert> <delete id="deleteStudentById" parameterClass="int"> <!-- #id#里的id可以随意取,但是上面的insert则会有影响,因为上面的name会从Student里的属性里去查找 --> <!-- 我们也可以这样理解,如果有#占位符,则ibatis会调用parameterClass里的属性去赋值 --> delete from tbl_student where id=#id# </delete> <update id="updateStudent" parameterClass="Student"> update tbl_student set name=#name#,birth=#birth#,score=#score# where id=#id# </update> </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 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> <!-- 引用JDBC属性的配置文件 --> <properties resource="com/iflytek/entity/SqlMap.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="${username}" /> <property name="JDBC.Password" value="${password}" /> </dataSource> </transactionManager> <!-- 这里可以写多个实体的映射文件 --> <sqlMap resource="com/iflytek/entity/Student.xml" /> </sqlMapConfig>
StudentDao :
package com.iflytek.dao; import java.util.List; import com.iflytek.entity.Student; /** * @author xudongwang 2011-12-31 * * Email:xdwangiflytek@gmail.com * */ public interface StudentDao { /** * 添加学生信息 * * @param student * 学生实体 * @return 返回是否添加成功 */ public boolean addStudent(Student student); /** * 根据学生id删除学生信息 * * @param id * 学生id * @return 删除是否成功 */ public boolean deleteStudentById(int id); /** * 更新学生信息 * * @param student * 学生实体 * @return 更新是否成功 */ public boolean updateStudent(Student student); /** * 查询全部学生信息 * * @return 返回学生列表 */ public List<Student> selectAllStudent(); /** * 根据学生姓名模糊查询学生信息 * * @param name * 学生姓名 * @return 学生信息列表 */ public List<Student> selectStudentByName(String name); /** * 根据学生id查询学生信息 * * @param id * 学生id * @return 学生对象 */ public Student selectStudentById(int id); }
StudentDaoImpl :
package com.iflytek.daoimpl; import java.io.IOException; import java.io.Reader; import java.sql.SQLException; import java.util.List; import com.ibatis.common.resources.Resources; import com.ibatis.sqlmap.client.SqlMapClient; import com.ibatis.sqlmap.client.SqlMapClientBuilder; import com.iflytek.dao.StudentDao; import com.iflytek.entity.Student; /** * @author xudongwang 2011-12-31 * * Email:xdwangiflytek@gmail.com * */ public class StudentDaoImpl implements StudentDao { private static SqlMapClient sqlMapClient = null; // 读取配置文件 static { try { Reader reader = Resources .getResourceAsReader("com/iflytek/entity/SqlMapConfig.xml"); sqlMapClient = SqlMapClientBuilder.buildSqlMapClient(reader); reader.close(); } catch (IOException e) { e.printStackTrace(); } } public boolean addStudent(Student student) { Object object = null; boolean flag = false; try { object = sqlMapClient.insert("addStudent", student); System.out.println("添加学生信息的返回值:" + object); } catch (SQLException e) { e.printStackTrace(); } if (object != null) { flag = true; } return flag; } public boolean deleteStudentById(int id) { boolean flag = false; Object object = null; try { object = sqlMapClient.delete("deleteStudentById", id); System.out.println("删除学生信息的返回值:" + object + ",这里返回的是影响的行数"); } catch (SQLException e) { e.printStackTrace(); } if (object != null) { flag = true; } return flag; } public boolean updateStudent(Student student) { boolean flag = false; Object object = false; try { object = sqlMapClient.update("updateStudent", student); System.out.println("更新学生信息的返回值:" + object + ",返回影响的行数"); } catch (SQLException e) { e.printStackTrace(); } if (object != null) { flag = true; } return flag; } public List<Student> selectAllStudent() { List<Student> students = null; try { students = sqlMapClient.queryForList("selectAllStudent"); } catch (SQLException e) { e.printStackTrace(); } return students; } public List<Student> selectStudentByName(String name) { List<Student> students = null; try { students = sqlMapClient.queryForList("selectStudentByName",name); } catch (SQLException e) { e.printStackTrace(); } return students; } public Student selectStudentById(int id) { Student student = null; try { student = (Student) sqlMapClient.queryForObject( "selectStudentById", id); } catch (SQLException e) { e.printStackTrace(); } return student; } }
TestIbatis.java :
package com.iflytek.test; import java.sql.Date; import java.util.List; import com.iflytek.daoimpl.StudentDaoImpl; import com.iflytek.entity.Student; /** * @author xudongwang 2011-12-31 * * Email:xdwangiflytek@gmail.com * */ public class TestIbatis { public static void main(String[] args) { StudentDaoImpl studentDaoImpl = new StudentDaoImpl(); System.out.println("测试插入"); Student addStudent = new Student(); addStudent.setName("李四"); addStudent.setBirth(Date.valueOf("2011-09-02")); addStudent.setScore(88); System.out.println(studentDaoImpl.addStudent(addStudent)); System.out.println("测试根据id查询"); System.out.println(studentDaoImpl.selectStudentById(1)); System.out.println("测试模糊查询"); List<Student> mohuLists = studentDaoImpl.selectStudentByName("李"); for (Student student : mohuLists) { System.out.println(student); } System.out.println("测试查询所有"); List<Student> students = studentDaoImpl.selectAllStudent(); for (Student student : students) { System.out.println(student); } System.out.println("根据id删除学生信息"); System.out.println(studentDaoImpl.deleteStudentById(1)); System.out.println("测试更新学生信息"); Student updateStudent = new Student(); updateStudent.setId(1); updateStudent.setName("李四1"); updateStudent.setBirth(Date.valueOf("2011-08-07")); updateStudent.setScore(21); System.out.println(studentDaoImpl.updateStudent(updateStudent)); } }
iBatis 的优缺点:
优点:
1、 减少代码量,简单;
2、 性能增强;
3、 Sql 语句与程序代码分离;
4、 增强了移植性;
缺点:
1、 和Hibernate 相比,sql 需要自己写;
2、 参数数量只能有一个,多个参数时不太方便;
- iBatisDemo.rar (998.6 KB)
- 下载次数: 957
评论
如果不需要太多复杂的功能,iBatis 是能够满足你的要求又足够灵活的最简单的解决方案,现在的iBatis 已经改名为Mybatis 了。
近期项目用到 iBatis,所以需要学习iBatis,下面是总结几个不错学习网站给大家学习参考:
1、官网(英文资料):http://www.mybatis.org/
2、iBATIS(中文教程):http://www.yiibai.com/ibatis/
3、iBATIS - iBATIS Apache软件基金会的官方网站。
http://ibatis.apache.org/index.html
能运行
?useUnicode=TRUE&characterEncoding=UTF-8
并且对应数据库的表和字段对应编码改成一致的,即UTF8
发表评论
-
MyBatis 批量操作、添加日志显示、MyBatis与iBatis区别
2012-12-24 08:38 2729MyBatis 中的批量 ... -
MyBatis 通用分页
2012-12-20 08:33 18487分页分为真分页和假分页,而 MyBatis 本身没 ... -
MyBatis动态SQL
2012-12-18 19:02 3109MyBatis 另一个强大 ... -
MyBatis Mapper XML 文件 01
2012-12-18 08:34 3358前面说了 MyBati ... -
MyBatis Mapper XML 文件 02
2012-12-19 08:33 2025高级结果映射 下面我们来看看官方文档上 ... -
MyBatis XML 映射配置文件
2012-12-14 08:41 3257在前面说了MyBatis 入门 ,了解了开发的基本 ... -
MyBatis入门
2012-12-11 09:04 9624在前面简单学习了iBatis ,因为项目中使用 ... -
Generator自动生成mybatis配置和类信息(MBG )
2012-12-12 08:27 7312我们在进行 MyBatis 开发时,可以使用 My ...
相关推荐
在本教程中,我们将通过一个简单的Ibatis入门例子,带你逐步了解并掌握这个强大的框架。 首先,我们需要在项目中引入Ibatis的依赖。通常,我们会在Maven的pom.xml文件中添加以下依赖: ```xml <groupId>org....
《Ibatis 入门经典 实例》 Ibatis 是一款著名的轻量级 Java 持久层框架,它提供了一种映射 SQL 和 Java 对象的简单方式,从而减轻了开发人员在数据库操作中的工作负担。这篇实例教程将带你深入理解 Ibatis 的核心...
**Ibatis 入门教程** Ibatis 是一个优秀的 Java ORM(对象关系映射)框架,它允许程序员将数据库操作与业务逻辑分离,提供灵活的 SQL 配置和映射机制,使得开发人员能够自由地编写 SQL 而不被 ORM 的复杂性所束缚。...
**iBatis入门(三)** 在本篇中,我们将深入探讨iBatis,这是一个流行的开源持久层框架,它允许开发者将SQL语句与Java代码分离,提供更灵活的数据库操作方式。iBatis的核心是SQL Maps,这些映射文件包含了SQL语句以及...
标题 "ibatis 入门" 暗示我们要探讨的是关于使用和理解开源持久层框架 iBATIS 的基础知识。iBATIS 是一个优秀的 Java 应用框架,它将 SQL 查询与 Java 代码分离,提供了更灵活的数据访问方式。这篇博客(博文链接已...
本教程将带你一步步走进iBatis的世界,通过一个最简单的入门例子来了解其基本概念和使用方法。 一、iBatis简介 iBatis(现在称为MyBatis)是由Apache软件基金会维护的一个开源项目,它解决了Java应用程序直接操作...
Ibatis,全称为MyBatis,是一个优秀的Java持久层框架,它主要负责SQL映射,使得...通过学习这个Ibatis入门教程,你可以了解并掌握如何在Java应用中使用Ibatis进行数据操作,为后续的进阶学习和项目开发打下坚实的基础。
**Ibatis 入门到精通详细讲解** Ibatis 是一个优秀的持久层框架,它允许开发者将 SQL 语句与 Java 代码分离,提供了一个灵活的映射框架,从而减轻了开发人员在数据库操作上的工作负担。这篇详细讲解将带你从入门到...
**ibatis入门** iBatis,一款轻量级的Java持久层框架,是MyBatis的前身,由美国华人开发团队开发。它提供了一个SQL、Java和XML的映射框架,将SQL语句与Java代码分离,使得开发者可以更加灵活地处理数据库操作,避免...
【标题】:Ibatis Ibatis入门教程 【描述】:Ibatis是一款优秀的持久层框架,它简化了Java应用与数据库之间的交互,通过提供一个映射SQL的XML或注解方式,使得开发人员能够将精力集中在业务逻辑上,而不是繁琐的...
自己写了一个Ibatis入门文件 JDK用的1.4 ibatis用的2.3.0 一定要注意版本问题,不然出现本本不兼容很费劲,我调了一上午,注意一定要用JDK1.4 ibatis2.3.0! 数据库自己建一张简单的表就行了,特别说明 只适合新手...
这个压缩包中的"ibatisJavaTest"项目应该是一个简单的Ibatis入门示例,可能包含了配置文件、映射文件、测试类等。通过分析和运行这个项目,你可以直观地了解Ibatis如何与数据库交互,以及如何编写和使用Mapper接口。...
**iBATIS入门实例测试** iBATIS是一个优秀的开源持久层框架,它简化了Java应用程序与数据库之间的交互,使得开发者可以专注于SQL语句本身,而无需处理大量的JDBC代码。本教程将通过一个简单的实例来介绍如何使用...
【标题】"ibatis入门学习经典案例"是一个针对初学者设计的教程,旨在帮助他们快速理解和掌握MyBatis(原名iBatis)这一流行的Java持久层框架。这个案例提供了完整的部署和运行环境,使学习过程更为直观和便捷。 ...
在这个"ibatis入门实例(全代码)"中,我们将探讨如何通过 Ibatis 实现对数据库的操作,包括数据库的初始化、SQL 映射文件的编写以及 Java 代码的集成。 首先,让我们了解数据库的准备工作。在实例中,提供了数据库...
**Ibatis 入门实例详解** Ibatis 是一个优秀的、开源的 Java 数据访问框架,它简化了数据库操作,使得开发者可以更加专注于 SQL 而不需处理底层的 JDBC 编码。Ibatis 提供了一个映射框架,允许将 SQL 查询与 Java ...
iBatis,现已被更名为MyBatis,是一个优秀的持久层框架,它支持定制化SQL、存储过程以及高级映射。...通过这个简单的"iBatis入门Helloworld"项目,你可以快速掌握iBatis的基础操作,并为进一步学习和应用打下坚实基础。