初学Ibatis

 什么是Ibatis? 

  大家都知道jdbc的话就会知道,有很多操作是与业务和数据无关的真正你需要的就是,一个运行sql语句的功能,还有取回结果的功能但是jdbc要求你处理连接、会话、statement,尤其是还要你注意关闭资源,还要写try catch处理异常.ibatis 就是帮你把这些乱七八糟的东西都做了,不仅如此,还要求你把sql语句写道xml里,这样不会把sql编译到程序中,以增强程序的可移植性,在不重新编译的情况下,可以更换数据库.

 Ibatis需要什么?

  使用ibatis需要需要一个jar包,这个jar包在网上下载就可以了.下载之后倒入到你的工程下面就可以开始使用它了.

 使用Ibatis实现查询

  1.建立SqlMap.properties文件,存放数据库信息.如下:

1 driver=com.mysql.jdbc.Driver
2 url=jdbc:mysql://localhost:3306/ibatis
3 username=root
4 password=root

  2.建立SqlMapConfig.xml文件(主配置文件),

 1 <?xml version="1.0" encoding="UTF-8"?>
 2 <!-- 文档申明 -->
 3 <!DOCTYPE sqlMapConfig PUBLIC "-//ibatis.apache.org//DTD SQL Map Config2.0//EN"
 4         "http://ibatis.apache.org/dtd/sql-map-config-2.dtd">
 5
 6 <sqlMapConfig>
 7     <settings        <!--settings可以暂时不用设置-->
 8         cacheModelsEnabled="true"       <!--是否启用缓存机制-- >
 9         lazyLoadingEnabled="true"       <!-- 是否启用延迟加载机制 --> 
10         enhancementEnabled="true"       <!-- 是否启用字节码增强机制 -->
11         errorTracingEnabled="true"      <!-- 是否启用错误处理机制 -->
12         maxRequests="100"            <!-- 最大并发请求数 --> 
13         maxSessions="20"            <!-- 最大Session数 --> 
14         maxTransactions="5"          <!-- 最大并发事务数 -->  
15         useStatementNamespaces="true"      <!-- 是否启用名称空间 -->
16     />
17     <properties resource="com/zhouxy/ibatis/SqlMap.properties"/>    <!-- 引入properties文件 -->
18
19     <transactionManager type="JDBC">    <!-- 定义了ibatis事务管理器,有3种(JDBC,JTA,EXTERNAL) -->
20
21         <dataSource type="SIMPLE">        <!-- type属性指定了数据源的链接类型,也有3种类型(SIMPLE,DBCP,JNDI) -->
22
23             <property  name="JDBC.Driver" value="${driver}"/>    <!-- 将properties文件中的属性绑定 -->
24             <property  name="JDBC.ConnectionURL" value="${url}"/>
25             <property  name="JDBC.Username" value="${username}"/>
26             <property  name="JDBC.Password" value="${password}"/>
27         </dataSource>
28     </transactionManager>
29
30     <sqlMap resource="com/zhouxy/ibatis/Student.xml"/>    <!-- 导入Student.xml文件  -->
31 </sqlMapConfig>

 3.建立Student.xml文件.

 1 <?xml version="1.0" encoding="UTF-8"?>
 2 <!-- 文档申明 -->
 3 <!DOCTYPE sqlMap PUBLIC "-//ibatis.apache.org//DTD SQL Map 2.0//EN"
 4         "http://ibatis.apache.org/dtd/sql-map-2.dtd">
 5
 6 <sqlMap>
 7     <typeAlias alias="Student" type="com.zhouxy.ibatis.Student"/>    <!-- 给实体类启用简单别名 -->
 8
 9     <select id="selectAllStudent" resultClass="Student">    <!-- 编写sql语句.并给该sql语句命名即id,之后根据该id进行操作 -->
10         select * from student
11     </select>
12 </sqlMap>

 4.编写Student实体类(Student.java)

 1 package com.zhouxy.ibatis;
 2
 3 public class Student {
 4     private int id;
 5     private String name;
 6     private int age;
 7     public int getId() {
 8         return id;
 9     }
10     public void setId(int id) {
11         this.id = id;
12     }
13     public String getName() {
14         return name;
15     }
16     public void setName(String name) {
17         this.name = name;
18     }
19     public int getAge() {
20         return age;
21     }
22     public void setAge(int age) {
23         this.age = age;
24     }
25     public Student() {
26         super();
27     }
28
29     @Override
30     public String toString() {
31         String string = "id="+id+"\tname="+name+"\tage="+age;
32
33         return string;
34     }
35 }

 5.写方法解析SqlMapConfig.xml文件.可以自己运用DOMJ或者SAX去解析,但是在ibatis的jar中已经存在相关方法了,直接调用即可.我是将其封装在ReadMethod类中的readConfig方法中,方便多处调用.

 1 package com.zhouxy.ibatis;
 2
 3 import java.io.IOException;
 4 import java.io.Reader;
 5
 6 import com.ibatis.sqlmap.client.SqlMapClient;
 7 import com.ibatis.sqlmap.client.SqlMapClientBuilder;
 8 import com.ibatis.common.resources.Resources;
 9
10 public class ReadMethod {
11     private static SqlMapClient sqlMapClient = null;
12
13     public static SqlMapClient readConfig(){
14
15         Reader reader = null;
16
17         try {
18             reader = Resources.getResourceAsReader("com/zhouxy/ibatis/SqlMapConfig.xml");
19             sqlMapClient = SqlMapClientBuilder.buildSqlMapClient(reader);
20
21             reader.close();
22         } catch (IOException e) {
23             e.printStackTrace();
24         }
25
26         return sqlMapClient;
27     }
28 }

 6.测试

 1 package com.zhouxy.ibatis;
 2
 3 import java.sql.SQLException;
 4 import java.util.List;
 5
 6 public class StudentDaoImp{
 7     public static void main(String[] args) {
 8         List<Student> list = null;
 9
10         try {
11             list = ReadMethod.readConfig().queryForList("selectAllStudent");    //查API可知queryForList()方法有多种形式,
12                                                                                 //这里使用Student.xml文件中sql语句对应的id
13         } catch (SQLException e) {
14             e.printStackTrace();
15         }
16
17         for(Student student : list){
18             System.out.println(student.toString());
19         }
20     }
21 }

 运行main方法,就可以将数据库中student表中的信息查询出来.如下:

 

初学Ibatis,布布扣,bubuko.com

时间: 2024-11-03 22:00:09

初学Ibatis的相关文章

Structs+Spring+iBatis 初学之问题判断

小白接下来将会总结下我再学习Spring的学习过程中(ssi框架)中遇到的问题,以后会不断的进行更新. 最容易犯的问题,就是声明bean的时候,属性引用其他声明的bean的时候,name没有进行好对应(与其他地方声明的bean的id属性一致) 还有就是class没有对应好类.(可以通过ctrl+ 鼠标单击)去判断类是否存在已经正确的对应. 1.如果遇到某个对象无法创建的问题,可以考虑在调用类中是否对使用的属性进行了set get方法. 2.resultclass 跟resultmap 要区别好 

iBATIS小例子(初学)

SqlMapConfig.xml文件: <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE sqlMapConfig PUBLIC "-//iBATIS.com//DTD SQL Map Config 2.0//EN" "http://www.ibatis.com/dtd/sql-map-config-2.dtd" > <sqlMapConfig>

MyBatis初学

MyBatis 初学笔记 Student.java package com.xjh.domain; import java.util.Date; public class Student { private Integer studId; private String name; private String email; private Date dob; public Integer getStudId() { return studId; } public void setStudId(I

通过maven test 报org.apache.ibatis.binding.BindingException: Invalid bound statement

背景 直接使用eclipse工具去执行,没有问题,通过testng.xml去执行,没有问题,但通过mvn clean test执行,就报错,提示org.apache.ibatis.binding.BindingException: Invalid bound statement 解决方法 首先先肯定的是:mybatis的配置是没有问题,因为eclipse可以正常执行: 在eclipse中把mapper的xml文件放到src代码目录下是可以一起打包进classes的,而maven去编译的时候不会,

hibernate和ibatis对比

Hibernate是当前最流行的O/R mapping框架,iBATIS是另外一种优秀的O/R mapping框架. Hibernate对数据库结构提供了较为完整的封装,Hibernate的O/R Mapping实现了POJO和数据库表之间的映射,以及SQL的自动生成和执行.程序员往往只需定义好了POJO到数据库表的映射关系,即可通过Hibernate提供的方法完成持久层操作.Hibernate/OJB会根据制定的存储逻辑,自动生成对应的SQL并调用JDBC接口加以执行. 而iBATIS的着力点

iBatis系列之三

iBatis和Hibernate最大差别就是在于iBatis没有严格的和具体的表做关联:而是将结果集和DAO做关联. iBatis的SqlConfig.xml配置一个properties文件,其实可以完全在SqlConfig中配置相应的数据库信息,但是有了一个properties文件之后有一个好处:如果是从生产环境切换到测试环境,只需要修改一处"properties"节点即可. DAO模式就是通过生命一个DAO的接口形式来隐藏数据库层具体的实现:DAO模式提供的规则(接口的方法以及方法

spring2.5整合ibatis

SqlMapClient对象 这个对象是iBatis操作数据库的接口(执行CRUD等操作),它也可以执行事务管理等操作.这个类是我们使用iBATIS的最主要的类. <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN 2.0//EN" "http://www.springframework.org/dtd/s

Mybatis与Ibatis区别

相信很多关键词在运用ibatis2.x的兄弟并没有通过ibatis的xml映射文件来完成目标间的联系映射.本来也的确没有必要那么做,由于ibatis2.x采用的是"嵌套查询"的方法将目标之间的联系通过查询句子的直接拼装来完成,其作用和在DAO或Service中自行封装是相同的. 不过这种方法存在"N+1查询疑问". 概括地讲,N+1查询疑问可所以这样导致的: ? 你执行了一个独自的SQL句子来获取成果列表(即是+1). ? 对回来的每条记录,你执行了一个查询句子来为

Mybatis缓存报错org.apache.ibatis.exceptions.PersistenceException

错误信息如下: org.apache.ibatis.exceptions.PersistenceException: ### Error querying database. Cause: org.apache.ibatis.cache.CacheException: Error deserializing object. Cause: java.lang.ClassNotFoundException: com.kytsoft.model.Adminlink ### Cause: org.apa