一、iBATIS简介:
iBATIS一词来源于“internet”和“abatis”的组合,是一个由Clinton Begin在2001年发起的开放源代码项目。最初侧重于密码软件的开发,现在是一个基于Java的持久层框架ibatis本是apache的一个开源项目,2010年这个项目由apache software foundation 迁移到了google code,并且改名为mybatis。
二、建立Java Project
三、导jar包:ibatis-2.3.4.726.jar
四、entity,同时需要相关的实体类xml文件
1.Classes类
package org.e276.entity; public class Classes { private Integer id; private String name; private String beginDate; private String endDate; //构造方法 public Classes() { super(); } public Classes(Integer id) { super(); this.id = id; } public Classes(Integer id, String name, String beginDate, String endDate) { super(); this.id = id; this.name = name; this.beginDate = beginDate; this.endDate = endDate; } //getter/setter public Integer getId() { return id; } public void setId(Integer id) { this.id = id; } public String getName() { return name; } public void setName(String name) { this.name = name; } public String getBeginDate() { return beginDate; } public void setBeginDate(String beginDate) { this.beginDate = beginDate; } public String getEndDate() { return endDate; } public void setEndDate(String endDate) { this.endDate = endDate; } }
2.Students类
package org.e276.entity; public class Students { private Integer id; private String name; private Integer age; private Classes classes; // 构造方法 public Students() { super(); } public Students(String name, Integer age, Classes classes) { super(); this.name = name; this.age = age; this.classes = classes; } // getter/setter public Integer getId() { return id; } public void setId(Integer id) { this.id = id; } public String getName() { return name; } public void setName(String name) { this.name = name; } public Integer getAge() { return age; } public void setAge(Integer age) { this.age = age; } public Classes getClasses() { return classes; } public void setClasses(Classes classes) { this.classes = classes; } @Override public String toString() { return "Students [id=" + id + ", name=" + name + ", age=" + age + "]"; } }
3.Students.xml
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE sqlMap PUBLIC "-//ibatis.apache.org//DTD SQL Map 2.0//EN" "sql-map-2.dtd"> <sqlMap namespace="me"> <typeAlias alias="Students" type="org.e276.entity.Students" /> <typeAlias alias="Classes" type="org.e276.entity.Classes" /> <!-- 学生类,多对一,如果列名和属性名完全一样,则不用映射 --> <resultMap class="Students" id="StudentsResult"> <result property="id" column="id" /> <result property="name" column="name" /> <result property="age" column="age" /> <result property="classes" column="class_id" select="getClassesById" /> </resultMap> <!-- 班级类 --> <resultMap class="Classes" id="ClassesResult"> <result property="id" column="id" /> <result property="name" column="name" /> <result property="beginDate" column="begin_date" /> <result property="endDate" column="end_date" /> </resultMap> <!-- 如果名不同,则必须加上as,通过id查找班级 --> <select id="getClassesById" parameterClass="int" resultMap="ClassesResult"> select * from classes where id = #value# </select> <!-- 查找所有的学生 --> <select id="getAllStudents" resultMap="StudentsResult"> select * from students </select> <!-- 根据id得到当前班级所有的学生 --> <select id="getStudentsByClassId" resultClass="Students" parameterClass="int"> <![CDATA[ select id, name, age, class_id from students where class_id = #value# ]]> </select> <!-- 插入学生 --> <insert id="saveStudent" parameterClass="Students"> <!-- 注意Oracle中的id是以序列的形式插入,不能省略id这一列 --> <![CDATA[ insert into students values(students_seq.nextval,#name#, #age#, #classes.id#) ]]> <!-- 返回主键 --> <selectKey resultClass="int" keyProperty="id"> <!-- Oracle中的写法:select 序列名.currval as id from dual --> <![CDATA[ select students_seq.currval as id from dual ]]> </selectKey> </insert> <!-- 多表联接查询,查询学生表和班级表 --> <select id="selectStudentsAndClasses" resultClass="java.util.HashMap"> <![CDATA[ select s.id as sid, s.name as sname, s.age as sage, c.name as cname from students s inner join classes c on s.class_id = c.id ]]> </select> </sqlMap>
五、测试类(使用单元测试)
package org.e276.test; import java.io.Reader; import java.sql.SQLException; import java.util.List; import java.util.Map; import org.e276.entity.Classes; import org.e276.entity.Students; import org.junit.After; import org.junit.Before; import org.junit.Test; import com.ibatis.common.resources.Resources; import com.ibatis.sqlmap.client.SqlMapClient; import com.ibatis.sqlmap.client.SqlMapClientBuilder; public class TestStudents { SqlMapClient sqlMapper; @Before public void setUp() throws Exception { Reader reader = Resources.getResourceAsReader("SqlMapConfig.xml"); // 得到SqlMapClient接口对象 sqlMapper = SqlMapClientBuilder.buildSqlMapClient(reader); // 关闭对象 reader.close(); } @After public void tearDown() throws Exception { sqlMapper = null; } /** * 通过id查找班级 * * @throws SQLException */ public void getClassesById() throws SQLException { @SuppressWarnings("unchecked") List<Classes> classes = sqlMapper.queryForList("getClassesById", 2); for (Classes clazz : classes) { System.out.println("班级名:" + clazz.getName()); } } /** * 查找所有的学生 * * @throws SQLException */ public void getAllStudents() throws SQLException { @SuppressWarnings("unchecked") List<Students> students = sqlMapper.queryForList("getAllStudents"); for (Students stus : students) { System.out.println(stus); } } /** * 查询班级ID为3的学生信息 * * @throws SQLException */ public void getStudentsByClassId() throws SQLException { @SuppressWarnings("unchecked") List<Students> stuList = sqlMapper.queryForList("getStudentsByClassId", 3); for (Students students : stuList) { System.out.println(students); } } /** * 插入一个学生记录 * * @throws SQLException */ public void saveStudent() throws SQLException { Students student = new Students("李某某", 32, new Classes(2)); int id = (Integer) sqlMapper.insert("saveStudent", student); System.out.println(id); } /** * 多表联接,查询学生表和班级表 * * @throws SQLException */ @Test public void selectStudentsAndClasses() throws SQLException { @SuppressWarnings("unchecked") List<Map<String, Object>> result = sqlMapper.queryForList("selectStudentsAndClasses"); for (Map<String, Object> map : result) { System.out.println("序号:" + map.get("SID")); System.out.println("学生姓名:" + map.get("SNAME")); System.out.println("年龄:" + map.get("SAGE")); System.out.println("班级名:" + map.get("CNAME")); System.out.println("-------------"); } } }
六、iBatis的配置文件 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> <!-- Configure a built-in transaction manager. If you're using an app server, you probably want to use its transaction manager and a managed datasource --> <transactionManager type="JDBC" commitRequired="false"> <dataSource type="SIMPLE"> <property name="JDBC.Driver" value="oracle.jdbc.driver.OracleDriver"/> <property name="JDBC.ConnectionURL" value="jdbc:oracle:thin:@localhost:1521:orcl"/> <property name="JDBC.Username" value="y2"/> <property name="JDBC.Password" value="bdqn"/> </dataSource> </transactionManager> <!-- List the SQL Map XML files. They can be loaded from the classpath, as they are here (com.domain.data...) --> <sqlMap resource="org/e276/entity/Students.xml"/> <!-- List more here... <sqlMap resource="com/mydomain/data/Order.xml"/> <sqlMap resource="com/mydomain/data/Documents.xml"/> --> </sqlMapConfig>
七、demo
相关推荐
ibatis demo,ibatis例子,ibatis示例
ibatis小例子Demo,对于初学者是个很好的例子。
ibatis已改成了mybatis,虽然ibatis是以前的技术,但是多学学还是很好的。
Ibatis连接ORACLE数据库的小例子
这是一个用iBator生成iBatis有关代码的例子。 特别说明: Eclipse应该是3.4.1以上版本, 并且安装了iBator插件。否则可用iBator的命令行版本或ant工具。 测试用数据是: CREATE TABLE PERSON( id INTEGER NOT NULL,...
ibatis ,入门例子
ajax和ibatis的综合应用例子,内带了Ibaties的配置文件,是实现的一个读取XML文件的例子
ibatis例子,本例子是使用MySQL的,若使用Oracle或其他数据库,可以查看JDBC连接时使用的URL和账号用户名信息,具体自行查询。
学习ibatis很好的例子JPetStore学习ibatis很好的例子JPetStore学习ibatis很好的例子JPetStore学习ibatis很好的例子JPetStore学习ibatis很好的例子JPetStore
iBatis工程的简单例子,在eclipse上实现的,数据库是mysql数据库,里面的字段为CREATE DATABASE MYDB; use MYDB; Drop TABLE IF EXISTS `MYDB`.`student`; Create TABLE `MYDB`.`student` ( `name` varchar(40) NOT...
ibatis入门小例子,包括实例源码,所需jar包。
简单的Ibatis入门例子,让你踏入Ibatis大门
spring+ibatis+ehcache整合完整例子,数据库MySQL
ibatis最简单的两个小例子,给刚刚学习ibatis的学友一点帮助
ibatis简单CRUD例子,供新手学习用。
下面我们看一个最简单的入门例子,是《ibatis 开发指南》上的例子改的,不过上面讲的不仔细,我开始学的时候搞了一个晚上才把那个例子跑起来的,相信一些朋友也和我一样,在入门的时候有一点小郁闷,我把整个工程...
SpringMVC+ibatis+velocity整合例子,虽然比较简单。可以为没有配置好的同学作为参考。
本例子集成了ibatis的常用操作,如果掌握了本实例教程,相信应付一般的工作是没有问题的了。本实例教程还集成了数据库脚本。导入工程就可以运行。里面有详细的注释。
ibatis例子加教程 ibatis例子加教程 ibatis例子加教程 ibatis例子加教程 ibatis例子加教程 ibatis例子加教程