ibatis框架入门教程(查询所有的Student)
ibatis是一个对象关系型的持久层框架,主要作用于Java类和数据库数据之间的连接(映射),所以又称为ORM(Object Relation Mapping ).ibatis具有简单上手的特点,一般人很快就能学会。废话不多说,下面开始案例的说明和结构展示,注意:需要导入ibatis和oracle的jar包
1.该案例主要通过ibatis实现一个Student的查询。下面是该project的结构展示

下面会介绍配置文件,在讲配置文件之前需要给大家讲一个结构
解压ibatis包,发现有简单样例,为了避免大家不知道如何创建配置文件,ibatis给了一个模板,可以根据这个模板来编写配置文件,下面给大家展示一下这个模板
1.lib是创建project时所需要的jar包

2.ibatis自带的简单样例说明

3.xml中dtd文件的说明
dtd文件是一个框架解释器,可以通过远程访问这个文件。它能够帮助我们快速的知道XML所需要的语法,但是ibatis中似乎并没有找到这个解释器dtd文件(目前我没找到)

下面介绍ibatis的配置文件。
2.ibatis的配置文件
ibatis的配置文件主要有三个:
(1)数据库属性文件:什么叫属性文件,最通俗的是以.properties结尾的后缀名就是属性文件。数据库属性一般有四个:驱动(Driver),连接地址(URL),用户(username),密码(password),下面就是一个数据库属性文件

(2)全局文件(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"> <!-- 1.以sqlMapConfig标签开头,所有的标签都要写在这个标签里边 --> <sqlMapConfig> <!-- 1.引用配置源文件 2.引用了数据库属性文件 3.resource是属性文件的真实路径 --> <properties resource="com/itcast/SqlMap.properties"/> <!-- 1.加载事务管理 2.类型为JDBC的形式 --> <transactionManager type="JDBC"> <!-- 1.以SIMPLE形式加载数据资源 2.property是配置数据库的基本属性,这个方法以键值对的形式存在 3.value使用了表达式取出数据库属性文件的值 --> <dataSource type="SIMPLE"> <property name="JDBC.Driver" value="${driver}"/> <property name="JDBC.ConnectionURL" value="${url}"/> <property name="JDBC.Username" value="${username}"/> <property name="JDBC.Password" value="${password}"/> </dataSource> </transactionManager> <!-- 1.加载对象关系映射文件 2.这个实际上是做了Student类和数据库之间的映射 --> <sqlMap resource="com/itcast/Student.xml"/> </sqlMapConfig>
(3)关系对象映射文件Student.xml,这个文件主要用于类与数据库之间的关联,实现Java语言和数据库数据的对接,从而达到持久化的目的。ibatis所有的关于SQL文的写法都放在这里。下面来看看这个配置文件的写法
<?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 namespace="Student"> <!-- 1.该标签是给Student模型取一个别名 2.alias是别名的意思,可以随便取 3.type是Student类的真实路径 --> <typeAlias alias="Student" type="com.itcast.Student"/> <!-- id的意思是代替整条SQL文 2默认的类型为Student类 --> <select id="selectAllStudent" resultClass="Student"> select * from student </select> </sqlMap>
以上把配置文件写完了,在Java层次上需要建立一个数据模型(StudentDto)该模型与数据库字段一一对应,名字和类型都要完全相同
下面写出Student.java文件,注意必须要有一个无参的构造方法

package com.itcast;
public class Student {
private String stunum;
private String stuname;
private String password;
private int age;
public Student() {
}
public String getStunum() {
return stunum;
}
public void setStunum(String stunum) {
this.stunum = stunum;
}
public String getStuname() {
return stuname;
}
public void setStuname(String stuname) {
this.stuname = stuname;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
@Override
public String toString() {
return "Student [stunum=" + stunum + ", stuname=" + stuname + ", password=" + password + ", age=" + age + "]";
}
}
接下来就是Dao层和DaoImpl类的实现了
1.dao中有一个抽象的查询所有的学生的方法
2.daoimpl用于实现dao中的方法
3.注意,测试方法并没有写在测试类中,本人为了图方便,尽请见谅
下面看看dao层

package com.itcast;
import java.util.List;
public interface StudentDao {
/**
* 查询所有学生
* @return Lists
* @throws Exception
*/
public List<Student> selectAllStudent() throws Exception;
}
DaoImpl层

package com.itcast; import java.io.IOException; import java.io.Reader; import java.util.ArrayList; import java.util.List; import com.ibatis.sqlmap.client.SqlMapClient; public class StudentDaoImpl implements StudentDao{ //实例化一个SqlMapClient private static SqlMapClient sqlmapclient=null; private final static String file="com/itcast/SqlMapConfig.xml"; static { try { //实例化一个reader类,用来读取配置文件的信息 Reader reader=com.ibatis.common.resources.Resources.getResourceAsReader(file); //将读取到的配置信息赋给sqlmapclient实例 sqlmapclient=com.ibatis.sqlmap.client.SqlMapClientBuilder.buildSqlMapClient(reader); reader.close(); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } } /** * 查询所有学生信息 */ public List<Student> selectAllStudent() throws Exception { List<Student> list=new ArrayList<Student>(); //1.查询到的信息是一个listֵ list=sqlmapclient.queryForList("selectAllStudent"); return list; } public static void main(String[] args) throws Exception { StudentDao dao=new StudentDaoImpl(); for(Student student: dao.selectAllStudent()) { System.out.println(student); } } }
Java运行结果显示


Java运行的结果应该与数据库中的一致

浙公网安备 33010602011771号