iBatis基础教程:从数据库操作到对象映射

5星 · 超过95%的资源 需积分: 9 62 下载量 117 浏览量 更新于2024-07-27 收藏 248KB DOC 举报
iBatis教程.doc iBatis是一款流行的Java数据持久层框架,它不同于Hibernate、JDO等全栈式ORM框架,而是提供了一种轻量级的解决方案,允许开发者将对象模型直接映射到SQL语句,同时支持存储过程和自定义SQL。iBatis的主要优势在于其灵活性,它允许开发人员保留对数据库操作的控制,从而能够优化特定的查询性能。 本教程将通过三个逐步深入的例子来讲解如何使用iBatis。首先,我们将介绍如何从数据库中读取数据并显示结果。在这个例子中,我们假设已经有一个名为MySQL 5.0的数据库,并创建了一个名为`contact`的表,包含以下字段: - `contactid`(主键,自动增长) - `firstName` - `lastName` - `email` 为了与数据库进行交互,我们需要创建一个对应的Java POJO(Plain Old Java Object)类,名为`Contact`。该类应包含与数据库表字段相对应的属性,例如`firstName`、`lastName`和`email`,以及对应的getter和setter方法。由于iBatis依赖于属性名与SQL查询中的列名匹配,因此在命名时要保持一致,即使数据库中字段名称与Java标准命名规范不同。 接下来,我们将配置iBatis。这通常涉及到创建一个`SqlMapConfig.xml`配置文件,用于定义数据源、事务管理器和SQL映射文件的位置。SQL映射文件(如`ContactMapper.xml`)是iBatis的核心,它包含了具体的SQL语句和结果映射。在`ContactMapper.xml`中,我们可以定义一个查询语句,用于获取`contact`表中的所有记录。 ```xml <select id="selectAllContacts" resultType="com.example.Contact"> SELECT * FROM contact </select> ``` 在Java代码中,我们需要一个SqlSession实例来执行SQL语句。首先,通过SqlSessionFactoryBuilder和SqlSessionFactory创建SqlSessionFactory,然后用SqlSessionFactory打开SqlSession。调用SqlSession的`selectList`方法,传入SQL映射ID(即`selectAllContacts`),即可执行查询并获取`Contact`对象列表。 ```java String resource = "SqlMapConfig.xml"; InputStream inputStream = Resources.getResourceAsStream(resource); SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream); SqlSession session = sqlSessionFactory.openSession(); List<Contact> contacts = session.selectList("selectAllContacts"); for (Contact contact : contacts) { System.out.println("Contact ID: " + contact.getContactid()); System.out.println("First Name: " + contact.getFirstName()); System.out.println("Last Name: " + contact.getLastName()); System.out.println("Email: " + contact.getEmail()); } session.close(); ``` 第二个例子涉及如何向数据库中添加新数据。在`ContactMapper.xml`中,我们需要定义一个`insert`语句,并在Java代码中调用`insert`方法: ```xml <insert id="insertContact"> INSERT INTO contact (firstName, lastName, email) VALUES (#{firstName}, #{lastName}, #{email}) </insert> ``` ```java Contact newContact = new Contact("John", "Doe", "john.doe@example.com"); int rowsAffected = session.insert("insertContact", newContact); if (rowsAffected > 0) { System.out.println("New contact added successfully."); } session.commit(); // 提交事务 ``` 第三个例子展示了如何通过iBatis删除数据库中的记录。同样,需要在`ContactMapper.xml`中定义一个`delete`语句,并在Java代码中调用`delete`方法: ```xml <delete id="deleteContactById"> DELETE FROM contact WHERE contactid = #{contactId} </delete> ``` ```java int contactIdToDelete = 1; // 假设这是我们要删除的联系人ID int rowsAffected = session.delete("deleteContactById", contactIdToDelete); if (rowsAffected > 0) { System.out.println("Contact deleted successfully."); } session.commit(); // 提交事务 ``` 通过这三个例子,你将了解如何使用iBatis进行基本的CRUD(Create, Read, Update, Delete)操作。随着对iBatis的深入学习,你还可以掌握更多高级特性,如动态SQL、缓存、事务控制等,以满足更复杂的业务需求。