Swinig+ibatisの例

画面

AA101Main Main

package eo.sim.tool.view;

import eo.sim.tool.service.EmpRgstService;

public class AA101Main {
	public static void main(String[] args) {
		try {
			EmpRgstService empRgstService = new EmpRgstService();
			String loginUser = empRgstService.getLoginUser();

			AA102MenuFrame aA102MenuFrame = new AA102MenuFrame();
			aA102MenuFrame.setLoginUser(loginUser);
			aA102MenuFrame.init(aA102MenuFrame);

		} catch (Exception e) {
			e.printStackTrace();
		}
	}

}

AA102MenuFrame

package eo.sim.tool.view;

import java.awt.BorderLayout;
import java.awt.Dimension;

import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JPanel;

import eo.sim.tool.action.View03BtnBulkRgstAction21;
import eo.sim.tool.action.View03BtnBulkRgstAction22;
import eo.sim.tool.action.View03BtnBulkRgstAction3;
import eo.sim.tool.action.View04BtnSeniEmpRgstAction;

/**
 *
 *
 */
public class AA102MenuFrame extends JFrame {

	private JButton button1 = null;
	private JButton button2_1 = null;
	private JButton button2_2 = null;
	private JButton button3_1 = null;
	private JButton button3_2 = null;
	private String loginUser = "";

	public String getLoginUser() {
		return loginUser;
	}

	public void setLoginUser(String loginUser) {
		this.loginUser = loginUser;
	}

	public void init(AA102MenuFrame view04) {

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

		// ウインドウのタイトルを設定
		view04.setTitle("メインメニュー:" + this.loginUser);

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

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

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

		// 検索パネル
		JPanel panel1 = new JPanel();
		panel1.setLayout(null);
		// サイズを設定
		panel1.setPreferredSize(new Dimension(100, 14));
		// 枠を設定
//		panel1.setBorder(new BevelBorder(BevelBorder.LOWERED));
		// 位置を設定
		panel1.setBounds(5, 5, 440, 200);

		// ボタンを作成
		button1 = new JButton("従業員登録へ");
		// 位置を設定
		button1.setBounds(10, 10, 170, 30);

		// ボタンを作成
		button2_1 = new JButton("従業員一括登録1");
		// 位置を設定
		button2_1.setBounds(10, 50, 170, 30);

		// ボタンを作成
		button2_2 = new JButton("従業員一括登録2");
		// 位置を設定
		button2_2.setBounds(200, 50, 170, 30);

		// ボタンを作成
		button3_1 = new JButton("大量登録:バッチモード");
		// 位置を設定
		button3_1.setBounds(10, 90, 170, 30);

		// ボタンを作成
		button3_2 = new JButton("大量登録:通常モード");
		// 位置を設定
		button3_2.setBounds(200, 90, 170, 30);

		// パネルに配置
		panel1.add(button1);
		panel1.add(button2_1);
		panel1.add(button2_2);
		panel1.add(button3_1);
		panel1.add(button3_2);

		// サブパネルを追加
		panelBase.add(panel1);

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

		// アクションリスナー追加
		// 処理モードラジオボタン
		// 編集ボタン
		View04BtnSeniEmpRgstAction action1 = new View04BtnSeniEmpRgstAction(this);
		button1.addActionListener(action1);

		View03BtnBulkRgstAction21 action2_1 = new View03BtnBulkRgstAction21(this);
		button2_1.addActionListener(action2_1);

		View03BtnBulkRgstAction22 action2_2 = new View03BtnBulkRgstAction22(this);
		button2_2.addActionListener(action2_2);

		View03BtnBulkRgstAction3 action3_1 = new View03BtnBulkRgstAction3(this, true);
		button3_1.addActionListener(action3_1);

		View03BtnBulkRgstAction3 action3_2 = new View03BtnBulkRgstAction3(this, false);
		button3_2.addActionListener(action3_2);
	}

}

AA103EmpFrame

package eo.sim.tool.view;

import java.awt.BorderLayout;
import java.awt.Dimension;

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

import eo.sim.tool.action.View03BtnBackAction;
import eo.sim.tool.action.View03BtnEditAction;
import eo.sim.tool.action.View03BtnRgstAction;
import eo.sim.tool.action.View03BtnSearchAction;
import eo.sim.tool.action.View03RdoEditModeAction;
import eo.sim.tool.dto.Dept;
import eo.sim.tool.service.EmpRgstService;
import eo.sim.tool.util.CodeName;

public class AA103EmpFrame extends JFrame {

	/** パネル上 */
	ButtonGroup bgroup = new ButtonGroup();

	JRadioButton radio1 = null;
	JRadioButton radio2 = null;

	// 従業員番号(検索用)
	JTextField text_12 = null;

	// 従業員番号
	JTextField text_21 = null;
	// 従業員名
	JTextField text_22 = null;
	// 職種
	JTextField text_23 = null;
	// 部署
	JComboBox<CodeName> comboBox_24 = null;

	JButton button2 = null;
	JButton button3 = null;
	JButton button4 = null;

	public ButtonGroup getBgroup() {
		return bgroup;
	}

	public void setBgroup(ButtonGroup bgroup) {
		this.bgroup = bgroup;
	}

	public JRadioButton getRadio1() {
		return radio1;
	}

	public void setRadio1(JRadioButton radio1) {
		this.radio1 = radio1;
	}

	public JRadioButton getRadio2() {
		return radio2;
	}

	public void setRadio2(JRadioButton radio2) {
		this.radio2 = radio2;
	}


	public JTextField getText_12() {
		return text_12;
	}

	public void setText_12(JTextField text_12) {
		this.text_12 = text_12;
	}

	public JTextField getText_21() {
		return text_21;
	}

	public void setText_21(JTextField text_21) {
		this.text_21 = text_21;
	}

	public JTextField getText_22() {
		return text_22;
	}

	public void setText_22(JTextField text_22) {
		this.text_22 = text_22;
	}

	public JTextField getText_23() {
		return text_23;
	}

	public void setText_23(JTextField text_23) {
		this.text_23 = text_23;
	}

	public JComboBox<CodeName> getComboBox_24() {
		return comboBox_24;
	}

	public void setComboBox_24(JComboBox<CodeName> comboBox4) {
		this.comboBox_24 = comboBox4;
	}

	// ボタンを作成
	JButton button1 = null;
	public JButton getButton1() {
		return button1;
	}

	public void setButton1(JButton button1) {
		this.button1 = button1;
	}

	public JButton getButton2() {
		return button2;
	}

	public void setButton2(JButton button2) {
		this.button2 = button2;
	}

	public JButton getButton3() {
		return button3;
	}

	public void setButton3(JButton button3) {
		this.button3 = button3;
	}


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

	public void init(AA103EmpFrame view) {

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

		// ウインドウのタイトルを設定
		view.setTitle("従業員登録");

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

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

	public void setDefault(AA103EmpFrame view) {

		// 従業員番号
		text_21.setText("");;
		// 従業員名
		text_22.setText("");
		// 職種
		text_23.setText("");
		// 部署
		comboBox_24.setSelectedIndex(0);

	}

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

		// 検索パネル
		JPanel panel1 = new JPanel();
		panel1.setLayout(null);
		// サイズを設定
		panel1.setPreferredSize(new Dimension(100, 14));
		// 枠を設定
		panel1.setBorder(new BevelBorder(BevelBorder.LOWERED));
		// 位置を設定
		panel1.setBounds(5, 5, 440, 100);
		// 色を設定
//		panel1.setBackground(Color.LIGHT_GRAY);

		// データパネル
		JPanel panel2 = new JPanel();
		panel2.setLayout(null);
		// サイズを設定
		panel2.setPreferredSize(new Dimension(100, 14));
		// 枠を設定
		panel2.setBorder(new BevelBorder(BevelBorder.LOWERED));
		// 位置を設定
		panel2.setBounds(5, 105, 440, 300);
		// 色を設定
//		panel2.setBackground(Color.LIGHT_GRAY);


		/** パネル上 */
		radio1 = new JRadioButton("登録");
		// 位置を設定
		radio1.setBounds(10, 10, 80, 30);
		radio2 = new JRadioButton("変更");
		// 位置を設定
		radio2.setBounds(100, 10, 80, 30);
		bgroup.add(radio1);
		bgroup.add(radio2);		// パネルに配置
		// 初期選択
		radio2.setSelected(true);

		// 従業員番号
		JLabel label11 = new JLabel("従業員番号");
		// 位置を設定
		label11.setBounds(10, 50, 80, 30);

		// テキストを作成
		// 従業員番号
		text_12 = new JTextField("10001");
		// サイズを設定
		text_12.setPreferredSize(new Dimension(100, 14));
		// 枠を設定
		text_12.setBorder(new BevelBorder(BevelBorder.LOWERED));
		// 位置を設定
		text_12.setBounds(100, 50, 80, 30);
		// ボタンを作成
		button1 = new JButton("検索");
		// 位置を設定
		button1.setBounds(200, 50, 80, 30);


		panel1.add(radio1);
		panel1.add(radio2);
		panel1.add(label11);
		panel1.add(text_12);
		panel1.add(button1);



		/** パネル下 */
		// ラベルを作成
		// 従業員番号
		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);

		// 部署
		JLabel label4 = new JLabel("部署");
		// 位置を設定
		label4.setBounds(10, 130, 80, 30);

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

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

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

		// 部署リストを取得
		EmpRgstService empRgstService = new EmpRgstService();
		try {
			empRgstService.init();
		} catch (Exception e) {
			// TODO 自動生成された catch ブロック
			e.printStackTrace();
		}

		// 部署
		comboBox_24 = new JComboBox<CodeName>();
		// コンボボックスモデル
//		DefaultComboBoxModel<String> cboMode4 = new DefaultComboBoxModel<String>();
//		for (Dept dept : empRgstService.getDeptList()){
//			cboMode4.addElement(dept.getDeptno() + ":" + dept.getDname());
//		}
		// サイズを設定
		comboBox_24.setPreferredSize(new Dimension(100, 14));
		// 枠を設定
		comboBox_24.setBorder(new BevelBorder(BevelBorder.LOWERED));
		// 位置を設定
		comboBox_24.setBounds(100, 130, 160, 30);
//		comboBox_24.setModel(cboMode4);

		for (Dept dept : empRgstService.getDeptList()){
			CodeName codeName = new CodeName(Integer.valueOf(dept.getDeptno()).toString() ,dept.getDname());
			comboBox_24.addItem(codeName);
		}

		// ボタンを作成
		button2 = new JButton("登録");
		// 位置を設定
		button2.setBounds(200, 170, 80, 30);
		button2.setEnabled(false);

		// ボタンを作成
		button3 = new JButton("更新");
		// 位置を設定
		button3.setBounds(290, 170, 80, 30);
		button3.setEnabled(false);

		// ボタンを作成
		button4 = new JButton("戻る");
		// 位置を設定
		button4.setBounds(10, 170, 80, 30);


		// パネルに配置
		panel2.add(label1);
		panel2.add(label2);
		panel2.add(label3);
		panel2.add(label4);
		panel2.add(text_21);
		panel2.add(text_22);
		panel2.add(text_23);
		panel2.add(comboBox_24);
		panel2.add(button2);
		panel2.add(button3);
		panel2.add(button4);

		// サブパネルを追加
		panelBase.add(panel1);
		panelBase.add(panel2);

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

		// アクションリスナー追加
		// 処理モードラジオボタン
		View03RdoEditModeAction action1 = new View03RdoEditModeAction(this);
		radio1.addItemListener(action1);

		View03RdoEditModeAction action2 = new View03RdoEditModeAction(this);
		radio2.addItemListener(action2);

		// 検索ボタン
		View03BtnSearchAction action3 = new View03BtnSearchAction(this);
		button1.addActionListener(action3);

		// 登録ボタン
		View03BtnRgstAction action4 = new View03BtnRgstAction(this);
		button2.addActionListener(action4);

		// 編集ボタン
		View03BtnEditAction action5 = new View03BtnEditAction(this);
		button3.addActionListener(action5);

		// 戻るボタン
		View03BtnBackAction action6 = new View03BtnBackAction(this);
		button4.addActionListener(action6);



	}

}

CodeName コンボボックス用

package eo.sim.tool.util;

public class CodeName {

	private String code;
	private String name;

	public CodeName(String code ,String name) {
		this.code = code;
		this.name = name;

	}

	public int getSelectIndex(){

		return 0;

	}

	public String getCode() {
		return code;
	}
	public void setCode(String code) {
		this.code = code;
	}
	public String getName() {
		return name;
	}
	public void setName(String name) {
		this.name = name;
	}

	@Override
	public String toString() {
		return code + ":" + name;
	}

	@Override
	public int hashCode() {
		final int prime = 31;
		int result = 1;
		result = prime * result + ((code == null) ? 0 : code.hashCode());
		result = prime * result + ((name == null) ? 0 : name.hashCode());
		return result;
	}

	@Override
	public boolean equals(Object obj) {
		if (this == obj) {
			return true;
		}
		if (obj == null) {
			return false;
		}
		if (getClass() != obj.getClass()) {
			return false;
		}
		CodeName other = (CodeName) obj;
		if (code == null) {
			if (other.code != null) {
				return false;
			}
		} else if (!code.equals(other.code)) {
			return false;
		}
		if (name == null) {
			if (other.name != null) {
				return false;
			}
		} else if (!name.equals(other.name)) {
			return false;
		}
		return true;
	}

}

EmpRgstService サービス

package eo.sim.tool.service;

import java.util.List;

import com.ibatis.sqlmap.client.SqlMapClient;

import eo.sim.tool.dao.CommonDao;
import eo.sim.tool.dao.DeptDao;
import eo.sim.tool.dao.EmpDao;
import eo.sim.tool.dto.Dept;
import eo.sim.tool.dto.Emp;

/**
 * @author kosuk
 *
 */
public class EmpRgstService {

	// 従業員番号
	private String empno = null;
	// 従業員名
	private String empname = null;
	// 職種
	private String job = null;
	// 部署番号
	private String deptno = null;
	// 部署名
	private String dname = null;
	// 上司
	private String manager;
	// 給料
	private float salary;
	// 手数料
	private float commission;



	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;
	}

	public float getCommission() {
		return commission;
	}

	public void setCommission(float commission) {
		this.commission = commission;
	}

	// 部署リスト
	List<Dept> deptList = null;

	public String getEmpno() {
		return empno;
	}

	public void setEmpno(String empno) {
		this.empno = empno;
	}

	public String getEmpname() {
		return empname;
	}

	public void setEmpname(String empName) {
		this.empname = empName;
	}

	public String getJob() {
		return job;
	}

	public void setJob(String job) {
		this.job = job;
	}

	public String getDeptno() {
		return deptno;
	}

	public void setDeptno(String deptno) {
		this.deptno = deptno;
	}

	public String getDname() {
		return dname;
	}

	public void setDname(String dname) {
		this.dname = dname;
	}

	public List<Dept> getDeptList() {
		return deptList;
	}

	public void setDeptList(List<Dept> deptList) {
		this.deptList = deptList;
	}


	/**
	 *
	 * 初期表示
	 *
	 */
	public void init() throws Exception {

		DeptDao deptService = new DeptDao();
		deptList = deptService.getAllDept();

	}

	/**
	 *
	 * ログインユーザーを取得する
	 *
	 */
	public String getLoginUser() throws Exception {

		// 従業員を取得
		CommonDao commonDao = new CommonDao();
		return commonDao.getLoginUser();

	}

	/**
	 *
	 * 従業員情報を検索する
	 *
	 */
	public int getEmpInfo(String empno) throws Exception {

		// 従業員を取得
		EmpDao empDao = new EmpDao();
		Emp emp = empDao.getEmp(empno);
		if (emp == null) {
			return 0;
		}

		empname = emp.getEname();
		job = emp.getJob();
		deptno = Integer.valueOf(emp.getDeptno()).toString();

		// 部署を取得
		DeptDao deptDao = new DeptDao();
		Dept dept = deptDao.getDept(deptno);
		if (dept != null) {
			dname = dept.getDname();
		}
		return 1;

	}

	/**
	 *
	 * 従業員情報を登録する
	 *
	 */
	public void insertEmpInfo() throws Exception {

		// 従業員を生成
		EmpDao empDao = new EmpDao();

		Emp emp = new Emp();

		// 更新情報を設定
		emp.setEmpno(Integer.valueOf(empno).intValue());
		emp.setEname(this.empname);
		emp.setJob(this.job);
		emp.setManager(Integer.valueOf(this.manager).intValue());
		java.util.Date now1  = new java.util.Date();
		java.sql.Date now2 = new java.sql.Date(now1.getTime());
		emp.setHiredate(now2);
		emp.setSalary(this.salary);
		emp.setCommission(this.commission);
		emp.setDeptno(Integer.valueOf(this.deptno).intValue());

		// 従業員を更新
		empDao.insert(emp);

	}

	/**
	 *
	 * 従業員情報を登録する
	 *
	 */
	public void insertEmpInfo(SqlMapClient sqlMap) throws Exception {

		// 従業員を生成
		EmpDao empDao = new EmpDao();

		Emp emp = new Emp();

		// 更新情報を設定
		emp.setEmpno(Integer.valueOf(empno).intValue());
		emp.setEname(this.empname);
		emp.setJob(this.job);
		emp.setManager(Integer.valueOf(this.manager).intValue());
		java.util.Date now1  = new java.util.Date();
		java.sql.Date now2 = new java.sql.Date(now1.getTime());
		emp.setHiredate(now2);
		emp.setSalary(this.salary);
		emp.setCommission(this.commission);
		emp.setDeptno(Integer.valueOf(this.deptno).intValue());

		// 従業員を更新
		empDao.insert(sqlMap, emp);

	}

	/**
	 *
	 * 従業員情報を変更する
	 *
	 */
	public void updateEmpInfo() throws Exception {

		// 従業員を取得
		EmpDao empDao = new EmpDao();
		Emp empUpdate = empDao.getEmp(empno);

		// 更新情報を設定
		empUpdate.setEname(empname);
		empUpdate.setJob(job);
		empUpdate.setDeptno(Integer.valueOf(deptno).intValue());

		// 従業員を更新
		empDao.update(empUpdate);


	}
}

Emp DTO

package eo.sim.tool.dto;

import java.sql.Date;

public class Emp {
	private int empno;
	private String ename;
	private String job;
	private int 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 int getManager() {
		return manager;
	}
	public void setManager(int manager) {
		this.manager = manager;
	}
	public float getSalary() {
		return salary;
	}
	public void setSalary(float salary) {
		this.salary = salary;
	}

	@Override
	public String toString() {
		return "[empno=" + empno
				+ ", ename=" + ename
				+ ", job=" + job
				+ ", manager=" + manager
				+ ", hiredate=" + hiredate
				+ ", salary=" + salary
				+ ", commistion=" + commission
				+ ", depno=" + deptno
				+ "]";		//Commons-LangのToStringBuilderを使うと楽

	}
}

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

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

	<select id="allEmpAsXml" resultClass="xml" xmlResultName="DEPTNO">
		SELECT
			EMPNO,
			ENAME,
			JOB,
			MGR                 as manager,
			HIREDATE,
			SAL                 as salary,
			COALESCE(COMM, 0.0)    as commission,
			DEPTNO
		FROM EMP
	</select>

	<!-- resultMapを記述してIBATISの機能でマッピングする方法
		DBに依存しない記述 -->
	<resultMap id="rm1" class="eo.sim.tool.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="eo.sim.tool.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="eo.sim.tool.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>

	<!-- 行の追加 -->
	<insert id="insertEmp" parameterClass="eo.sim.tool.dto.Emp">
		INSERT INTO EMP(EMPNO, ENAME, JOB, MGR, HIREDATE, SAL, COMM, DEPTNO)
		VALUES(#empno#, #ename#, #job#, #manager#, #hiredate#, #salary#, #commission#, #deptno#)
	</insert>

	<!-- 行の更新 -->
	<update id="updateEmp" parameterClass="eo.sim.tool.dto.Emp">
		UPDATE EMP SET EMPNO = #empno#, ENAME = #ename#, JOB = #job#, MGR = #manager#, HIREDATE = #hiredate#, SAL = #salary#, COMM = #commission#, DEPTNO = #deptno#
		WHERE EMPNO = #empno#
	</update>

</sqlMap>

MyAppSqlConfig

package eo.sim.tool.dao;

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 = "SqlMapConfig.xml";
			Reader reader = Resources.getResourceAsReader(resource);
			sqlMap = SqlMapClientBuilder.buildSqlMapClient(reader);
		} catch (Exception e) {
			e.printStackTrace();
		}
	}
	public static SqlMapClient getSqlMapInstance(){
		//Singletoneとして利用
		return sqlMap;
	}
}

EmpDao

package eo.sim.tool.dao;

import java.util.Map;

import com.ibatis.sqlmap.client.SqlMapClient;

import eo.sim.tool.dto.Emp;

public class EmpDao {

	/**
	 *
	 * 従業員を検索検索
	 *
	 */
	public Emp getEmp(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;

	}

	/**
	 *
	 * 従業員を登録する
	 *
	 */
	public void insert(Emp emp) throws Exception {

		SqlMapClient sqlMap = MyAppSqlConfig.getSqlMapInstance();

		// INSERT文の実行
		// 引数として作成済みのdeptを渡す
		sqlMap.insert("insertEmp", emp);

	}

	/**
	 *
	 * 従業員を登録する
	 *
	 */
	public void insert(SqlMapClient sqlMap, Emp emp) throws Exception {

		// INSERT文の実行
		// 引数として作成済みのdeptを渡す
		sqlMap.insert("insertEmp", emp);

	}
	/**
	 *
	 * 従業員を変更する
	 *
	 */
	public void update(Emp emp) throws Exception {
		SqlMapClient sqlMap = MyAppSqlConfig.getSqlMapInstance();

		// UPDATE文の実行
		// 引数として作成済みのdeptを渡す
		sqlMap.update("updateEmp", emp);

	}

	@SuppressWarnings("unchecked")
	public String getEmpName(String empno) throws Exception {

		SqlMapClient sqlMap = MyAppSqlConfig.getSqlMapInstance();

		int intEmpno = (Integer.valueOf(empno)).intValue();

		// dtoに格納
		Emp emp = (Emp)sqlMap.queryForObject("getEmpByEmpno",intEmpno);

		// MAP<"列",<"列", "データ">>に格納
		System.out.println("getEmpByEmpno");
		Map<String, Object>  map1 = sqlMap.queryForMap("getEmpByEmpno",intEmpno, "deptno");

		Map<String, Object>  map2 = sqlMap.queryForMap("getEmpByEmpno",intEmpno, "empno");

		Map<String, Object>  map4 = sqlMap.queryForMap("getEmpByEmpno",intEmpno, "empno","ename");

		// MAP<"列",<"列", "データ">>に格納
		Map<String, Object>  map3 = sqlMap.queryForMap("allEmp1",intEmpno, "empno");
		Map<String, Object>  map5 = sqlMap.queryForMap("allEmp1",intEmpno, "empno","ename");

		System.out.println(map1.toString());
		System.out.println(map2.toString());
		System.out.println(map4.toString());
		System.out.println("");
		System.out.println("allEmp1");
		System.out.println(map3.toString());
		System.out.println(map5.toString());

		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();

	}

}

アクション

View03BtnBackAction

package eo.sim.tool.action;

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

import eo.sim.tool.view.AA103EmpFrame;
import eo.sim.tool.view.AA102MenuFrame;

public class View03BtnBackAction implements ActionListener {

    private AA103EmpFrame view03;

    public View03BtnBackAction(AA103EmpFrame view) {
        this.view03 = view;
    }

    // イベントハンドラ (イベント発生時に自動的に呼び出される)
    public void actionPerformed(ActionEvent e) {

		AA102MenuFrame frame = new AA102MenuFrame();
		frame.init(frame);

		// 遷移元を破棄
		this.view03.dispose();

    }
}

View03BtnBulkRgstAction21

package eo.sim.tool.action;

import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.sql.SQLException;

import javax.swing.JOptionPane;

import com.ibatis.sqlmap.client.SqlMapClient;

import eo.sim.tool.dao.MyAppSqlConfig;
import eo.sim.tool.service.EmpRgstService;
import eo.sim.tool.view.AA102MenuFrame;

public class View03BtnBulkRgstAction21 implements ActionListener {
	private AA102MenuFrame view;

	public View03BtnBulkRgstAction21(AA102MenuFrame view) {
		this.view = view;
	}

	// イベントハンドラ (イベント発生時に自動的に呼び出される)
	public void actionPerformed(ActionEvent e) {

		int option = JOptionPane.showConfirmDialog(view, "一括登録してもよろしいですか。", "確認", JOptionPane.YES_NO_OPTION , JOptionPane.QUESTION_MESSAGE);
		if (option == JOptionPane.NO_OPTION){
			return;
		}

		// SqlMapClientを取得
		SqlMapClient sqlMap = MyAppSqlConfig.getSqlMapInstance();
		try {

			// トランザクション開始
			sqlMap.startTransaction();

			// 一括バッチ処理開始
			sqlMap.startBatch();

			// 従業員を取得
			EmpRgstService empRgstService = new EmpRgstService();

			// 更新情報の設定
			empRgstService.setEmpno("10002");
			empRgstService.setEmpname("一括登録テスト");
			empRgstService.setJob("仕事1");
			empRgstService.setDeptno("10");
			// デフォルト値で設定
			empRgstService.setManager("7902");
			empRgstService.setSalary(1230);
			empRgstService.setCommission(12.2F);

			// 従業員情報を登録する
			empRgstService.insertEmpInfo(sqlMap);

			empRgstService.setEmpno("10003");
			empRgstService.setJob("仕事2");
			empRgstService.insertEmpInfo(sqlMap);

			// 一括バッチ処理実行
			sqlMap.executeBatch();
			// コミット
			sqlMap.commitTransaction();

			JOptionPane.showConfirmDialog(view, "一括登録が完了しました", "情報", JOptionPane.DEFAULT_OPTION , JOptionPane.INFORMATION_MESSAGE);

		} catch (Exception e1) {
			// TODO 自動生成された catch ブロック
			e1.printStackTrace();
			JOptionPane.showConfirmDialog(view, e1.getMessage(), "エラー", JOptionPane.DEFAULT_OPTION , JOptionPane.ERROR_MESSAGE);
		} finally {
			try {
				// トランザクション終了
				sqlMap.endTransaction();
			} catch (SQLException e1) {
				// TODO 自動生成された catch ブロック
				e1.printStackTrace();
			}
		}


	}
}

View03BtnBulkRgstAction22

package eo.sim.tool.action;

import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.sql.SQLException;

import javax.swing.JOptionPane;

import com.ibatis.sqlmap.client.SqlMapClient;

import eo.sim.tool.dao.MyAppSqlConfig;
import eo.sim.tool.service.EmpRgstService;
import eo.sim.tool.view.AA102MenuFrame;

public class View03BtnBulkRgstAction22 implements ActionListener {
	private AA102MenuFrame view;

	public View03BtnBulkRgstAction22(AA102MenuFrame view) {
		this.view = view;
	}

	// イベントハンドラ (イベント発生時に自動的に呼び出される)
	public void actionPerformed(ActionEvent e) {

		int option = JOptionPane.showConfirmDialog(view, "一括登録してもよろしいですか。", "確認", JOptionPane.YES_NO_OPTION , JOptionPane.QUESTION_MESSAGE);
		if (option == JOptionPane.NO_OPTION){
			return;
		}

		// SqlMapClientを取得
		SqlMapClient sqlMap = MyAppSqlConfig.getSqlMapInstance();
		try {

			// トランザクション開始
			sqlMap.startTransaction();

			// 一括バッチ処理開始
//			sqlMap.startBatch();

			// 従業員を取得
			EmpRgstService empRgstService = new EmpRgstService();

			// 更新情報の設定
			empRgstService.setEmpno("10002");
			empRgstService.setEmpname("一括登録テスト");
			empRgstService.setJob("仕事1");
			empRgstService.setDeptno("10");
			// デフォルト値で設定
			empRgstService.setManager("7902");
			empRgstService.setSalary(1230);
			empRgstService.setCommission(12.2F);

			// 従業員情報を登録する
			empRgstService.insertEmpInfo();

			empRgstService.setEmpno("10003");
			empRgstService.setJob("仕事2");
			empRgstService.insertEmpInfo();

			// 一括バッチ処理実行
//			sqlMap.executeBatch();

			// コミット
			sqlMap.commitTransaction();

			JOptionPane.showConfirmDialog(view, "一括登録が完了しました", "情報", JOptionPane.DEFAULT_OPTION , JOptionPane.INFORMATION_MESSAGE);

		} catch (Exception e1) {
			// TODO 自動生成された catch ブロック
			e1.printStackTrace();
			JOptionPane.showConfirmDialog(view, e1.getMessage(), "エラー", JOptionPane.DEFAULT_OPTION , JOptionPane.ERROR_MESSAGE);
		} finally {
			try {
				// トランザクション終了
				sqlMap.endTransaction();
			} catch (SQLException e1) {
				// TODO 自動生成された catch ブロック
				e1.printStackTrace();
			}
		}


	}
}

View03BtnBulkRgstAction3

package eo.sim.tool.action;

import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.sql.SQLException;

import javax.swing.JOptionPane;

import org.springframework.util.StopWatch;

import com.ibatis.sqlmap.client.SqlMapClient;

import eo.sim.tool.dao.MyAppSqlConfig;
import eo.sim.tool.service.EmpRgstService;
import eo.sim.tool.view.AA102MenuFrame;

public class View03BtnBulkRgstAction3 implements ActionListener {
	private AA102MenuFrame view;
	private boolean batchMode;

	public boolean isBatchMode() {
		return batchMode;
	}

	public void setBatchMode(boolean batchMode) {
		this.batchMode = batchMode;
	}

	public View03BtnBulkRgstAction3(AA102MenuFrame view) {
		this.view = view;
	}

	public View03BtnBulkRgstAction3(AA102MenuFrame view,boolean batchMode) {
		this.view = view;
		this.batchMode = batchMode;
	}

	// イベントハンドラ (イベント発生時に自動的に呼び出される)
	public void actionPerformed(ActionEvent e) {

		int option = JOptionPane.showConfirmDialog(view, "バッチ登録してもよろしいですか。", "確認", JOptionPane.YES_NO_OPTION , JOptionPane.QUESTION_MESSAGE);
		if (option == JOptionPane.NO_OPTION){
			return;
		}

		SqlMapClient sqlMap = MyAppSqlConfig.getSqlMapInstance();
		try {

			StopWatch stopWatch = new StopWatch();
			stopWatch.start();

			// トランザクション開始
			sqlMap.startTransaction();

			// 一括バッチ処理開始
			if (this.isBatchMode()) {
				sqlMap.startBatch();
			}

			for (int i=25001;i<30001;i++) {
				// 従業員を取得
				EmpRgstService empRgstService = new EmpRgstService();

				// 更新情報の設定
				empRgstService.setEmpno(String.valueOf(i).toString());
				empRgstService.setEmpname("一括登録テスト");
				empRgstService.setJob("仕事1");
				empRgstService.setDeptno("10");
				// デフォルト値で設定
				empRgstService.setManager("7902");
				empRgstService.setSalary(1230);
				empRgstService.setCommission(12.2F);

				// 従業員情報を登録する
				empRgstService.insertEmpInfo(sqlMap);
			}

			if (this.isBatchMode()) {
				// 一括バッチ処理実行
				sqlMap.executeBatch();
			}
			// コミット
			sqlMap.commitTransaction();
			stopWatch.stop();
			System.out.printf("バッチモード:["+ this.isBatchMode() +"]insert:%s\n\n", stopWatch);

			JOptionPane.showConfirmDialog(view, "バッチ登録が完了しました", "情報", JOptionPane.DEFAULT_OPTION , JOptionPane.INFORMATION_MESSAGE);

		} catch (Exception e1) {
			// TODO 自動生成された catch ブロック
			e1.printStackTrace();
			JOptionPane.showConfirmDialog(view, e1.getMessage(), "エラー", JOptionPane.DEFAULT_OPTION , JOptionPane.ERROR_MESSAGE);
		} finally {
			try {
				// トランザクション終了
				sqlMap.endTransaction();
			} catch (SQLException e1) {
				// TODO 自動生成された catch ブロック
				e1.printStackTrace();
			}
		}


	}
}

View03BtnEditAction

package eo.sim.tool.action;

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

import javax.swing.JOptionPane;

import eo.sim.tool.service.EmpRgstService;
import eo.sim.tool.util.CodeName;
import eo.sim.tool.view.AA103EmpFrame;

public class View03BtnEditAction implements ActionListener {
    private AA103EmpFrame view;

    public View03BtnEditAction(AA103EmpFrame view) {
        this.view = view;
    }

    // イベントハンドラ (イベント発生時に自動的に呼び出される)
    public void actionPerformed(ActionEvent e) {

		int option = JOptionPane.showConfirmDialog(view, "更新してもよろしいですか。", "確認", JOptionPane.YES_NO_OPTION , JOptionPane.QUESTION_MESSAGE);
	    if (option == JOptionPane.NO_OPTION){
	    	return;
	    }

		try {

			// 従業員を取得
			EmpRgstService empRgstService = new EmpRgstService();

			// 更新情報の設定
			empRgstService.setEmpno(view.getText_21().getText());
			empRgstService.setEmpname(view.getText_22().getText());
			empRgstService.setJob(view.getText_23().getText());

//			String[] deptArray = view.getComboBox_24().getSelectedItem().toString().split(":");
//			empRgstService.setDeptno(deptArray[0]);
			CodeName codeName = (CodeName)view.getComboBox_24().getSelectedItem();
			empRgstService.setDeptno(codeName.getCode());

			// 従業員情報を変更する
			empRgstService.updateEmpInfo();

			JOptionPane.showConfirmDialog(view, "更新が完了しました", "情報", JOptionPane.DEFAULT_OPTION , JOptionPane.INFORMATION_MESSAGE);

		} catch (Exception e1) {
			// TODO 自動生成された catch ブロック
			e1.printStackTrace();
		}


    }
}

View03BtnRgstAction

package eo.sim.tool.action;

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

import javax.swing.JOptionPane;

import eo.sim.tool.service.EmpRgstService;
import eo.sim.tool.util.CodeName;
import eo.sim.tool.view.AA103EmpFrame;

public class View03BtnRgstAction implements ActionListener {
    private AA103EmpFrame view;

    public View03BtnRgstAction(AA103EmpFrame view) {
        this.view = view;
    }

    // イベントハンドラ (イベント発生時に自動的に呼び出される)
    public void actionPerformed(ActionEvent e) {

		int option = JOptionPane.showConfirmDialog(view, "登録してもよろしいですか。", "確認", JOptionPane.YES_NO_OPTION , JOptionPane.QUESTION_MESSAGE);
	    if (option == JOptionPane.NO_OPTION){
	    	return;
	    }

		try {

			// 従業員を取得
			EmpRgstService empRgstService = new EmpRgstService();

			// 更新情報の設定
			empRgstService.setEmpno(view.getText_21().getText());
			empRgstService.setEmpname(view.getText_22().getText());
			empRgstService.setJob(view.getText_23().getText());

//			String[] deptArray = view.getComboBox_24().getSelectedItem().toString().split(":");
//			empRgstService.setDeptno(deptArray[0]);
			CodeName codeName = (CodeName)view.getComboBox_24().getSelectedItem();
			empRgstService.setDeptno(codeName.getCode());

			// デフォルト値で設定
			empRgstService.setManager("7902");
			empRgstService.setSalary(1230);
			empRgstService.setCommission(12.2F);

			// 従業員情報を登録する
			empRgstService.insertEmpInfo();

			JOptionPane.showConfirmDialog(view, "登録が完了しました", "情報", JOptionPane.DEFAULT_OPTION , JOptionPane.INFORMATION_MESSAGE);

		} catch (Exception e1) {
			// TODO 自動生成された catch ブロック
			e1.printStackTrace();
		}


    }
}

View03BtnSearchAction

package eo.sim.tool.action;

import java.awt.Color;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

import javax.swing.JOptionPane;
import javax.swing.JTextField;

import eo.sim.tool.service.EmpRgstService;
import eo.sim.tool.util.CodeName;
import eo.sim.tool.view.AA103EmpFrame;

public class View03BtnSearchAction implements ActionListener {
    private AA103EmpFrame view;

    public View03BtnSearchAction(AA103EmpFrame view) {
        this.view = view;
    }

    // イベントハンドラ (イベント発生時に自動的に呼び出される)
    public void actionPerformed(ActionEvent e) {

		try {

			// 従業員番号(検索用)
			JTextField text_12 = view.getText_12();
			if ("".equals(text_12.getText())){
				JOptionPane.showConfirmDialog(view, "従業員番号が入力されていません。", "エラー", JOptionPane.DEFAULT_OPTION , JOptionPane.ERROR_MESSAGE);
				text_12.setBackground(Color.CYAN);
				return;
			}

			// 従業員を取得
			EmpRgstService empRgstService = new EmpRgstService();
			int count = empRgstService.getEmpInfo(text_12.getText());
			if (count == 0) {
				JOptionPane.showConfirmDialog(view, "対象データがありません。", "エラー", JOptionPane.DEFAULT_OPTION , JOptionPane.ERROR_MESSAGE);
				return;
			}

			// 画面へ設定
			view.getText_21().setText(text_12.getText());
			view.getText_22().setText(empRgstService.getEmpname());
			view.getText_23().setText(empRgstService.getJob());

			CodeName codename = new CodeName(Integer.valueOf(empRgstService.getDeptno()).toString() ,empRgstService.getDname());
			view.getComboBox_24().setSelectedItem(codename);

    		view.getButton3().setEnabled(true);
//			text_12.setBackground(Color.WHITE);


		} catch (Exception e1) {
			// TODO 自動生成された catch ブロック
			e1.printStackTrace();
		}


    }
}

View03RdoEditModeAction

package eo.sim.tool.action;

import java.awt.event.ItemEvent;
import java.awt.event.ItemListener;

import eo.sim.tool.view.AA103EmpFrame;

public class View03RdoEditModeAction implements ItemListener {

    private AA103EmpFrame view;

    public View03RdoEditModeAction(AA103EmpFrame view) {
        this.view = view;
    }

	@Override
	public void itemStateChanged(ItemEvent e) {


		// ラジオボタン変更時に2回呼び出される
		// 呼び出し1回目はラジオボタンが未選択状態になったタイミング(2つとも未選択状態)
		// 呼び出し2回目はラジオボタンが選択状態になったタイミング(どちらかが選択状態)
		// よって下記の選択状態を判定する必要がある
    	if (view.getRadio1().isSelected()) {

    		view.getText_12().setEnabled(false);
    		view.getText_12().setEditable(false);
    		view.getText_12().setText("");

    		view.getText_21().setEnabled(true);
    		view.getText_21().setEditable(true);

    		view.getButton1().setEnabled(false);
    		view.getButton2().setEnabled(true);
    		view.getButton3().setEnabled(false);

    	}

    	if (view.getRadio2().isSelected()) {

			view.getText_12().setEnabled(true);
			view.getText_12().setEditable(true);

			view.getText_21().setEnabled(false);
			view.getText_21().setEditable(false);

			view.getButton1().setEnabled(true);
			view.getButton2().setEnabled(false);
			view.getButton3().setEnabled(false);
    	}

		view.setDefault(view);

	}
}

View04BtnSeniEmpRgstAction

package eo.sim.tool.action;

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

import eo.sim.tool.view.AA103EmpFrame;
import eo.sim.tool.view.AA102MenuFrame;

public class View04BtnSeniEmpRgstAction implements ActionListener {
    private AA102MenuFrame view04;

    public View04BtnSeniEmpRgstAction(AA102MenuFrame view) {
        this.view04 = view;
    }

    // イベントハンドラ (イベント発生時に自動的に呼び出される)
    public void actionPerformed(ActionEvent e) {

		AA103EmpFrame view03 = new AA103EmpFrame();

		view03.init(view03);
		view04.dispose();
    }
}
スポンサーリンク
google 6948682462
google 6948682462

シェアする

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

フォローする

スポンサーリンク
google 6948682462