`
8366
  • 浏览: 809230 次
  • 性别: Icon_minigender_1
  • 来自: 西安
社区版块
存档分类
最新评论

第1,2讲 --准备ibatis环境和查询表中所有的对象

阅读更多

 

   基于以下的对话,决定看看ibatis 这个东东

 

 ℡封号  17:21:41
ibatis  和hibernate那个快?? 
 
螃蟹 17:22:06
各有特点
 ℡封号  17:22:24
多表查询 
 
螃蟹 17:22:30
ibatis的sql是自己写的,好优化,hibernate的sql不好控制 
螃蟹 17:22:38
多表的话当然是ibatis
螃蟹 17:22:55
我们现在的项目就是这样子的
 ℡封号  17:23:00
直接写sql和用ibatis哪个快 多表 
 
螃蟹 17:23:02
业务逻辑大都在sql里
螃蟹 17:23:16
这两个怎么比较啊
 ℡封号  17:23:36
怎么不能比呀? 
 
螃蟹 17:24:07
拿什么比
螃蟹 17:24:18
ibatis最后也是走的sql啊
 ℡封号  17:24:54
ibatis 干了个啥??我没用过!我看到itcast上有教程 
 
螃蟹 17:25:19
什么也没干,就他妈的,把sql组织了一下
 ℡封号  17:25:56
那还学不? 
 
螃蟹 17:26:21
做个demo就行了,或者看看维系挽留的代码就完了
螃蟹 17:26:33
没什么学的
螃蟹 17:26:54
只不过在面试的时候,人家会让你将它同hibernate做比较
 ℡封号  17:27:22
要是人家问我 我就说我以前的同事说:
什么也没干,就他妈的,把sql组织了一下 
 
螃蟹 17:35:35
太阳
螃蟹 17:35:51
你在网上看看
螃蟹 17:35:57
与hibernate的比较
螃蟹 17:36:01
差别大着呢

 

步骤: 

 

1.首先搭建环境,导入相关的jar包,我们这里用的是mysql数据库,ibatis-2.3.4.726\lib\ibatis-2.3.4.726.jar

和mysql-connector-java-3.1.7-bin.jar

2.建立数据库表结构 student 表

+-------+-------------+------+-----+---------+-------+
| Field | Type        | Null | Key | Default | Extra |
+-------+-------------+------+-----+---------+-------+
| sid   | int(10)     | NO   |     | NULL    |       |
| sname | varchar(20) | YES  |     | NULL    |       |
| major | varchar(20) | YES  |     | NULL    |       |
| birth | date        | YES  |     | NULL    |       |
| score | float       | YES  |     | NULL    |       |
+-------+-------------+------+-----+---------+-------+

 

 

3.编写配置文件

   a.jdbc连接的属性文件 SqlMap.properties

driver=org.gjt.mm.mysql.Driver
url=jdbc\:mysql\://localhost\:3306/test?useUnicode\=true&characterEncoding\=UTF-8
username=root
password=12345678

 

   b.总配置文件 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>

  <properties resource="SqlMap.properties"/>
 
  
  <transactionManager type="JDBC">
   
    <dataSource type="SIMPLE">
   
      <property value="${driver}" name="JDBC.Driver"/>
      <property value="${url}" name="JDBC.ConnectionURL"/>
      <property value="${username}" name="JDBC.Username"/>
      <property value="${password}" name="JDBC.Password"/>
    </dataSource>
  </transactionManager>
 <sqlMap resource="Student.xml"/>

</sqlMapConfig>

 

 

   c.关于每个实体的映射文件(map) 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 alias="Student" type="cn.com.xinli.ibatis.Student"/>
  
  <select id="selectAllStudent" resultClass="Student">
    select * from student 
  </select>

</sqlMap>

 

 4.建立student实体:student.java

package cn.com.xinli.ibatis;

import java.sql.Date;

public class Student 
{
	int sid;
	String sname=null;
	String major=null;
	Date birth=null;
	private float score =0;
	public int getSid() {
		return sid;
	}
	public void setSid(int sid) {
		this.sid = sid;
	}
	public String getSname() {
		return sname;
	}
	public void setSname(String sname) {
		this.sname = sname;
	}
	public String getMajor() {
		return major;
	}
	public void setMajor(String major) {
		this.major = major;
	}
	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;
	}

}

 

5.对student表进行增删改查,面向接口编程,首先写接口 StudentDAO.java和实现 StudentDAOImpl.java

package cn.com.xinli.ibatis.dao;

import java.util.List;

import cn.com.xinli.ibatis.Student;

public interface StudentDAO 
{
	public void add(Student student);
	public void addStudentBySequence();
	public void deleteStudentById(int id);
	public List<Student> queryAllStudents();
	
}

 

 

 

package cn.com.xinli.ibatis.dao.impl;

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

import org.apache.log4j.Logger;

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

import cn.com.xinli.ibatis.Student;
import cn.com.xinli.ibatis.dao.StudentDAO;

public class StudentDAOImpl implements StudentDAO
{

		public void add(Student student)
	{
		// TODO Auto-generated method stub
		
	}

	public void addStudentBySequence() {
		// TODO Auto-generated method stub
		
	}

	public void deleteStudentById(int id) {
		// TODO Auto-generated method stub
		
	}

	public List<Student> queryAllStudents() 
	{
		// TODO Auto-generated method stub
		List<Student> studentList=null;
		try {
			studentList=sqlMapClient.queryForList("selectAllStudent");
			
		} catch (SQLException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		return studentList;
	}
		



	}
}

 6.查询所有的student对象,在Student.xml中写sql,在实现类中写简单的读取配置文件和main方法,使用ibatis进行表的增删改查固定的代码就是先获取SqlMapClient 对象,调用其中的增删改查的方法完成业务,对于查询所有的student

我们需要sqlMapClient.queryForList("selectAllStudent");,参数传递map中定义的查询所有student的sql的别名,用一个list接受返回对象。

 

package cn.com.xinli.ibatis.dao.impl;

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

import org.apache.log4j.Logger;

import cn.com.xinli.ibatis.Student;
import cn.com.xinli.ibatis.dao.StudentDAO;

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

public class StudentDAOImpl implements StudentDAO
{

	private static SqlMapClient sqlMapClient=null;
	private final static Logger log=Logger.getLogger(StudentDAOImpl.class);
	static 
	{
		try 
		{
			Reader reader=Resources.getResourceAsReader("SqlMapConfig.xml");
			sqlMapClient=SqlMapClientBuilder.buildSqlMapClient(reader);
			reader.close();
		} 
		catch (IOException e) 
		{
			e.printStackTrace();
		}
	}
	public void add(Student student)
	{
		// TODO Auto-generated method stub
		
	}

	public void addStudentBySequence() {
		// TODO Auto-generated method stub
		
	}

	public void deleteStudentById(int id) {
		// TODO Auto-generated method stub
		
	}

	public List<Student> queryAllStudents() 
	{
		// TODO Auto-generated method stub
		List<Student> studentList=null;
		try {
			studentList=sqlMapClient.queryForList("selectAllStudent");
			
		} catch (SQLException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		return studentList;
	}
		


	public static void main(String[] args) 
	{
		StudentDAO studentDAO=new StudentDAOImpl();
		List<Student> studentList = studentDAO.queryAllStudents();
		for(Student student:studentList)
		{
			log.info(student.getSid());
			log.info(student.getSname());
			log.info(student.getMajor());
			log.info(student.getBirth());
			log.info(student.getScore());
		}

	}
}

 

 7.运行 StudentDAOImpl.java

 

485  [main] INFO  cn.com.xinli.ibatis.dao.impl.StudentDAOImpl(89) - 1
500  [main] INFO  cn.com.xinli.ibatis.dao.impl.StudentDAOImpl(90) - 1
500  [main] INFO  cn.com.xinli.ibatis.dao.impl.StudentDAOImpl(91) - 1
500  [main] INFO  cn.com.xinli.ibatis.dao.impl.StudentDAOImpl(92) - 1985-12-11
500  [main] INFO  cn.com.xinli.ibatis.dao.impl.StudentDAOImpl(93) - 1.0
500  [main] INFO  cn.com.xinli.ibatis.dao.impl.StudentDAOImpl(89) - 2
500  [main] INFO  cn.com.xinli.ibatis.dao.impl.StudentDAOImpl(90) - 2
500  [main] INFO  cn.com.xinli.ibatis.dao.impl.StudentDAOImpl(91) - 2
500  [main] INFO  cn.com.xinli.ibatis.dao.impl.StudentDAOImpl(92) - 1985-12-10
500  [main] INFO  cn.com.xinli.ibatis.dao.impl.StudentDAOImpl(93) - 2.0
500  [main] INFO  cn.com.xinli.ibatis.dao.impl.StudentDAOImpl(89) - 324
500  [main] INFO  cn.com.xinli.ibatis.dao.impl.StudentDAOImpl(90) - 你好
500  [main] INFO  cn.com.xinli.ibatis.dao.impl.StudentDAOImpl(91) - 1
500  [main] INFO  cn.com.xinli.ibatis.dao.impl.StudentDAOImpl(92) - 1985-12-14
500  [main] INFO  cn.com.xinli.ibatis.dao.impl.StudentDAOImpl(93) - 56.0

 

分享到:
评论
1 楼 kevin90828 2012-01-29  
很好,谢谢参考..

相关推荐

    iBATIS-SqlMaps中文教程集合

    - 多表关联查询:讲解如何处理一对一、一对多、多对多等关系的查询。 - 异常处理与事务管理:介绍如何配置和控制事务,以及处理可能出现的异常情况。 4. **高级篇** - MyBatis(iBATIS的升级版)简介:简述...

    ibatis入门

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

    数据库--Ibatis教程

    对应的Java类`Contact`需要与数据库表结构保持一致,以便于Ibatis进行对象-关系映射。 `Contact.java`类中包含了与数据库字段相对应的属性和getter/setter方法。注意,虽然字段名不必完全相同,但getter和setter...

    iBATIS_JPetStore-4.0.5

    iBATIS是一个数据映射框架,它简化了Java应用程序与数据库之间的交互,允许将SQL查询直接嵌入到Java代码中,避免了传统的JDBC模板编程的复杂性。 首先,我们来看看这个项目中的主要目录结构: 1. **ddl**:DDL...

    IBatis.NET开发文档

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

    J2EE iBatis 概述

    - **Hibernate**:支持HQL(Hibernate Query Language),这是一种类似于SQL的语言,用于查询和更新数据库中的数据。HQL使得开发人员可以以面向对象的方式编写查询语句。 #### 三、“半自动化”ORM实现的意义 iBatis...

    iBATIS实例小程序

    - 按照`proc_time`排序,并且只取第一条记录(`rownum=1`)。 #### 三、iBATIS参数绑定机制 在上述SQL语句中,可以看到`#acct#`和`#org#`这样的参数绑定方式。这种方式是iBATIS中常见的参数绑定方式之一,表示在...

    ibatis 使用手册

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

    ibatis安装配置

    将其添加到项目的类路径中是配置的第一步。在 MyEclipse 中,可以通过以下步骤进行: 1. 右键点击项目 -&gt; Build Path -&gt; Configure Build Path。 2. 在弹出的窗口中选择 Libraries 标签页。 3. 点击 Add External ...

    ibatis.doc

    首先,准备工作包括对iBATIS环境的搭建,这通常涉及下载iBATIS库,将其导入到项目中,并配置相应的依赖。构建iBATIS基础代码主要是创建SqlMapConfig.xml配置文件,用于设置数据源、事务管理器等核心参数。 在iBATIS...

    ibatis文档

    首先,**iBATIS的安装和配置**是使用iBATIS的第一步。在Java环境中,我们需要将iBATIS的库文件添加到项目的类路径中,这通常包括iBATIS的核心库和相关的依赖。配置文件主要是`sqlMapConfig.xml`,在这个文件中,我们...

    iBATIS-3开发指南

    - **构建SqlSessionFactory**:这是使用iBATIS的第一步,可以通过XML配置文件或程序化方式创建`SqlSessionFactory`实例。`SqlSessionFactory`负责创建`SqlSession`实例,后者则用于执行SQL语句。 - **从...

    Ibatis应用实例.docx

    在示例中,`getAccount`方法用于根据username获取Account对象,SQL语句是查询Account表中username等于指定值的所有列。 通过这种方式,iBatis将数据库操作与业务逻辑解耦,使得开发人员能够更专注于业务处理,而...

    Ibatis.net 分页

    Ibatis.NET是一款轻量级的ORM(对象关系映射)框架,它允许开发者将SQL查询直接集成到.NET应用程序中,从而避免了传统的ADO.NET代码。在处理大量数据时,分页查询是必不可少的功能,可以有效地减少数据库负载并提高...

    ibatis和hibernate配置以及比较

    相比之下,Hibernate是一个更为全面的ORM框架,它提供了更高级的功能,如自动对象关系映射、第一级缓存、第二级缓存等。Hibernate的配置涉及到persistence.xml文件,其中包含了实体类、数据源、事务管理等信息。在...

    ibatis in action

    - **第1章:iBATIS哲学**(第3页):介绍了iBATIS的设计理念,即简单性、灵活性和可扩展性。 - **第2章:什么是iBATIS?**(第33页):全面阐述了iBATIS的定义、历史背景以及其相对于其他持久层框架的优势。 3. **...

Global site tag (gtag.js) - Google Analytics