トッカンソフトウェア

SpringFrameworkでMyBatisを使ってみる(Javaアプリケーション)②

前回は単純なSELECTしかやらなかったので、今回はINSERT、UPDATE、DELETE、条件付きのSELECTをやります。
今回は前回から変更したファイルだけ書きます。


MyBatisのSQL設定ファイル(sql.xml)

				
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="test.sql">
	<select id="selectUser" parameterType="spring.test.User"
		resultType="spring.test.User">
		SELECT ID, NAME FROM M_USER
		<where>
			<if test="id != null">ID = #{id}</if>
			<if test="name != null">AND NAME = #{name}</if>
		</where>
	</select>
	<insert id="insertUser" parameterType="spring.test.User">
		INSERT INTO M_USER(ID, NAME)
		 VALUES(#{id}, #{name})
	</insert>
	<update id="updateUser" parameterType="spring.test.User">
		UPDATE M_USER SET NAME = #{name}
		 WHERE ID = #{id}
	</update>
	<delete id="deleteUser" parameterType="String">
		DELETE FROM M_USER WHERE ID = #{id}
	</delete>
</mapper>


			
<if test="条件"></if>で動的にSQLを変更することができます。
<where></where>で囲むことにより、条件によりWHERE AND 条件 となった場合に自動的にWHERE 条件に変更してくれます。

UserDao.java

				
package spring.test;

import java.util.List;

public interface UserDao {
	public List<User> getUserList(User user);

	public void insertUser(User user);

	public void updateUser(User user);

	public void deleteUser(String id);
}


			

UserDaoImpl.java

				
package spring.test;

import java.util.List;

import org.apache.ibatis.session.SqlSession;

public class UserDaoImpl implements UserDao {

	private SqlSession session;

	public void setSession(SqlSession ss) {
		this.session = ss;
	}

	@Override
	public List<User> getUserList(User user) {
		return session.selectList("test.sql.selectUser", user);
	}

	@Override
	public void insertUser(User user) {
		 session.insert("test.sql.insertUser", user);
	}

	@Override
	public void updateUser(User user) {
		 session.update("test.sql.updateUser", user);
	}

	@Override
	public void deleteUser(String id) {
		 session.update("test.sql.deleteUser", id);
	}
}

引数で条件オブジェクトを渡します。
			

SpringBean.java

				

package spring.test;

import java.util.List;

import org.springframework.beans.factory.annotation.Autowired;

public class SpringBean {

	@Autowired
	private UserDao dao;

	public void show() {
		User userArg = new User();
		userArg.setId("0005");
		userArg.setName("name");

		//INSERT を実行
		dao.insertUser(userArg);

		userArg.setName("test user5");

		//UPDATE を実行
		dao.updateUser(userArg);

		//SELECT を実行
		List<User> list = dao.getUserList(userArg);
		for (User user : list) {
			System.out.println(user.getId() + "-" + user.getName());
		}

		//DELETE を実行
		dao.deleteUser(userArg.id);
	}
}

			

ドル($)とシャープ(#)

値を連携させるときにドル記号とシャープ記号を使えます。

ドル記号はテーブル名などそのまま出力するもの、
シャープ記号は条件に使うもので実行時にシングルクォーテーションを自動で付けてくれます。
				
SELECT * FROM ${table} WHERE KEY=#{key}

			



ページのトップへ戻る