首页 > 代码库 > 初学Ibatis

初学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.Driver2 url=jdbc:mysql://localhost:3306/ibatis3 username=root4 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 student11     </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     @Override30     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语句对应的id13         } catch (SQLException e) {14             e.printStackTrace();15         }16         17         for(Student student : list){18             System.out.println(student.toString());19         }20     }    21 }

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