`

IBATIS入门(第一节)

阅读更多

IBATIS是一个类似于Hibernate的轻型后端框架,同样是基于ORM 的一个对象关系映射框架。IBATIS框架对于熟悉纯sql语句的程序原来说,应该是相当容易入门。

 

好吧废话不多讲了,来点真格的。

 

首先,你可以通过IBATIS的官方网:http://ibatis.apache.org/index.html,上面去看看。

 

下载ibatis的开发包。http://labs.renren.com/apache-mirror/ibatis/binaries/ibatis.java/ibatis-2.3.4.726.zip

 

然后你可以看里面的demo。然后自学看看。不过自己看的话,只是看不去自己真正的去写,不去一个一个的去测试,那你里面的配置就只知道其然,而不只其所以然。

 

所以看着demo,然后开始自己一个一个的测试,并理解把。

 

第一个新建一个项目,然后导入两个包,一个是ibaits包。个是你连接数据的驱动jar包

 

第二个就是配置你的conn.properties文件。(原本这里这里代码我是不冗余了在讲了,不过怕有些初学者不去看官网而直接看我这里的话,那么我考虑到这里我还是把代码给大家贴出来好了)

 

conn.properties

 

 

#Created by JInto - www.guh-software.de
#Tue Dec 08 16:51:48 CST 2009

#mysql

#pwd=root
#user=root
#driver=com.mysql.jdbc.Driver
#url=jdbc\:mysql\://127.0.0.1\:3306/test?useUnicode\=true&characterEncoding\=utf-8

#sql200

user=sa
pwd=sa
driver=com.microsoft.jdbc.sqlserver.SQLServerDriver
url=jdbc:microsoft:sqlserver://127.0.0.1:1433;databasename=ibatisetest

 

 

第三个就是配置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>

<!--  
user=sa
pwd=sa
driver=com.microsoft.jdbc.sqlserver.SQLServerDriver
url=jdbc:microsoft:sqlserver://127.0.0.1:1433;databasename=ibatisetest
-->

<!-- 
pwd=root
user=root
driver=com.mysql.jdbc.Driver
url=jdbc\:mysql\://127.0.0.1\:3306/test?useUnicode=true&characterEncoding=utf-8
 -->
 <properties  resource="conn.properties"/>

		<!-- 1. 全局控制sqlMapClient的缓存 -->
		<!-- 2. 全局控制运行时字节码增强,优化javabean的属性性能 -->
		<!-- 3. 延迟加载 -->
		<!-- 456.同时执行sql语句的最大线程数,通常大小是maxTransactions的10倍,并且总是大于maxTransactions和maxSessions的总和。减小这个值能够提高性能。--> 
		<!-- 7. 是否启动全局的sqlmap名字空间。如果启动则应用时,必须加上名字空间:queryForObject(sqlMap的名字空间.statementName) -->
 <settings    cacheModelsEnabled="true"  
              enhancementEnabled="true" 
              lazyLoadingEnabled="true"  
              errorTracingEnabled="true" 
              maxRequests="32"   
              maxSessions="10" 
              maxTransactions="5" 
              useStatementNamespaces="false"  />  <!--这个节点是设置工程的总体性能,根据名称来设置 -->
 
 
  <transactionManager type="JDBC" commitRequired="false">
    <dataSource type="SIMPLE">
      <property name="JDBC.Driver" value="${driver}"/>
      <property name="JDBC.ConnectionURL" value="${url}"/>
      <property name="JDBC.Username" value="${user}"/>
      <property name="JDBC.Password" value="${pwd}"/>
    </dataSource>
  </transactionManager>
  
  <sqlMap resource="com/mydomain/data/Account.xml"/>
  <sqlMap resource="com/dk/user/User.xml"/>
</sqlMapConfig>

 

 

 

然后就是写测试UserBeen.java

 

package com.dk.user;

public class UseVO {
	private int id;
	private String name;
	private int age;

	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 int getAge() {
		return age;
	}

	public void setAge(int age) {
		this.age = age;
	}


}

 

 

 

在配置user.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 namespace="user">

  <typeAlias alias="User" type="com.dk.user.UseVO"/>
  
  <!--  
  
   <resultMap id="userResult" class="User">
    <result property="id" column="uid"/>
    <result property="name" column="uname"/>
    <result property="age" column="uage"/>
  </resultMap>
  
  -->
  
  <statement id="createUserTest">
     create table usertest
     (
       uid int primary key identity(1,1),
       uname varchar(20),
       uage int
     )
  </statement>

  <insert id="insertUser" parameterClass="User">
      insert into usertest
      (uname,uage)
      values
      (#name#,#age#)
  </insert>
  
  <select id="selectUser" resultClass="User">
     select uid as id,uname as name,uage as age from usertest
  </select>
  
  
  
  <update id="updateUser" parameterClass="User">
   update usertest set uname= #name#,uage=#age# where uid =#id#
  </update>
  
  <delete id="deleteUser" parameterClass="int">
   delete from usertest where uid = #id#
  </delete>
  
  <select id="selectUserByName" parameterClass="java.lang.String" resultClass="User">
       select * from usertest where uname like '%$name$%'
  </select>
  
  <select id="selectNoConfigResultMap" resultClass="User" remapResults="true" >
      select uid ,uname,uage from usertest
  </select>
  
    <select id="selectUserById" parameterClass="int" resultClass="User" >
      select uid as id ,uname as name,uage as age from usertest where uid =#id#
   </select>
  
 <statement id="dropUser" >
    drop table usertest
 </statement>

</sqlMap>


最后写UserDaoTest.JAVA

 

 

 最后写UserDaoTest.JApackage com.dk.user;

import java.io.IOException;
import java.io.Reader;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;

import com.ibatis.common.resources.Resources;
import com.ibatis.sqlmap.client.SqlMapClient;
import com.ibatis.sqlmap.client.SqlMapClientBuilder;

public class UserDaoTest {

	/**
	 * @param args
	 */
	private static SqlMapClient sqlMapClient;
	
	static {
		try {
			Reader reader = Resources.getResourceAsReader("SqlMapConfig.xml");
			sqlMapClient = SqlMapClientBuilder.buildSqlMapClient(reader);
			if(sqlMapClient!=null){
				System.out.println("ok");
			}
		} catch (IOException e) {
			e.printStackTrace();
		}
		
	}
	
	public static void createUserTest(){
		 try {
			 sqlMapClient.startTransaction();
			 int  i = sqlMapClient.update("createUserTest");
			 sqlMapClient.commitTransaction();
			 System.out.println("update:\t"+i);
			 sqlMapClient.endTransaction();
			 System.out.println("创建Usertest成功");
		} catch (SQLException e) {
			e.printStackTrace();
		}
	}
	
	public static void insertUser(UseVO user){
		try {
			sqlMapClient.insert("insertUser", user);
			System.out.println("插入成功");
		} catch (SQLException e) {
			e.printStackTrace();
		}
	}
	
	public static List<UseVO> selectUsers(){
		List<UseVO> list = new ArrayList<UseVO>();
		try {
			list =sqlMapClient.queryForList("selectUser");
			for(UseVO u:list){
				System.out.println(u.getId());
				System.out.println(u.getName());
				System.out.println(u.getAge());
			}
		} catch (SQLException e) {
			e.printStackTrace();
		}
		
		return list;
	}
	
	public static void updateUser(UseVO vo){
		try {
			sqlMapClient.startTransaction();
		 int i = sqlMapClient.update("updateUser", vo);
		 sqlMapClient.commitTransaction();
		 sqlMapClient.endTransaction();
	     System.out.println("i\t"+i);
		} catch (SQLException e) {
			e.printStackTrace();
		}
	}
	
	public static List<UseVO> selectUserByName(String name){
		List<UseVO> list = null;
		try {
			System.out.println("start");
			list = 	sqlMapClient.queryForList("selectUserByName",name);
			System.out.println(list.size());
		for(UseVO u:list){
			System.out.println("continue");
			System.out.println(u.getAge());
			System.out.println(u.getId());
			System.out.println(u.getName());
		}
		System.out.println("over");
		} catch (SQLException e) {
			e.printStackTrace();
		}
		return list;
	}
	
	public static List<UseVO> selectNoConfigResultMap(){
		List<UseVO> list = null;
		try {
			list = sqlMapClient.queryForList("selectNoConfigResultMap");
			for(UseVO u:list){
				System.out.println("continue");
				System.out.println(u.getAge());
				System.out.println(u.getId());
				System.out.println(u.getName());
			}
			
		} catch (SQLException e) {
			e.printStackTrace();
		}
		return list;
	}
	
	public static UseVO getUserById(int id){
		UseVO vo = new UseVO();
		try {
			vo = (UseVO)sqlMapClient.queryForObject("selectUserById",id);
			System.out.println(vo.getAge());
			System.out.println(vo.getId());
			System.out.println(vo.getName());
			
		} catch (SQLException e) {
			e.printStackTrace();
		}
		return vo;
	}
	
    public static void dorpUsetTable(){
          try {
			sqlMapClient.delete("dropUser");
			System.out.println("drop ok");
		} catch (SQLException e) {
			e.printStackTrace();
		}    	
    }
	public static void main(String[] args) {
		//UserDaoTest dao = new UserDaoTest();
		//UserDaoTest.createUserTest();
		
		
	/*	UseVO user = new UseVO();
		user.setAge(21);
		user.setName("bhdk");
		UserDaoTest.insertUser(user);*/
		
		
	/*	UseVO vo = new UseVO();
		vo.setId(2);
		vo.setAge(122);
		vo.setName("dddddd");
		UserDaoTest.updateUser(vo);
		UserDaoTest.selectUsers();	*/

		
		//UserDaoTest.selectUserByName("d");
		
		//UserDaoTest.selectNoConfigResultMap();
		
	   //UserDaoTest.getUserById(2);
		
		//UserDaoTest.selectUsers();
		
		//UserDaoTest.dorpUsetTable();
		
		//UserDaoTest.createUserTest();
	}

}

OK 发布运行。这里还有一写东西我没有讲具体讲,现在只是将他运行起来,先看效果再说。

 

Ibatis入门(第二节)保证你能在1个小时内弄明白ibatis中的配置到底是个什么玩意,为什么你配置的时候,老是报错。

 

Ibatis入门(第二节): http://yekui.iteye.com/admin/blogs/732290

 

 

 

分享到:
评论

相关推荐

    ibatis入门

    Ibatis 会自动处理查询结果,如果返回多条记录,只会返回第一条。确保 SQL 语句的条件能够唯一确定一条记录。 6. **数据集合查询** 对于查询结果集的情况,使用 `selectList` 方法。它会返回一个 List 对象,每个...

    IBATIS入门(第二节)

    **IBATIS入门(第二节)** 在本节中,我们将深入探讨开源的Java持久层框架——IBATIS,它提供了一种将SQL语句与Java代码分离的方式,从而简化了数据库操作。IBATIS这个名字来源于“Java中的iBATIS”,其中“i”是...

    最简单的iBatis入门例子

    通过以上步骤,我们可以完成一个简单的iBatis入门示例。值得注意的是,虽然iBatis提供了强大的SQL控制能力,但在实际项目中,我们也应该关注代码的可读性和可维护性,合理地利用框架特性,以提高开发效率和代码质量...

    ibatis入门教程与开发指南

    **ibatis入门教程与开发指南** Ibatis,全称MyBatis-iBATIS,是一个优秀的持久层框架,它支持定制化SQL、存储过程以及高级映射。Ibatis避免了几乎所有的JDBC代码和手动设置参数以及获取结果集。Ibatis可以使用简单...

    IBATIS入门

    【IBATIS 入门】 IBATIS 是一个流行的数据访问框架,它在 Java 开发领域中扮演着重要角色,特别适用于那些需要对 SQL 有更多控制权的项目。与 Hibernate 和 Apache OJB 等全面的 ORM(对象关系映射)解决方案不同,...

    第一个ibatis例子

    这个"第一个ibatis例子"是一个典型的入门教程,旨在帮助初学者快速理解并掌握Ibatis的基本用法。 首先,Ibatis的核心组件包括XML配置文件、SqlMapConfig.xml、Mapper接口以及Mapper XML文件。在入门例子中,我们...

    iBatis入门

    **iBatis入门** iBatis 是一个优秀的持久层框架,它允许开发者将SQL语句直接写在配置文件中,从而避免了Java代码与数据库之间的繁杂交互。它结合了Java的灵活性和SQL的高效查询能力,使得开发更加便捷。本篇文章将...

    ibatis快速入门

    通常,这样的教程会涵盖安装Ibatis、创建第一个映射文件、调用SQL语句、处理结果集等内容。此外,它可能还会介绍如何使用Ibatis的API来执行插入、更新、删除等操作,并解释如何处理单个结果、多个结果或无结果的情况...

    IBatis入门教程

    搭建iBatis开发环境是使用这个框架的第一步,通常涉及以下步骤: 1. **导入依赖**:首先需要将必要的jar包引入到项目中,包括iBatis的核心库(如ibatis-2.3.0.677.jar)以及相应的数据库驱动,例如对于MySQL,需要...

    ibatis1.rar_ibatis

    《Ibatis入门详解:从简单案例到深入理解》 Ibatis,作为一个轻量级的Java持久层框架,因其灵活性和易用性而被广大开发者所喜爱。本教程将基于提供的"ibatis1.rar"压缩包文件,带领大家一步步走进Ibatis的世界,...

    ibatis经典入门

    【标题】"ibatis经典入门"揭示了我们即将探讨的主题——如何入门并掌握iBATIS这一数据层框架。iBATIS作为一个轻量级的解决方案,它简化了Java应用程序中的数据库操作,提供了SQL映射功能,使得开发人员可以更加灵活...

    IBatis.NET开发文档

    - 第一个例子:通过一个简单的CRUD操作,展示iBATIS的基本用法。 - 数据源配置:讲解如何配置数据连接字符串,连接池等。 - CRUD操作:详细解释如何使用iBATIS执行增删改查操作。 - 映射实体类:介绍如何将...

    ibatis-2.3.4 开发包 及 官方权威文档(开发指南+入门教程)

    Ibatis 是一个优秀的轻量级 Java ORM(对象关系映射)框架,它允许开发者将 SQL 查询与 Java 代码分离,使得数据库操作更加灵活和易于维护。本资源包含了 Ibatis 的 2.3.4 版本开发包,以及官方的权威开发指南和入门...

    ibatis 使用手册

    入门教程通常从简单的Hello World示例开始,逐步引导读者了解如何创建和配置iBatis项目,编写第一条SQL,处理查询结果,以及如何进行异常处理。同时,还会讲解如何在实际项目中结合Spring等框架进行集成使用。 **...

    iBATIS-SqlMaps-2-快速入门教程.docx

    知识点1:iBATIS-SqlMaps-2 简介 iBATIS-SqlMaps-2 是一个基于 Java 的持久层框架,旨在简化 Java 应用程序中的数据库交互。它提供了一种灵活的方式来映射 Java 对象到数据库表,允许开发者使用 SQL 语句来操作...

    ibatis学习锦集

    初学者通常从安装iBatis开始,然后创建第一个简单的SQLMap配置文件,接着编写一个Java Dao接口,最后通过MyBatis-Spring(如果整合Spring)或SqlSession对象执行SQL并处理结果。 1. **环境搭建**:引入iBatis的jar...

    IBatis 中文文档

    2. **创建第一个SQL Map**:教程会指导你编写一个简单的SQL Map,展示如何定义SQL查询并映射结果。 3. **SQL Map客户端**:学习如何在Java代码中使用SqlMapClient,执行SQL Map中的SQL语句。 4. **映射POJO(Plain...

    iBATIS实战

    第1章 iBATIS的理念 2 1.1 一个结合了所有优秀思想的混合型解决方案 2 1.1.1 探索iBATIS的根源 3 1.1.2 理解iBATIS的优势 7 1.2 iBATIS适合应用在何处 10 1.2.1 业务对象模型 11 1.2.2 表现层 11 1.2.3 业务逻辑层 ...

    iBatisrumen.rar_ibatis

    首先,`最简单的iBatis入门例子.chm`很可能是一个帮助文档,它会引导初学者逐步了解如何搭建iBatis环境,创建第一个简单的数据访问示例。在iBatis中,我们通常需要配置SqlMapConfig.xml文件,这是整个iBatis系统的主...

    01_ibatis教程_准备ibatis环境.zip

    根据"01_传智播客ibatis教程_准备ibatis环境"的子文件名,我们可以推测这可能是传智播客(一个知名的在线教育平台)提供的Ibatis教程的第一个部分,专门讲解如何搭建和准备Ibatis开发环境。可能包含视频教程、PPT...

Global site tag (gtag.js) - Google Analytics