Ibatis2.X 入门 代码示例

说明:本例用的数据库为MySql5.5 数据库名称:mis   表:T_PW_DICT      Ibatis版本为2.3       首先到入其jar包 ibatis-2.3.0.677.jar    和连接mysql用到的jar包。

 

建表语句:

--创建夏米管理信息系统数据字典表
create table T_PW_DICT(
    P_ID INT(8) PRIMARY KEY AUTO_INCREMENT,
    P_DICT_CODE VARCHAR(20),      --字典编号
    P_DICT_NAME VARCHAR(80) NOT NULL,  --字典名称
    P_PROJ_CODE VARCHAR(20) NOT NULL,  --项目编号
    P_PROJ_NAME VARCHAR2(80) NOT NULL,  --项目名称

    P_FLAG INT(1) DEFAULT 1,     --标记,是否有效   1有效  0无效
    P_BEIZHU VARCHAR(100)        --备注
)


注:以下所有的文件均放在com.xiami包下。

1. 新建Ibatis2.X主配置文件  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>

	<!-- 直接把数据库连接配置写到SqlMapConfig.xml主配置文件中 -->
	<!-- 
	<transactionManager type="JDBC">
		<dataSource type="SIMPLE">
			<property name="JDBC.Driver" value="com.mysql.jdbc.Driver" />
			<property name="JDBC.ConnectionURL" value="jdbc:mysql://127.0.0.1:3306/mis" />
			<property name="JDBC.Username" value="root" />
			<property name="JDBC.Password" value="root" />
		</dataSource>
	</transactionManager>
	-->
	
	<!-- 通过Properties配置文件方式把数据库连接配置引入到SqlMapConfig.xml主配置文件中 -->
	<properties resource="com/xiami/SqlMap.properties"/>
	<transactionManager type="JDBC">
		<dataSource type="SIMPLE">
			<property name="JDBC.Driver" value="${driver}" />
			<property name="JDBC.ConnectionURL" value="${url}" />
			<property name="JDBC.Username" value="${username}" />
			<property name="JDBC.Password" value="${password}" />
		</dataSource>
	</transactionManager>

	<sqlMap resource="com/xiami/TPwDict.xml" />
</sqlMapConfig>


 

2.新建数据库连接信息的Properties文件     SqlMap.properties

driver=com.mysql.jdbc.Driver
url=jdbc:mysql://127.0.0.1:3306/mis
username=root
password=root


 

3.新建POJO类   TPwDict.java

package com.xiami;

public class TPwDict {
	private int pid;
	private String pdictcode;
	private String pdictname;
	private String pprojcode;
	private String pprojname;
	private int pflag;
	private String pbeizhu;
	public int getPid() {
		return pid;
	}
	public void setPid(int pid) {
		this.pid = pid;
	}
	public String getPdictcode() {
		return pdictcode;
	}
	public void setPdictcode(String pdictcode) {
		this.pdictcode = pdictcode;
	}
	public String getPdictname() {
		return pdictname;
	}
	public void setPdictname(String pdictname) {
		this.pdictname = pdictname;
	}
	public String getPprojcode() {
		return pprojcode;
	}
	public void setPprojcode(String pprojcode) {
		this.pprojcode = pprojcode;
	}
	public String getPprojname() {
		return pprojname;
	}
	public void setPprojname(String pprojname) {
		this.pprojname = pprojname;
	}
	public int getPflag() {
		return pflag;
	}
	public void setPflag(int pflag) {
		this.pflag = pflag;
	}
	public String getPbeizhu() {
		return pbeizhu;
	}
	public void setPbeizhu(String pbeizhu) {
		this.pbeizhu = pbeizhu;
	}

	 @Override
	 public String toString() {
	 String content = "P_ID="+pid+"\tP_DICT_CODE="+pdictcode+"\tP_DICT_NAME="+pdictname+"\tP_PROJ_CODE="+pprojcode+"\tp_PROJ_NAME="+pprojname+"\tP_FLAG="+pflag+"\tP_BEIZHU="+pbeizhu;
	 return content;
	 }
	
}	


4.新建实体类TPwDict.java对应的映射文件  TPwDict.xml

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE sqlMap PUBLIC "-//iBATIS.com//DTD SQL Map 2.0//EN"
"http://www.ibatis.com/dtd/sql-map-2.dtd">

<sqlMap>
	<typeAlias alias="TPwDict" type="com.xiami.TPwDict" />
	
	<!-- 配置数据库返回的字段与实体类属性的对应关系 -->
	<resultMap id="TPwDictResult" class="TPwDict">
	    <result property="pid" column="P_ID"/>
	    <result property="pdictcode" column="P_DICT_CODE"/>
	    <result property="pdictname" column="P_DICT_NAME"/>
	    <result property="pprojname" column="P_PROJ_NAME"/>
	    <result property="pprojcode" column="P_PROJ_CODE"/>
	    <result property="pflag" column="P_FLAG"/>
	    <result property="pbeizhu" column="P_BEIZHU"/>
  	</resultMap>
	
	<select id="selectAllTPwDict" resultMap="TPwDictResult">
		select * 
		from t_pw_dict
	</select>
	<select id="selectTPwDictById" parameterClass="int" resultMap="TPwDictResult">
		select *
		from t_pw_dict
		where P_ID = #pid#
	</select>
	<select id="selectTPwDictByPDictName" parameterClass="String" resultMap="TPwDictResult">
		select *
		from t_pw_dict
		where P_DICT_NAME = #P_DICT_NAME# limit 1
	</select>
	<select id="selectTPwDictByPDictNameAndPProjName" parameterClass="Map" resultMap="TPwDictResult">
		select *
		from t_pw_dict
		where P_DICT_NAME = #1# and P_PROJ_NAME = #2# limit 1
	</select>
	
	<select id="selectTPwDictByName" parameterClass="String" resultMap="TPwDictResult">
		select *
		from t_pw_dict
		where P_DICT_NAME like '%$pdictname$%'
	</select>
	
	<insert id="addTPwDict" parameterClass="TPwDict">
		insert into
		t_pw_dict
		(
			P_ID,	P_DICT_CODE,	P_DICT_NAME,	P_PROJ_CODE,	P_PROJ_NAME,	P_FLAG,		P_BEIZHU
		)
		values
		(
			#pid#,	#pdictcode#,	#pdictname#,	#pprojcode#,	#pprojname#,	#pflag#,	#pbeizhu#
		)
	</insert>
	
	<insert id="insertTPwDictBySequence" parameterClass="TPwDict">
		<selectKey resultClass = "int" keyProperty="pid">
			select t_pw_dictpksequence.nextVal
			from dual
		</selectKey>
		insert into
		t_pw_dict
		(
			P_ID,	P_DICT_CODE,	P_DICT_NAME,	P_PROJ_CODE,	P_PROJ_NAME,	P_FLAG,		P_BEIZHU
		)
		values
		(
			#pid#,	#pdictcode#,	#pdictname#,	#pprojcode#,	#pprojname#,	#pflag#,	#pbeizhu#
		)
	</insert>
	
	<delete id="deleteTPwDictById" parameterClass="int">
		delete
		from t_pw_dict
		where P_ID = #pid#
	</delete>
	
	<delete id="deleteTPwDictByPDictName" parameterClass="String">
		delete
		from t_pw_dict
		where P_DICT_NAME = #pdictname#
	</delete>
	
	<delete id="deleteTPwDictByPDictNameAndPProjName" parameterClass="Map">
		delete
		from t_pw_dict
		where P_DICT_NAME = #1# and P_PROJ_NAME = #2#
	</delete>
	
	<update id="updateTPwDictByID" parameterClass="TPwDict">
		update
			t_pw_dict
		set
			P_DICT_CODE = #pdictcode#,
			P_DICT_NAME = #pdictname#,
			P_PROJ_CODE = #pprojcode#,
			P_PROJ_NAME = #pprojname#,
			P_FLAG = #pflag#,
			P_BEIZHU = #pbeizhu#
		where
			P_ID = #pid#
	</update>
	
	<update id="updateTPwDictByID2" parameterClass="TPwDict">
		update
			t_pw_dict
		set
			P_DICT_CODE = #pdictcode#,
			P_DICT_NAME = #pdictname#,
			P_PROJ_CODE = #pprojcode#
		where
			P_ID = #pid#
	</update>
</sqlMap>



 

5.新建程序测试类  TPwDictDaoImpl.java

package com.xiami;

import java.io.IOException;
import java.io.Reader;
import java.sql.SQLException;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

import com.ibatis.common.resources.Resources;
import com.ibatis.sqlmap.client.SqlMapClient;
import com.ibatis.sqlmap.client.SqlMapClientBuilder;

public class TPwDictDaoImpl {
	
	private static SqlMapClient sqlMapClient = null;
	static{
		try {
			Reader reader = Resources.getResourceAsReader("com/xiami/SqlMapConfig.xml");
			sqlMapClient = SqlMapClientBuilder.buildSqlMapClient(reader);
			reader.close();
		} catch (IOException e) {
			// TODO Auto-generated catch block
			System.out.println("读取SqlMapConfig.xml文件出错.");
			e.printStackTrace();
		}
	}
	
	/*
	 * 查询所有的字典表
	 */
	public List<TPwDict> selectAllTPwDict(){
		List<TPwDict> dList = null;
		
		try {
			dList = sqlMapClient.queryForList("selectAllTPwDict");
		} catch (SQLException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		return dList;
	}
	
	/**
	 * 通过id查找字典数据
	 */
	public TPwDict selectTPwDictById(int p_id){
		TPwDict tpd = null;
		try {
			tpd = (TPwDict) sqlMapClient.queryForObject("selectTPwDictById",p_id);
		} catch (SQLException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		return tpd;
	}
	
	/**
	 * 通过PDictName查找字典数据
	 */
	public TPwDict selectTPwDictByPDictName(String P_DICT_NAME){
		TPwDict tpd = null;
		try {
			tpd = (TPwDict) sqlMapClient.queryForObject("selectTPwDictByPDictName",P_DICT_NAME);
		} catch (SQLException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		return tpd;
	}
	
	/**
	 * 通过p_dict_name和p_proj_name 多个条件查询某条记录
	 * @param map
	 * @return
	 */
	public TPwDict selectTPwDictByPDictNameAndPProjName(Map map){
		TPwDict tpd = null;
		try {
			tpd = (TPwDict) sqlMapClient.queryForObject("selectTPwDictByPDictNameAndPProjName",map);
		} catch (SQLException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		return tpd;
	}
	
	/**
	 * 模糊查询
	 * 在xml配置文件中的写法应注意  like '%$pdictname$%'
	 */
	public List<TPwDict> selectTPwDictByName(String pdictname){
		List<TPwDict> dList = null;
		
		try {
			dList = sqlMapClient.queryForList("selectTPwDictByName",pdictname);
		} catch (SQLException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		return dList;
	}
	
	/**
	 * 添加一条记录 由程序中手动设置主键值
	 * @param tpd
	 */
	public void addTPwDict(TPwDict tpd){
		try {
			sqlMapClient.insert("addTPwDict",tpd);
		} catch (SQLException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
	}
	
	/**
	 * 添加一条记录 由数据库序列自动生成主键值避免重复
	 */
	public void addTPwDictBySequence(TPwDict tpd){
		try {
			sqlMapClient.insert("insertTPwDictBySequence",tpd);
		} catch (SQLException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
	}
	/**
	 * 删除数据通过int型ID号
	 */
	public void deleteTPwDictByID(int id){
		try {
			int i = sqlMapClient.delete("deleteTPwDictById",id);
			System.out.println("删除了 " + i + " 条数据!");
		} catch (SQLException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
	}
	
	/**
	 * 删除数据通过String型P_DICT_NAME
	 */
	public void deleteTPwDictByPDictName(String pdictname){
		try {
			int i = sqlMapClient.delete("deleteTPwDictByPDictName",pdictname);
			System.out.println("删除了 " + i + " 条数据!");
		} catch (SQLException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
	}
	
	/**
	 * 删除数据通过P_DICT_NAME,P_PROJ_NAME两个参数
	 */
	public void deleteTPwDictByPDictNameAndPProjName(Map map){
		try {
			int i = sqlMapClient.delete("deleteTPwDictByPDictNameAndPProjName",map);
			System.out.println("删除了 " + i + " 条数据!");
		} catch (SQLException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
	}
	
	
	/**
	 * 更新操作 通过ID更新整个对象的全部属性
	 */
	public void updateTPwDictByID(TPwDict tpd){
		try {
			int i = sqlMapClient.update("updateTPwDictByID", tpd);
			System.out.println("更新后,受影响的行数 " + i);
		} catch (SQLException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
	}
	
	/**
	 * 更新操作 通过ID更新对象的某些属性
	 */
	public void updateTPwDictByID2(TPwDict tpd){
		try {
			int i = sqlMapClient.update("updateTPwDictByID2", tpd);
			System.out.println("更新后,受影响的行数 " + i);
		} catch (SQLException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
	}
	
	
	
	
	
	/**
	 * 主测试方法
	 * @param args
	 */	
	public static void main(String[] args) {
		TPwDictDaoImpl t = new TPwDictDaoImpl();
		
//------------------------------------------查询操作开始----------------------------------------
		//1查询所有selectAllTPwDict
//		for(TPwDict tpwdict:t.selectAllTPwDict()){
//			System.out.println(tpwdict);
//		}
		
		//2通过id查询某条记录(通过单个条件 int 类型)
//		System.out.println(t.selectTPwDictById(11));
	
		//3通过p_dict_name查询某条记录(通过单个条件 String 类型) 这里很可能有多条记录在sql中用limit 1 取结果集的第一行
//		System.out.println(t.selectTPwDictByPDictName("touxiang"));
		
		//4通过p_dict_name和p_proj_name 多个条件查询某条记录
//		Map map = new HashMap();
//		map.put("1", "touxiang");
//		map.put("2", "touxiang_1");
//		System.out.println(t.selectTPwDictByPDictNameAndPProjName(map));
		
		//5模糊查询
//		for(TPwDict tpwdict:t.selectTPwDictByName("t")){
//			System.out.println(tpwdict);
//		}

//------------------------------------------查询操作结束----------------------------------------


//------------------------------------------插入操作开始----------------------------------------
		//1插入一条数据 程序中指定主键值
//		TPwDict tpd = new TPwDict();
//		
//		tpd.setPid(76);
//		tpd.setPdictcode("1");
//		tpd.setPdictname("ibatis");
//		tpd.setPprojcode("1");
//		tpd.setPprojname("ibatis_1");
//		tpd.setPflag(1);
//		tpd.setPbeizhu("这是ibatis测试时,插入的一条测试数据!");
//		
//		t.addTPwDict(tpd);
		
		//2插入一条数据 主键值由数据库序列产生   mysql 不用设置主键, 建立表 auto_increent  
		//首先要在数据库中建立对应表的序列 oracle为例:create sequence tpwdictPkSequence start with 1 increment by 1;
//		TPwDict tpd = new TPwDict();
//		
//		tpd.setPdictcode("1");
//		tpd.setPdictname("ibatis");
//		tpd.setPprojcode("1");
//		tpd.setPprojname("ibatis_1");
//		tpd.setPflag(1);
//		tpd.setPbeizhu("这是ibatis测试时,插入的一条测试数据!");
//		
//		t.addTPwDictBySequence(tpd);
//------------------------------------------插入操作结束----------------------------------------
		
//------------------------------------------删除操作开始----------------------------------------
		
		//1删除数据(通过int型参数)
//		t.deleteTPwDictByID(76);
		
		
		//2删除数据(通过int型参数)
//		t.deleteTPwDictByPDictName("bumen");
		
		//3删除数据(通过多个条件参数)
//		Map map = new HashMap();
//		map.put("1", "zhiwei");
//		map.put("2", "网站编辑");
//		t.deleteTPwDictByPDictNameAndPProjName(map);

//------------------------------------------删除操作结束----------------------------------------


//------------------------------------------更新操作开始----------------------------------------
		
		//1更新数据(通过ID更新整个对象所有属性)
//		TPwDict tpd = new TPwDict();
//		tpd.setPid(75);
//		tpd.setPdictcode("2");
//		tpd.setPdictname("zhiwei123");
//		tpd.setPprojcode("48123");
//		tpd.setPprojname("语音update111");
//		tpd.setPflag(3);
//		tpd.setPbeizhu("update测试11");
//		t.updateTPwDictByID(tpd);
//		
		
		//2更新数据(通过ID更新整个对象某些属性)
//		TPwDict tpd = new TPwDict();
//		tpd.setPid(75);
//		tpd.setPdictcode("2");
//		tpd.setPdictname("zhiwei123");
//		tpd.setPprojcode("48123");
//		t.updateTPwDictByID2(tpd);

//------------------------------------------更新操作结束----------------------------------------
		
	}

}


 

notice:

通过测试类main方法中的各个调用语句进行测试。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值