首页 > 代码库 > 初学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表中的信息查询出来.如下:
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。