- 浏览: 809230 次
- 性别:
- 来自: 西安
文章分类
- 全部博客 (307)
- struts (8)
- hibernate (3)
- spring (32)
- opensourceproject (12)
- javaScript (9)
- primeton EOS (2)
- journey of heart (10)
- Design pattern (6)
- ejb (17)
- point (37)
- Linux&Unix (22)
- ibatis (10)
- AJAX (6)
- DB (26)
- Protocol (6)
- chart (4)
- web server (11)
- webservice (7)
- integration (3)
- tuxedo (5)
- ext (4)
- android (1)
- c/c++ (12)
- JVM (1)
- paginationFrame (2)
- code (2)
- report (1)
- High-performance web (1)
- svn (1)
- JQuery (1)
- workDaily (2)
- cloud (16)
- Python (8)
- English (2)
- shell (5)
- googleCode (1)
- nio (1)
- hyper-v (1)
- debug (3)
- vbs (2)
- openstack (3)
- K8S (1)
- Mesos (0)
- Spark (0)
- Marathon (0)
最新评论
-
钱图大展:
chao2751021 写道lib包哪里去下载,找不到
大型网站用户行为记录的一个实现--基于clickStream(第一部分) -
钱图大展:
无法下载
大型网站用户行为记录的一个实现--基于clickStream(第一部分) -
fm395728572:
shell脚本中用到了环境变量,但是获取不到,例如脚本中有一句 ...
ganymed-ssh2 for Java -
liuhanjiang:
我qq147229234
大型网站用户行为记录的一个实现--基于clickStream(第一部分) -
liuhanjiang:
博主 我利用您提供的方法实现博文中介绍的clickstream ...
大型网站用户行为记录的一个实现--基于clickStream(第一部分)
基于以下的对话,决定看看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
发表评论
-
第10讲 --iBATIS查询条件为多个参数
2009-06-17 07:21 8775当查询记录的时候,过滤记录的条件为多个的时候你就不能使用 ... -
第9讲 --ibatis优点总结
2009-06-17 07:09 2412优点: l 与JDBC相比较减少了61%的 ... -
第8讲 --sql主键生成方式
2009-06-17 07:06 2037补充: Oracle中的 ... -
第7讲 --模糊查询实体对象
2009-06-16 08:16 1322步骤: 1.增加 Student.xml中 对模糊查询对象的 ... -
第6讲 --修改实体对象
2009-06-16 07:56 1255步骤: 1.增加 Student.xml中 对修改单个对象的 ... -
第5讲 --删除指定id的单个对象
2009-06-16 07:34 1376步骤: 1.增加 Student.xml中 对删除单个对象的 ... -
第4讲 --插入一个实体对象
2009-06-16 07:28 1256步骤: 1.增加 Student.xml中 对插入单个对象的 ... -
第3讲 --查询指定id的单个对象
2009-06-16 07:08 1330步骤: 1.增加 Student.xml中 对查找制定 ... -
什么是iBATIS
2009-06-15 19:30 1815iBATIS就是我们通常所说的数据映射器(data ma ...
相关推荐
- 多表关联查询:讲解如何处理一对一、一对多、多对多等关系的查询。 - 异常处理与事务管理:介绍如何配置和控制事务,以及处理可能出现的异常情况。 4. **高级篇** - MyBatis(iBATIS的升级版)简介:简述...
Ibatis 会自动处理查询结果,如果返回多条记录,只会返回第一条。确保 SQL 语句的条件能够唯一确定一条记录。 6. **数据集合查询** 对于查询结果集的情况,使用 `selectList` 方法。它会返回一个 List 对象,每个...
对应的Java类`Contact`需要与数据库表结构保持一致,以便于Ibatis进行对象-关系映射。 `Contact.java`类中包含了与数据库字段相对应的属性和getter/setter方法。注意,虽然字段名不必完全相同,但getter和setter...
iBATIS是一个数据映射框架,它简化了Java应用程序与数据库之间的交互,允许将SQL查询直接嵌入到Java代码中,避免了传统的JDBC模板编程的复杂性。 首先,我们来看看这个项目中的主要目录结构: 1. **ddl**:DDL...
- 第一个例子:通过一个简单的CRUD操作,展示iBATIS的基本用法。 - 数据源配置:讲解如何配置数据连接字符串,连接池等。 - CRUD操作:详细解释如何使用iBATIS执行增删改查操作。 - 映射实体类:介绍如何将...
- **Hibernate**:支持HQL(Hibernate Query Language),这是一种类似于SQL的语言,用于查询和更新数据库中的数据。HQL使得开发人员可以以面向对象的方式编写查询语句。 #### 三、“半自动化”ORM实现的意义 iBatis...
- 按照`proc_time`排序,并且只取第一条记录(`rownum=1`)。 #### 三、iBATIS参数绑定机制 在上述SQL语句中,可以看到`#acct#`和`#org#`这样的参数绑定方式。这种方式是iBATIS中常见的参数绑定方式之一,表示在...
入门教程通常从简单的Hello World示例开始,逐步引导读者了解如何创建和配置iBatis项目,编写第一条SQL,处理查询结果,以及如何进行异常处理。同时,还会讲解如何在实际项目中结合Spring等框架进行集成使用。 **...
将其添加到项目的类路径中是配置的第一步。在 MyEclipse 中,可以通过以下步骤进行: 1. 右键点击项目 -> Build Path -> Configure Build Path。 2. 在弹出的窗口中选择 Libraries 标签页。 3. 点击 Add External ...
首先,准备工作包括对iBATIS环境的搭建,这通常涉及下载iBATIS库,将其导入到项目中,并配置相应的依赖。构建iBATIS基础代码主要是创建SqlMapConfig.xml配置文件,用于设置数据源、事务管理器等核心参数。 在iBATIS...
首先,**iBATIS的安装和配置**是使用iBATIS的第一步。在Java环境中,我们需要将iBATIS的库文件添加到项目的类路径中,这通常包括iBATIS的核心库和相关的依赖。配置文件主要是`sqlMapConfig.xml`,在这个文件中,我们...
- **构建SqlSessionFactory**:这是使用iBATIS的第一步,可以通过XML配置文件或程序化方式创建`SqlSessionFactory`实例。`SqlSessionFactory`负责创建`SqlSession`实例,后者则用于执行SQL语句。 - **从...
在示例中,`getAccount`方法用于根据username获取Account对象,SQL语句是查询Account表中username等于指定值的所有列。 通过这种方式,iBatis将数据库操作与业务逻辑解耦,使得开发人员能够更专注于业务处理,而...
Ibatis.NET是一款轻量级的ORM(对象关系映射)框架,它允许开发者将SQL查询直接集成到.NET应用程序中,从而避免了传统的ADO.NET代码。在处理大量数据时,分页查询是必不可少的功能,可以有效地减少数据库负载并提高...
相比之下,Hibernate是一个更为全面的ORM框架,它提供了更高级的功能,如自动对象关系映射、第一级缓存、第二级缓存等。Hibernate的配置涉及到persistence.xml文件,其中包含了实体类、数据源、事务管理等信息。在...
- **第1章:iBATIS哲学**(第3页):介绍了iBATIS的设计理念,即简单性、灵活性和可扩展性。 - **第2章:什么是iBATIS?**(第33页):全面阐述了iBATIS的定义、历史背景以及其相对于其他持久层框架的优势。 3. **...