第一步:创建一个POJO类与Hibernate类似,即创建一个javaBean类 Person.java:
package com.ibatis.model;
import java.io.Serializable;
/**
*
* @author gulin
*
*/
public class Person implements Serializable {
private static final long serialVersionUID = 1L;
private int id;
private String name;
private String address;
private int age;
public Person() {
}
public Person(int id, String name, String address, int age) {
this.id = id;
this.name = name;
this.address = address;
this.age = age;
}
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getAddress() {
return address;
}
public void setAddress(String address) {
this.address = address;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
}
第二步,创建这个POJO类的映射文件Person.xml:
<?xml version="1.0" encoding="UTF-8" ?>
<?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="Person">
<resultMap id="Person-result-list" class="com.ibatis.model.Person">
<result property="id" column="ID" />
<result property="name" column="NAME" />
<result property="address" column="ADDRESS" />
<result property="age" column="AGE" />
</resultMap>
<insert id="insertPerson">
INSERT INTO PERSON (ID,
NAME,ADDRESS,AGE) VALUES (
#id#,#name#,#address#,#age# )
</insert>
<select id="selectPersonById" parameterClass="com.ibatis.model.Person"
resultMap="Person-result-list">
SELECT * FROM
PERSON WHERE ID = #id#
</select>
<update id="updatePersonById" parameterClass="com.ibatis.model.Person">
UPDATE PERSON SET NAME = #name#
<dynamic prepend="WHERE">
<isNotNull prepend="AND" property="id">
ID=#id#
</isNotNull>
</dynamic>
</update>
<select id="getAllPerson" parameterClass="com.ibatis.model.Person"
resultMap="Person-result-list">
SELECT * FROM PERSON
<dynamic prepend="WHERE">
<isNotNull prepend="AND" property="id">
ID=#id#
</isNotNull>
<isNotNull prepend="AND" property="age">
AGE=#age#
</isNotNull>
</dynamic>
</select>
<delete id="deletePersonById" parameterClass="com.ibatis.model.Person">
DELETE FROM PERSON
<dynamic prepend="WHERE">
<isNull prepend="AND" property="id">
ID=#id#
</isNull>
</dynamic>
</delete>
</sqlMap>
第三步,创建IBatis ORM框架的总配置文件SqlMapConfig.xml:
<!DOCTYPE sqlMapConfig PUBLIC "-//ibatis.apache.org//DTD SQL Map Config 2.0//EN"
"http://ibatis.apache.org/dtd/sql-map-config-2.dtd">
<sqlMapConfig>
<!--引入外部配置的数据源-->
<properties resource="com/ibatis/model/SqlMapConfigExample.properties" />
<settings cacheModelsEnabled="true" enhancementEnabled="true"
lazyLoadingEnabled="true" maxRequests="32" maxSessions="10"
maxTransactions="5" useStatementNamespaces="true" />
<!--配置数据源-->
<transactionManager type="JDBC">
<dataSource type="SIMPLE">
<property name="JDBC.Driver" value="com.mysql.jdbc.Driver" />
<property name="JDBC.ConnectionURL" value="jdbc:mysql://localhost:3306/test" />
<property name="JDBC.Username" value="root" />
<property name="JDBC.Password" value="root" />
</dataSource>
</transactionManager>
<sqlMap resource="com/ibatis/model/Person.xml" />
</sqlMapConfig>
数据源也可以通过外部文件properties尽心引入。第四步,获取SqlMapClient的实例,独立配置java类MyAppConfig.java
package com.ibatis.config;
import java.io.Reader;
import com.ibatis.common.resources.Resources;
import com.ibatis.sqlmap.client.SqlMapClient;
import com.ibatis.sqlmap.client.SqlMapClientBuilder;
/**
*
* @author gulin
*
*/
public class MyAppConfig {
private static final SqlMapClient sqlMap;
static {
try {
String resource = "com/ibatis/model/SqlMapConfig.xml";
Reader reader = Resources.getResourceAsReader(resource);
sqlMap = SqlMapClientBuilder.buildSqlMapClient(reader);
} catch (Exception e) {
e.printStackTrace();
throw new RuntimeException("Error" + e);
}
}
public static SqlMapClient getSqlMapInstance() {
return sqlMap;
}
}
第五步,测试是否成功:package com.ibatis.test;
import com.ibatis.config.MyAppConfig;
import com.ibatis.model.Person;
import com.ibatis.sqlmap.client.SqlMapClient;
/**
*
* @author gulin
*
*/
public class Test {
private static SqlMapClient sqlMap;
public static void main(String[] args) {
sqlMap = MyAppConfig.getSqlMapInstance();
Person person = new Person();
person.setName("张三");
person.setAddress("广州");
person.setAge(22);
try {
sqlMap.startTransaction();
sqlMap.insert("Person.insertPerson", person);
sqlMap.commitTransaction();
sqlMap.endTransaction();
} catch (Exception e) {
e.printStackTrace();
}
}
}最后的结果是必须的!
Ibatis与hibernate之间最大的一个不同就是在Ibatis中可以将SQL语句写在配置文件当中,还可以实现动态查询条件等,在DAO层中只需调用配置文件对应的一个KEY就行。
如:
SELECT * FROM USER
<dynamic prepend="WHERE">
<isNotNull prepend="AND" property="userId">
USERID=#userId#
</isNotNull>
</dynamic>
表示当UserId非空时,执行SQL语句SELECT * FROM USER WHERE UserId=?后续文章会对该框架技术作详细介绍。
Ibatis入门学习
最新推荐文章于 2024-08-25 21:18:14 发布