mybatis-2.3.5とswingのサンプル

cretateEMP.sql

CREATE TABLE `EMP` (
  `EMPNO` decimal(4,0) NOT NULL,
  `ENAME` varchar(10) default NULL,
  `JOB` varchar(9) default NULL,
  `MGR` decimal(4,0) default NULL,
  `HIREDATE` date default NULL,
  `SAL` decimal(7,2) default NULL,
  `COMM` decimal(7,2) default NULL,
  `DEPTNO` decimal(2,0) NOT NULL,
  PRIMARY KEY  (`EMPNO`)
)

examples.resources.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>
	<!-- DB接続設定 -->
	<transactionManager type="JDBC">
		<dataSource type="SIMPLE">
			<property name="JDBC.Driver" value="org.gjt.mm.mysql.Driver"/>
			<property name="JDBC.ConnectionURL" value="jdbc:mysql://192.168.0.13:3306/XXXXX_db?useUnicode=true&amp;characterEncoding=Windows-31J"/>
			<property name="JDBC.Username" value="XXXXX"/>
			<property name="JDBC.Password" value="XXXXX"/>
		</dataSource>
	</transactionManager>


	<!-- 複数のsqlMapファイル参照する -->
	<sqlMap resource="examples/sqlmap/maps/SqlMap-Dept.xml"/>
	<sqlMap resource="examples/sqlmap/maps/SqlMap-Emp.xml"/>
	<sqlMap resource="examples/sqlmap/maps/SqlMap-Custom.xml"/>
</sqlMapConfig>

util.MyAppSqlConfig.java

package util;

import java.io.Reader;

import com.ibatis.common.resources.Resources;
import com.ibatis.sqlmap.client.SqlMapClient;
import com.ibatis.sqlmap.client.SqlMapClientBuilder;
/**
 * SqlMapClientを返すためのクラス
 */
public class MyAppSqlConfig {
	private static SqlMapClient sqlMap;
	static {
		try {
			String resource = "examples/resources/SqlMapConfig.xml";
			Reader reader = Resources.getResourceAsReader(resource);
			sqlMap = SqlMapClientBuilder.buildSqlMapClient(reader);
		} catch (Exception e) {
			e.printStackTrace();
		}
	}
	public static SqlMapClient getSqlMapInstance(){
		//Singletoneとして利用
		return sqlMap;
	}
}

examples.sqlmap.maps.SqlMap-Emp.xml

<?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>
	<!-- SQLでマッピングする記述方法。ifnullはDBMSの関数 -->
	<select id="getEmpByEmpno" resultClass="examples.dto.Emp">
		SELECT
			EMPNO,
			ENAME,
			JOB,
			MGR                 as manager,
			HIREDATE,
			SAL                 as salary,
			ifnull(COMM, 0.0)    as commission,
			DEPTNO
		FROM EMP
		WHERE EMPNO = #value#
	</select>

	<select id="allEmp1" resultClass="examples.dto.Emp">
		SELECT
			EMPNO,
			ENAME,
			JOB,
			MGR                 as manager,
			HIREDATE,
			SAL                 as salary,
			ifnull(COMM, 0.0)    as commission,
			DEPTNO
		FROM EMP
	</select>

	<!-- resultMapを記述してIBATISの機能でマッピングする方法
		DBに依存しない記述 -->
	<resultMap id="rm1" class="examples.dto.Emp">
		<result column="EMPNO" property="empno"/>
		<result column="ENAME" property="ename"/>
		<result column="JOB" property="job"/>
		<result column="MGR" property="manager"/>
		<result column="HIREDATE" property="hiredate"/>
		<result column="SAL" property="salary"/>
		<result column="COMM" property="commission" nullValue="0.0"/>	<!-- NULLの時の指定 -->
		<result column="DEPTNO" property="deptno"/>
	</resultMap>
	<select id="allEmp2" resultMap="rm1">
		SELECT * FROM EMP
	</select>

	<!-- 動的SQLの例
		条件指定されときのみWHERE句が付加される -->
	<select id="searchEmp" parameterClass="examples.dto.SearchEmpParam" resultMap="rm1">
		SELECT * FROM EMP
		<dynamic prepend="WHERE">
			<isNotNull prepend="AND" property="ename">
			ENAME like #ename#			<!-- ename条件がnullでないとき -->
			</isNotNull>
			<isNotEqual compareValue="0" prepend="AND" property="deptno">
			DEPTNO = #deptno#			<!-- deptno条件が0でないとき -->
			</isNotEqual>
		</dynamic>
	</select>

	<!-- 動的SQLの例
		INで指定する値が可変 -->
	<select id="searchEmpIn" parameterClass="examples.dto.SearchEmpParam" resultMap="rm1">
		SELECT * FROM EMP
		<iterate property="empnoList" prepend="WHERE EMPNO IN" open="(" close=")" conjunction="," >
			#empnoList[]#
		</iterate>
	</select>

	<!-- 動的SQLの例
		文字列でSQL文そのものを指定 -->
	<select id="searchEmpOrder" resultMap="rm1">
		SELECT * FROM EMP
		ORDER BY $value$
	</select>

</sqlMap>

examples.dto.Emp.java

package examples.dto;

import java.sql.Date;

public class Emp {
	private int empno;
	private String ename;
	private String job;
	private String manager;
	private Date hiredate;
	private float salary;
	private float commission;
	private int deptno;
	
	public float getCommission() {
		return commission;
	}
	public void setCommission(float commission) {
		this.commission = commission;
	}
	public int getDeptno() {
		return deptno;
	}
	public void setDeptno(int deptno) {
		this.deptno = deptno;
	}
	public int getEmpno() {
		return empno;
	}
	public void setEmpno(int empno) {
		this.empno = empno;
	}
	public String getEname() {
		return ename;
	}
	public void setEname(String ename) {
		this.ename = ename;
	}
	public Date getHiredate() {
		return hiredate;
	}
	public void setHiredate(Date hiredate) {
		this.hiredate = hiredate;
	}
	public String getJob() {
		return job;
	}
	public void setJob(String job) {
		this.job = job;
	}
	public String getManager() {
		return manager;
	}
	public void setManager(String manager) {
		this.manager = manager;
	}
	public float getSalary() {
		return salary;
	}
	public void setSalary(float salary) {
		this.salary = salary;
	}
}

View01.java

package eo.sim.tool;

import java.awt.BorderLayout;
import java.awt.Dimension;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JTextField;
import javax.swing.border.BevelBorder;

/**
 *
 *
 */
public class View01 extends JFrame implements ActionListener {

	// 従業員番号
	JTextField text1 = null;
	// 従業員名
	JTextField text2 = null;
	// 職種
	JTextField text3 = null;

	/**
	 * 開始メソッド
	 *
	 * @param args	パラメータ
	 */
	public static void main(String[] args){
		View01 frame = new View01();

		// 閉じるボタンをクリックされた場合の動作を設定
		frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

		// ウインドウのタイトルを設定
		frame.setTitle("mybatis-2.3.5とswingのサンプル");

		// フレームの X座標、Y座標、幅、高さを設定
		frame.setBounds(100, 200, 450, 220);

		// フレームを表示(これをしないと透明のフレームが立ち上がってしまう)
		frame.setVisible(true);
	}

	/**
	 * コンストラクタ
	 */
	public View01() {
		// ベースとなるパネルをLayoutManagerを無効にして作成
		JPanel panelBase = new JPanel();
		panelBase.setLayout(null);

		// ラベルを作成
		// 従業員番号
		JLabel label1 = new JLabel("従業員番号");
		// 位置を設定
		label1.setBounds(10, 10, 80, 30);
		// 従業員名
		JLabel label2 = new JLabel("従業員名");
		// 位置を設定
		label2.setBounds(10, 50, 80, 30);

		// 職種
		JLabel label3 = new JLabel("従業員名");
		// 位置を設定
		label3.setBounds(10, 90, 80, 30);

		// テキストを作成
		// 従業員番号
		text1 = new JTextField("7369");
		// サイズを設定
		text1.setPreferredSize(new Dimension(100, 14));
		// 枠を設定
		text1.setBorder(new BevelBorder(BevelBorder.LOWERED));
		// 位置を設定
		text1.setBounds(100, 10, 80, 30);

		// 従業員名
		text2 = new JTextField("");
		// サイズを設定
		text2.setPreferredSize(new Dimension(100, 14));
		// 枠を設定
		text2.setBorder(new BevelBorder(BevelBorder.LOWERED));
		// 位置を設定
		text2.setBounds(100, 50, 80, 30);

		// 従業員名
		text3 = new JTextField("");
		// サイズを設定
		text3.setPreferredSize(new Dimension(100, 14));
		// 枠を設定
		text3.setBorder(new BevelBorder(BevelBorder.LOWERED));
		// 位置を設定
		text3.setBounds(100, 90, 80, 30);

		// ボタンを作成
		JButton button1 = new JButton("検索");
		// 位置を設定
		button1.setBounds(200, 10, 80, 30);
		// アクションリスナー追加
		button1.addActionListener(this);

		// パネルに配置
		panelBase.add(label1);
		panelBase.add(label2);
		panelBase.add(label3);
		panelBase.add(text1);
		panelBase.add(text2);
		panelBase.add(text3);
		panelBase.add(button1);

		// ベースパネルを追加
		getContentPane().add(panelBase, BorderLayout.CENTER);
	}

	/*
	 * アクション
	 */
	public void actionPerformed(ActionEvent e) {

		String empName="";
		String job="";

		if (e.getActionCommand().equals("検索")) {

			EmpService empService = new EmpService();
			try {
				empName = empService.getEmpName(text1.getText());
				job = empService.getJob(text1.getText());
			} catch (Exception e1) {
				// TODO 自動生成された catch ブロック
				e1.printStackTrace();
			}
			text2.setText(empName);
			text3.setText(job);
		}
	}

}

EmpService.java

package eo.sim.tool;

import com.ibatis.sqlmap.client.SqlMapClient;

import examples.dto.Emp;
import util.MyAppSqlConfig;

public class EmpService {

	public String getEmpName(String empno) throws Exception {
		SqlMapClient sqlMap = MyAppSqlConfig.getSqlMapInstance();
		/*
		 * DeptNoを指定して1件のDeptを取得
		 */
		int intEmpno = (Integer.valueOf(empno)).intValue();

		Emp emp = (Emp)sqlMap.queryForObject("getEmpByEmpno",intEmpno);
		return emp.getEname();

	}

	public String getJob(String empno) throws Exception {
		SqlMapClient sqlMap = MyAppSqlConfig.getSqlMapInstance();
		/*
		 * DeptNoを指定して1件のDeptを取得
		 */
		int intEmpno = (Integer.valueOf(empno)).intValue();

		Emp emp = (Emp)sqlMap.queryForObject("getEmpByEmpno",intEmpno);
		return emp.getJob();

	}
}
スポンサーリンク
google 6948682462
google 6948682462

シェアする

  • このエントリーをはてなブックマークに追加

フォローする

スポンサーリンク
google 6948682462