iBatis是个像Hibernate, JDO,EJB一类的数据持久框架,它能将对象映射为SQL语句.它是个轻量级的框架并且持久性API适合持久化POJO.iBatis也与Hibernate, JDO不同,因为它使用存储过程和现有的SQL来处理数据库.
以下例子显示了如何创建ibatis例子及执行查询插入删除更新调用存储过程的过程。
1在mysql数据库中创建一个数据库ibatisdata及数据库表person及一个存储过程showData,创建代码如下
SET FOREIGN_KEY_CHECKS=0;
-- ----------------------------
-- Table structure for person
-- ----------------------------
DROP TABLE IF EXISTS `person`;
CREATE TABLE `person` (
`id` int(11) NOT NULL DEFAULT '0',
`name` varchar(16) DEFAULT NULL,
`passwd` varchar(16) DEFAULT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
-- ----------------------------
-- Procedure structure for showData
-- ----------------------------
DROP PROCEDURE IF EXISTS `showData`;
DELIMITER ;;
CREATE DEFINER=`root`@`localhost` PROCEDURE `showData`()
BEGIN
select * from Person;
END;;
DELIMITER ;
-- ----------------------------
-- Records
-- ----------------------------
INSERT INTO `person` VALUES ('1', 'zhang', null);
|
2 在myeclipse中创建一个java project,然后通过右击项目-properties-java build path-libraries –add external jars ,导入ibatis及mysql-connector jar包;
然后创建 Person.java类,即对应数据库中person表的POJO类。
为了映射配置我们需要创建SqlMapConfig.xml(类似于hibernate中的hibernate.cfg.xml文件)来指定如下信息:针对映射语句的命名空间前缀、我们数据库使用jdbc进行访问及访问驱动、链接url、链接用户名密码、对应的SQL语句描述文件等信息。
创建SqlMap映射文件Person.xml负责程序执行的SQL语句(相当于Hibernate的映射文件 *.hbm.xml,只是它的映射不靠POJO的属性到数据库字段的一一映射,靠的是Sql语句,所以谓之 SqlMap, 注意每条语句中参数的写法)等。
创建一个获取SqlMapClient的工厂类,相当于MyEclipse为Hibernate应用程序生成的HibernateSessionFactory类。
创建测试类ClientTest.java来测试数据库一系列操作。
创建完目录结构如下图所示

Person.java
package com.yan;
public class Person {
public Integer id;
public String name;
public String passwd;
public Person() {
super();
}
public Person(Integer id) {
super();
this.id = id;
}
public Integer getId() {
return id;
}
public String getName() {
return name;
}
public String getPasswd() {
return passwd;
}
public void setId(Integer id) {
this.id = id;
}
public void setPasswd(String passwd) {
this.passwd = passwd;
}
public void setName(String name2) {
this.name = name2;
}
}
|
SqlMapConfig.java
package com.yan;
import java.io.Reader;
import com.ibatis.common.resources.Resources;
import com.ibatis.sqlmap.client.SqlMapClient;
import com.ibatis.sqlmap.client.SqlMapClientBuilder;
public class SqlMapConfig {
private static final SqlMapClient sqlMap;
static
{
try
{
String resource = "SqlMapConfig.xml";
Reader reader = Resources.getResourceAsReader(resource);
sqlMap = SqlMapClientBuilder.buildSqlMapClient(reader);
}
catch (Exception e)
{
e.printStackTrace();
throw new RuntimeException("Error initializing MyAppSqlConfig class. Cause: " + e);
}
}
public static SqlMapClient getSqlMapInstance()
{
return sqlMap;
}
}
|
SqlMapConfig.xml
<!DOCTYPE sqlMapConfig PUBLIC "-//iBATIS.com//DTD SQL Map Config 2.0//EN"
"http://www.ibatis.com/dtd/sql-map-config-2.dtd">
<sqlMapConfig>
<!-- SqlMap的环境属性配置 -->
<settings cacheModelsEnabled="true" enhancementEnabled="true"
lazyLoadingEnabled="true" maxRequests="32" maxSessions="10"
maxTransactions="5" useStatementNamespaces="false" />
<!-- 配置SqlMap的连接池属性,默认使用SimpleDataSource实现-->
<transactionManager type="JDBC">
<dataSource type="SIMPLE">
<property name="JDBC.Driver" value="com.mysql.jdbc.Driver" />
<property name="JDBC.ConnectionURL" value="jdbc:mysql://127.0.0.1:3306/ibatisdata" />
<property name="JDBC.Username" value="root" />
<property name="JDBC.Password" value="123456" />
</dataSource>
</transactionManager>
<!-- SqlMap的映射文件 -->
<sqlMap resource="com/yan/Person.xml" />
</sqlMapConfig>
|
Person.xml
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE sqlMap PUBLIC "-//iBATIS.com//DTD SQL Map 2.0//EN"
"http://www.ibatis.com/dtd/sql-map-2.dtd">
<sqlMap namespace="Person">
<!-- 传入包装类型(Integer)参数,查询到结果集组装成一个Person对象返回 -->
<select id="getPerson" parameterClass="int" resultClass="com.yan.Person">
SELECT ID as id, NAME as name, PASSWD as passwd
FROM PERSON WHERE ID = #value#
</select>
<!-- 插入一条Person对应的记录到数据库中 -->
<insert id="insertPerson" parameterClass="com.yan.Person">
INSERT INTO PERSON (ID, NAME, PASSWD) VALUES (#id#,#name#, #passwd#)
</insert>
<!-- 关联ID更新一条Person记录到数据库中 -->
<update id="updatePerson" parameterClass="com.yan.Person">
UPDATE PERSON SET NAME = #name#, PASSWD = #passwd# WHERE ID = #id#
</update>
<!-- 根据ID从数据库中删除一条Person记录 -->
<delete id="deletePerson" parameterClass="com.yan.Person">
DELETE FROM PERSON WHERE ID = #id#
</delete>
<!-- 调用存储过程 -->
<procedure id="storedinfo" resultClass="com.yan.Person" >
{call showData()}
</procedure>
</sqlMap>
|
ClientTest.java
package com.yan;
import java.util.List;
import com.ibatis.sqlmap.client.SqlMapClient;
public class ClientTest {
public static void main(String[] args) throws Exception
{
SqlMapClient sqlMap = SqlMapConfig.getSqlMapInstance(); // as coded above
Integer personPk = new Integer(1);//根据id查找Person
Person person = (Person) sqlMap.queryForObject("getPerson", personPk);
System.out.println(person.getName());
person.setName("yan");
sqlMap.update("updatePerson",person);//更新Person
person.setId(7);
sqlMap.insert("insertPerson",person);//插入新的Person
sqlMap.delete("deletePerson", person);//根据id删除Person
List<Person> persons=sqlMap.queryForList("storedinfo",null);//调用存储过程,查询出所有的Person
for(Person p:persons){
System.out.println("id:"+p.getId()+" name :"+p.getName()+" pwd:"+p.getPasswd());
}
}
}
|

- 大小: 23.2 KB
分享到:
相关推荐
在本实例中,我们将深入探讨如何使用Ibatis框架与MySQL数据库进行交互。Ibatis是一个优秀的持久层框架,它简化了Java应用与数据库之间的数据操作,避免了传统的JDBC代码繁琐的过程。MySQL则是一款广泛使用的开源关系...
描述部分为空,但我们可以根据标题推测,文章可能详细讲解了如何在实际项目中利用IBatis与MySQL数据库进行交互,包括设置数据源、配置SQL映射文件、编写Mapper接口和XML配置,以及如何处理返回结果等。 **标签解析...
iBatis是一个轻量级的持久层框架,它将SQL语句与Java代码分离,使得数据库操作更加灵活和易于维护。iBatis可以与Spring无缝集成,通过Spring的DataSource和SqlSessionFactoryBean配置,可以实现数据库会话的管理。 ...
9. **编写业务逻辑**:在Service层实现业务逻辑,调用DAO层的方法与数据库进行交互。 10. **测试**:通过编写JUnit测试或者运行应用,验证配置是否正确,功能是否正常。 这个简单的配置实例将涵盖这些基础配置,...
本实例是关于如何使用iBATIS连接MySQL数据库进行CRUD(Create、Read、Update、Delete)操作的一个具体应用。 首先,让我们深入了解iBATIS的核心概念: 1. SQL映射文件:iBATIES的核心是SQL映射文件,通常以`.xml`...
在开发过程中,你还可以利用Struts2的拦截器实现权限控制、日志记录等功能,利用iBatis的动态SQL进行复杂的数据库操作。同时,可以通过单元测试确保代码质量,使用Maven或Gradle管理项目依赖,提高开发效率。总的来...
为了更高效地操作数据库,Ibatis支持动态SQL,可以根据条件动态生成SQL语句。例如,我们可以使用if、choose、when、otherwise等标签实现复杂的查询逻辑。 总的来说,Ibatis提供了一种灵活的方式来操作MySQL数据库,...
本文档将深入探讨如何在IBATIS框架下连接和管理多个数据库,以便于在不同环境中灵活切换或同时操作多个数据源。 IBATIS是一个流行的Java和.NET平台上的数据访问层解决方案,它允许开发者编写SQL语句并与对象模型...
在这个例子中,Mysql作为数据存储,通过Ibatis执行的SQL语句进行数据的增删改查操作。Mysql以其高效、稳定和易于管理的特性,成为许多开发者的首选数据库。 整合过程大致如下: - 首先,配置Struts的Action和...
首先,`查询`是数据库操作的核心部分,这里指的是通过编程方式与数据库进行交互,获取所需数据。在本案例中,查询采用了`iBatis`的动态模糊查询,这是一种强大的Java持久层框架,允许开发者将SQL语句直接写在XML配置...
总的来说,iBatis教程中文版通过这些实例详细讲解了如何配置和使用iBatis进行数据库操作,帮助开发者掌握这一强大的数据持久层工具。通过学习和实践这些实例,你可以了解到如何将Java对象与SQL语句对应,以及如何...
在本实例中,我们将会探讨如何使用iBATIS3与MySQL数据库进行交互,并通过`news.sql`脚本来创建相关的数据表。 首先,让我们了解iBATIS3的核心概念。iBATIS3引入了SQL Maps的概念,这是一种将SQL语句与Java代码分离...
本文将深入讲解如何进行Ibatis与MySQL的整合,并提供一个简单的实例供初学者参考。 1. **Ibatis简介** Ibatis是MyBatis的前身,由Clinton Begin创建,它摒弃了Hibernate等ORM框架的全自动化映射,允许开发者自由...
本实例聚焦于`iBatis` 在实际项目中的应用,以及如何与MySQL数据库相结合。MySQL是广泛使用的开源关系型数据库管理系统,以其高效、稳定和易用性而备受青睐。 `iBatis` 的核心概念包括配置文件、映射文件、...
总的来说,这个示例提供了一个简单的Ibatis与MySQL 5.1集成的CRUD操作模型,对于初学者来说,这是一个很好的起点,有助于理解Ibatis的工作方式以及如何与数据库进行交互。通过这种方式,开发者可以更加专注于业务...
在本项目中,iBatis通过XML配置文件或者注解定义SQL语句,与数据库进行交互,如用户的注册、查询和删除操作,都是通过iBatis执行对应的SQL实现的。 MySQL数据库存储了所有用户信息,如用户名、密码等。在项目中,你...
通过上述步骤,你已经了解了如何设置iBATIS环境,编写SQL映射文件,以及如何在Java代码中调用这些映射进行数据库操作。接下来,你可以继续探索iBATIS的更多高级特性,如动态SQL、事务控制等,以适应更复杂的业务场景...
在本项目中,"springboot+mysql+ibatis完整整合案例"是一个针对初学者的教程,旨在演示如何将Spring Boot、MySQL数据库和MyBatis框架有效地集成在一起,创建一个可运行的应用程序。以下是对这些技术及其整合过程的...
总结来说,"ibatis2.3例子代码"提供了一个基于iBatis 2.3版本与MySQL数据库交互的实例。通过学习这个例子,你可以了解到如何配置iBatis,如何编写SQL映射文件,以及如何在Java代码中使用SqlSession和Mapper接口来...
5. **初始化 SqlMapClient** - 在代码中创建 SqlMapClient 实例,它是 Ibatis 的入口点,用于执行 SQL 映射文件中的操作。 6. **执行业务操作** - 调用 SqlMapClient 对象的方法执行 SQL,获取或更新数据。 7. **...