`
shukuiyan
  • 浏览: 415515 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

ibatis调用mysql进行数据库操作实例

阅读更多

iBatis是个像Hibernate, JDO,EJB一类的数据持久框架,它能将对象映射为SQL语句.它是个轻量级的框架并且持久性API适合持久化POJO.iBatis也与Hibernate, JDO不同,因为它使用存储过程和现有的SQL来处理数据库.

 

以下例子显示了如何创建ibatis例子及执行查询插入删除更新调用存储过程的过程。

1mysql数据库中创建一个数据库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 ,导入ibatismysql-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的工厂类,相当于MyEclipseHibernate应用程序生成的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框架与MySQL数据库进行交互。Ibatis是一个优秀的持久层框架,它简化了Java应用与数据库之间的数据操作,避免了传统的JDBC代码繁琐的过程。MySQL则是一款广泛使用的开源关系...

    IBatis查删改查与调用存储过程 mysql数据库

    描述部分为空,但我们可以根据标题推测,文章可能详细讲解了如何在实际项目中利用IBatis与MySQL数据库进行交互,包括设置数据源、配置SQL映射文件、编写Mapper接口和XML配置,以及如何处理返回结果等。 **标签解析...

    struts spring ibatis mysql 整合 实例 数据库 源码

    iBatis是一个轻量级的持久层框架,它将SQL语句与Java代码分离,使得数据库操作更加灵活和易于维护。iBatis可以与Spring无缝集成,通过Spring的DataSource和SqlSessionFactoryBean配置,可以实现数据库会话的管理。 ...

    struts+spring+ibatis+mysql简单的配置实例

    9. **编写业务逻辑**:在Service层实现业务逻辑,调用DAO层的方法与数据库进行交互。 10. **测试**:通过编写JUnit测试或者运行应用,验证配置是否正确,功能是否正常。 这个简单的配置实例将涵盖这些基础配置,...

    iBaties连接mysql数据库CRUD实例

    本实例是关于如何使用iBATIS连接MySQL数据库进行CRUD(Create、Read、Update、Delete)操作的一个具体应用。 首先,让我们深入了解iBATIS的核心概念: 1. SQL映射文件:iBATIES的核心是SQL映射文件,通常以`.xml`...

    struts2+ibatis+mysql 项目

    在开发过程中,你还可以利用Struts2的拦截器实现权限控制、日志记录等功能,利用iBatis的动态SQL进行复杂的数据库操作。同时,可以通过单元测试确保代码质量,使用Maven或Gradle管理项目依赖,提高开发效率。总的来...

    ibatis操作mysql

    为了更高效地操作数据库,Ibatis支持动态SQL,可以根据条件动态生成SQL语句。例如,我们可以使用if、choose、when、otherwise等标签实现复杂的查询逻辑。 总的来说,Ibatis提供了一种灵活的方式来操作MySQL数据库,...

    IBATIS连接多数据库参考文档

    本文档将深入探讨如何在IBATIS框架下连接和管理多个数据库,以便于在不同环境中灵活切换或同时操作多个数据源。 IBATIS是一个流行的Java和.NET平台上的数据访问层解决方案,它允许开发者编写SQL语句并与对象模型...

    struts+spring+ibatis+mysql整合小例子(适用于新手)

    在这个例子中,Mysql作为数据存储,通过Ibatis执行的SQL语句进行数据的增删改查操作。Mysql以其高效、稳定和易于管理的特性,成为许多开发者的首选数据库。 整合过程大致如下: - 首先,配置Struts的Action和...

    简单的查询显示例子做的,文件里有mysql的数据库文件

    首先,`查询`是数据库操作的核心部分,这里指的是通过编程方式与数据库进行交互,获取所需数据。在本案例中,查询采用了`iBatis`的动态模糊查询,这是一种强大的Java持久层框架,允许开发者将SQL语句直接写在XML配置...

    ibatis教程中文版-详细实例

    总的来说,iBatis教程中文版通过这些实例详细讲解了如何配置和使用iBatis进行数据库操作,帮助开发者掌握这一强大的数据持久层工具。通过学习和实践这些实例,你可以了解到如何将Java对象与SQL语句对应,以及如何...

    iBATIS3 beta2 测试完整实例

    在本实例中,我们将会探讨如何使用iBATIS3与MySQL数据库进行交互,并通过`news.sql`脚本来创建相关的数据表。 首先,让我们了解iBATIS3的核心概念。iBATIS3引入了SQL Maps的概念,这是一种将SQL语句与Java代码分离...

    ibatis+mysql

    本文将深入讲解如何进行Ibatis与MySQL的整合,并提供一个简单的实例供初学者参考。 1. **Ibatis简介** Ibatis是MyBatis的前身,由Clinton Begin创建,它摒弃了Hibernate等ORM框架的全自动化映射,允许开发者自由...

    ibatis实例,mysql应用举例

    本实例聚焦于`iBatis` 在实际项目中的应用,以及如何与MySQL数据库相结合。MySQL是广泛使用的开源关系型数据库管理系统,以其高效、稳定和易用性而备受青睐。 `iBatis` 的核心概念包括配置文件、映射文件、...

    ibatis+mysql5.1的增删改查

    总的来说,这个示例提供了一个简单的Ibatis与MySQL 5.1集成的CRUD操作模型,对于初学者来说,这是一个很好的起点,有助于理解Ibatis的工作方式以及如何与数据库进行交互。通过这种方式,开发者可以更加专注于业务...

    Struts2 Spring Ibatis mysql 项目整合

    在本项目中,iBatis通过XML配置文件或者注解定义SQL语句,与数据库进行交互,如用户的注册、查询和删除操作,都是通过iBatis执行对应的SQL实现的。 MySQL数据库存储了所有用户信息,如用户名、密码等。在项目中,你...

    iBATIS入门实例测试

    通过上述步骤,你已经了解了如何设置iBATIS环境,编写SQL映射文件,以及如何在Java代码中调用这些映射进行数据库操作。接下来,你可以继续探索iBATIS的更多高级特性,如动态SQL、事务控制等,以适应更复杂的业务场景...

    springboot+mysql+ibatis完整整合案例

    在本项目中,"springboot+mysql+ibatis完整整合案例"是一个针对初学者的教程,旨在演示如何将Spring Boot、MySQL数据库和MyBatis框架有效地集成在一起,创建一个可运行的应用程序。以下是对这些技术及其整合过程的...

    ibatis2.3例子代码

    总结来说,"ibatis2.3例子代码"提供了一个基于iBatis 2.3版本与MySQL数据库交互的实例。通过学习这个例子,你可以了解到如何配置iBatis,如何编写SQL映射文件,以及如何在Java代码中使用SqlSession和Mapper接口来...

    ibatis+jndi+mysql

    5. **初始化 SqlMapClient** - 在代码中创建 SqlMapClient 实例,它是 Ibatis 的入口点,用于执行 SQL 映射文件中的操作。 6. **执行业务操作** - 调用 SqlMapClient 对象的方法执行 SQL,获取或更新数据。 7. **...

Global site tag (gtag.js) - Google Analytics