一,导入所需的工具包(以MySQL为例):
1,如果是MAVEN项目的话,直接在依赖中添加:
iBatis的2.3.4.726版本的jar包:
<dependency> <groupId>org.apache.ibatis</groupId> <artifactId>ibatis-sqlmap</artifactId> <version>2.3.4.726</version> </dependency>
MySQL的5.1.30版本的jar包:
<dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> <version>5.1.30</version> </dependency>
2,加入数据库的配置文件:
<?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> <settings 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/ibatis"/> <property name="JDBC.Username" value="root"/> <property name="JDBC.Password" value="root"/> </dataSource> </transactionManager> <sqlMap resource="user.xml"/> </sqlMapConfig>
3,创建测试所需的USER表:
CREATE TABLE USER ( ID INT, NAME VARCHAR(100), EMAIL VARCHAR(50), PASSWORD VARCHAR(16), STATUS INT );
4,创建USER表对应的映射文件:
<?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="User"> <typeAlias alias="User" type="org.coder4j.User" /> <resultMap id="userResultMap" class="User"> <result property="id" column="ID" /> <result property="name" column="NAME" /> <result property="email" column="EMAIL" /> <result property="password" column="PASSWORD" /> <result property="status" column="STATUS" /> </resultMap> <select id="getUserById" parameterClass="java.lang.Integer" resultMap="userResultMap"> SELECT * FROM USER WHERE ID = #value# </select> <select id="getMaxId" resultClass="java.lang.Integer"> SELECT MAX(ID) FROM USER </select> <insert id="addUser" parameterClass="User"> INSERT INTO USER (ID,NAME,EMAIL,PASSWORD,STATUS) VALUES(#id#,#name#,#email#,#password#,#status#); </insert> <delete id="deleteUserById" parameterClass="java.lang.Integer"> DELETE FROM USER WHERE ID = #value# </delete> </sqlMap>
5,创建User对应的实体类:
package org.coder4j; public class User { private Integer id; private String name; private String email; private String password; private int status; 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 getEmail() { return email; } public void setEmail(String email) { this.email = email; } public String getPassword() { return password; } public void setPassword(String password) { this.password = password; } public int getStatus() { return status; } public void setStatus(int status) { this.status = status; } }
6,创建UserDao的接口:
package org.coder4j; import com.ibatis.sqlmap.client.SqlMapClient; public interface UserDao { public User addUser(User user, SqlMapClient sqlmapClient); public User getUserById(Integer id, SqlMapClient sqlmapClient); public void deleteUserById(Integer id, SqlMapClient sqlmapClient); }
7,创建UserDao的实现类:
package org.coder4j; import com.ibatis.sqlmap.client.SqlMapClient; public class UserDaoIbatis implements UserDao { @Override public User addUser(User user, SqlMapClient sqlmapClient) { try { Integer id = (Integer) sqlmapClient.queryForObject("User.getMaxId"); id = id == null ? 1 : id + 1; user.setId(id); user.setStatus(1); sqlmapClient.insert("User.addUser", user); user = getUserById(id, sqlmapClient); return user; } catch (Exception e) { e.printStackTrace(); } return null; } @Override public User getUserById(Integer id, SqlMapClient sqlmapClient) { try { User user = (User) sqlmapClient.queryForObject("User.getUserById", id); return user; } catch (Exception e) { e.printStackTrace(); } return null; } @Override public void deleteUserById(Integer id, SqlMapClient sqlmapClient) { try { sqlmapClient.delete("User.deleteUserById", id); } catch (Exception e) { e.printStackTrace(); } } }
8,创建UserDao实现类的测试类:
package org.coder4j; import java.io.Reader; import com.ibatis.common.resources.Resources; import com.ibatis.sqlmap.client.SqlMapClient; import com.ibatis.sqlmap.client.SqlMapClientBuilder; public class TestMain { public static void main(String[] args) throws Exception { // 初始化UserDao UserDao userDao = new UserDaoIbatis(); // 创建SQLMapClient Reader reader = Resources.getResourceAsReader("sql-maps-config.xml"); SqlMapClient sqlmapClient = SqlMapClientBuilder .buildSqlMapClient(reader); // 新建一个User对象 User user = new User(); user.setId(1); user.setName("Demo User"); user.setPassword("password"); user.setEmail("[email protected]"); user.setStatus(1); // 添加一个User userDao.addUser(user, sqlmapClient); // 根据Id读取User User createdUser = userDao.getUserById(1, sqlmapClient); System.out.println(createdUser.getEmail()); // 根据Id删除一个User userDao.deleteUserById(1, sqlmapClient); } }