iBatis hello ,world

一,导入所需的工具包(以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);
	}
}

你可能感兴趣的:(iBatis hello ,world)