说明:本例用的数据库为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方法中的各个调用语句进行测试。