主题:Mybatis3.0查询,保存,更新,删除数据。
近来打算开发一个技术框架,并应用此框架开发出一个论坛,开始打算用sturts2+spring+hibernate+jquery为基础,然后再进行封装,最后形成技术框架,但通过此网站获知mybatis比hibernate更灵活,实用。因此开始逐步接触mybatis。
以下是mybatis3.0的开发实例,使用的java环境jdk5.0,ide为eclipse3.7,数据库是oracle11g。
1.数据环境配置
Xml代码
<?xmlversion="1.0"encoding="UTF-8"?>
<!DOCTYPE configuration PUBLIC "-//mybatis.org//DTD Config 3.0//EN" "mybatis-3-config.dtd">
<configuration>
<!-- - - - - - - 数据库环境配置- - - - - - - - - -->
<environmentsdefault="environments">
<environmentid="eassen">
<transactionManagertype="JDBC"/>
<dataSourcetype="POOLED">
<propertyname="driver"value="oracle.jdbc.driver.OracleDriver"/>
<propertyname="url"value="jdbc:oracle:thin:@127.0.0.1:1521:eassen"/>
<propertyname="username"value="eassen"/>
<propertyname="password"value="oracle"/>
</dataSource>
</environment>
</environments>
<!-- - - - - - - -映射文件路径- - - - - - -->
<mappers>
<mapperresource="com/pojo/sql/DmMydwtMapper.xml"/>
</mappers>
</configuration>
Xml代码
<?xmlversion="1.0"encoding="UTF-8"?>
<!DOCTYPEconfigurationPUBLIC"-//mybatis.org//DTDConfig3.0//EN""mybatis-3-config.dtd">
<configuration>
<!--------数据库环境配置----------->
<environmentsdefault="environments">
<environmentid="eassen">
<transactionManagertype="JDBC"/>
<dataSourcetype="POOLED">
<propertyname="driver"value="oracle.jdbc.driver.OracleDriver"/>
<propertyname="url"value="jdbc:oracle:thin:@127.0.0.1:1521:eassen"/>
<propertyname="username"value="eassen"/>
<propertyname="password"value="oracle"/>
</dataSource>
</environment>
</environments>
<!---------映射文件路径-------->
<mappers>
<mapperresource="com/pojo/sql/DmMydwtMapper.xml"/>
</mappers>
</configuration>
2.数据库表映射(DM_MYDWT)XML文件
Xml代码
<?xmlversion="1.0"encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mappernamespace="com.dao.DmMydwtMapper">
<resultMapid="BaseResultMap"type="com.pojo.DmMydwt">
<idcolumn="MYDWT_DM"property="mydwtDm"jdbcType="CHAR"javaType="String"/>
<resultcolumn="MYDWT_MC"property="mydwtMc"jdbcType="VARCHAR"
javaType="String"/>
<resultcolumn="YXBZ"property="yxbz"jdbcType="CHAR"javaType="String"/>
<resultcolumn="XYBZ"property="xybz"jdbcType="CHAR"javaType="String"/>
</resultMap>
<sqlid="Base_Column_List">
MYDWT_DM, MYDWT_MC, YXBZ, XYBZ
</sql>
<selectid="selectByPrimaryKey"resultMap="BaseResultMap"
parameterType="java.lang.String">
select
<includerefid="Base_Column_List"/>
from EASSEN.DM_MYDWT
whereMYDWT_DM= #{mydwtDm,jdbcType=CHAR}
</select>
<deleteid="deleteByPrimaryKey"parameterType="java.lang.String"
flushCache="true">
delete from EASSEN.DM_MYDWT
whereMYDWT_DM=
#{mydwtDm,jdbcType=CHAR}
</delete>
<insertid="insert"parameterType="com.pojo.DmMydwt"flushCache="true">
insert into EASSEN.DM_MYDWT (MYDWT_DM, MYDWT_MC, YXBZ,
XYBZ)
values
(#{mydwtDm,jdbcType=CHAR}, #{mydwtMc,jdbcType=VARCHAR},
#{yxbz,jdbcType=CHAR},
#{xybz,jdbcType=CHAR})
</insert>
<insertid="insertSelective"parameterType="com.pojo.DmMydwt"
flushCache="true">
insert into EASSEN.DM_MYDWT
<trimprefix="("suffix=")"suffixOverrides=",">
MYDWT_DM,
MYDWT_MC,
YXBZ,
XYBZ,
</trim>
<trimprefix="values ("suffix=")"suffixOverrides=",">
#{mydwtDm,jdbcType=CHAR},
#{mydwtMc},
#{yxbz,jdbcType=CHAR},
#{xybz,jdbcType=CHAR},
</trim>
</insert>
<updateid="updateByPrimaryKeySelective"parameterType="com.pojo.DmMydwt"
flushCache="true">
update EASSEN.DM_MYDWT
<set>
<iftest="mydwtMc != null">
MYDWT_MC= #{mydwtMc,jdbcType=VARCHAR},
</if>
<iftest="yxbz != null">
YXBZ= #{yxbz,jdbcType=CHAR},
</if>
<iftest="xybz != null">
XYBZ= #{xybz,jdbcType=CHAR},
</if>
</set>
whereMYDWT_DM= #{mydwtDm,jdbcType=CHAR}
</update>
<updateid="updateByPrimaryKey"parameterType="com.pojo.DmMydwt"
flushCache="true">
update EASSEN.DM_MYDWT
setMYDWT_MC=
#{mydwtMc,jdbcType=VARCHAR},
YXBZ= #{yxbz,jdbcType=CHAR},
XYBZ=
#{xybz,jdbcType=CHAR}
whereMYDWT_DM= #{mydwtDm,jdbcType=CHAR}
</update>
</mapper>
Xml代码
<?xmlversion="1.0"encoding="UTF-8"?>
<!DOCTYPEmapperPUBLIC"-//mybatis.org//DTDMapper3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mappernamespace="com.dao.DmMydwtMapper">
<resultMapid="BaseResultMap"type="com.pojo.DmMydwt">
<idcolumn="MYDWT_DM"property="mydwtDm"jdbcType="CHAR"javaType="String"/>
<resultcolumn="MYDWT_MC"property="mydwtMc"jdbcType="VARCHAR"
javaType="String"/>
<resultcolumn="YXBZ"property="yxbz"jdbcType="CHAR"javaType="String"/>
<resultcolumn="XYBZ"property="xybz"jdbcType="CHAR"javaType="String"/>
</resultMap>
<sqlid="Base_Column_List">
MYDWT_DM,MYDWT_MC,YXBZ,XYBZ
</sql>
<selectid="selectByPrimaryKey"resultMap="BaseResultMap"
parameterType="java.lang.String">
select
<includerefid="Base_Column_List"/>
fromEASSEN.DM_MYDWT
whereMYDWT_DM=#{mydwtDm,jdbcType=CHAR}
</select>
<deleteid="deleteByPrimaryKey"parameterType="java.lang.String"
flushCache="true">
deletefromEASSEN.DM_MYDWT
whereMYDWT_DM=
#{mydwtDm,jdbcType=CHAR}
</delete>
<insertid="insert"parameterType="com.pojo.DmMydwt"flushCache="true">
insertintoEASSEN.DM_MYDWT(MYDWT_DM,MYDWT_MC,YXBZ,
XYBZ)
values
(#{mydwtDm,jdbcType=CHAR},#{mydwtMc,jdbcType=VARCHAR},
#{yxbz,jdbcType=CHAR},
#{xybz,jdbcType=CHAR})
</insert>
<insertid="insertSelective"parameterType="com.pojo.DmMydwt"
flushCache="true">
insertintoEASSEN.DM_MYDWT
<trimprefix="("suffix=")"suffixOverrides=",">
MYDWT_DM,
MYDWT_MC,
YXBZ,
XYBZ,
</trim>
<trimprefix="values("suffix=")"suffixOverrides=",">
#{mydwtDm,jdbcType=CHAR},
#{mydwtMc},
#{yxbz,jdbcType=CHAR},
#{xybz,jdbcType=CHAR},
</trim>
</insert>
<updateid="updateByPrimaryKeySelective"parameterType="com.pojo.DmMydwt"
flushCache="true">
updateEASSEN.DM_MYDWT
<set>
<iftest="mydwtMc!=null">
MYDWT_MC=#{mydwtMc,jdbcType=VARCHAR},
</if>
<iftest="yxbz!=null">
YXBZ=#{yxbz,jdbcType=CHAR},
</if>
<iftest="xybz!=null">
XYBZ=#{xybz,jdbcType=CHAR},
</if>
</set>
whereMYDWT_DM=#{mydwtDm,jdbcType=CHAR}
</update>
<updateid="updateByPrimaryKey"parameterType="com.pojo.DmMydwt"
flushCache="true">
updateEASSEN.DM_MYDWT
setMYDWT_MC=
#{mydwtMc,jdbcType=VARCHAR},
YXBZ=#{yxbz,jdbcType=CHAR},
XYBZ=
#{xybz,jdbcType=CHAR}
whereMYDWT_DM=#{mydwtDm,jdbcType=CHAR}
</update>
</mapper>
3.数据库表(DM_MYDWT)java
Java代码
packagecom.pojo;
importjava.io.Serializable;
publicclassDmMydwtimplementsSerializable {
/**
*
*/
privatestaticfinallongserialVersionUID = 1078518054837885063L;
/**
* EASSEN.DM_MYDWT.MYDWT_DM
* @ibatorgenerated 2012-02-05 20:14:30
*/
privateString mydwtDm;
/**
* EASSEN.DM_MYDWT.MYDWT_MC
* @ibatorgenerated 2012-02-05 20:14:30
*/
privateString mydwtMc;
/**
* EASSEN.DM_MYDWT.YXBZ
* @ibatorgenerated 2012-02-05 20:14:30
*/
privateString yxbz;
/**
* EASSEN.DM_MYDWT.XYBZ
* @ibatorgenerated 2012-02-05 20:14:30
*/
privateString xybz;
publicString getMydwtDm() {
returnmydwtDm;
}
publicvoidsetMydwtDm(String mydwtDm) {
this.mydwtDm = mydwtDm;
}
publicString getMydwtMc() {
returnmydwtMc;
}
publicvoidsetMydwtMc(String mydwtMc) {
this.mydwtMc = mydwtMc;
}
publicString getYxbz() {
returnyxbz;
}
publicvoidsetYxbz(String yxbz) {
this.yxbz = yxbz;
}
publicString getXybz() {
returnxybz;
}
publicvoidsetXybz(String xybz) {
this.xybz = xybz;
}
}
Java代码
packagecom.pojo;
importjava.io.Serializable;
publicclassDmMydwtimplementsSerializable{
/**
*
*/
privatestaticfinallongserialVersionUID=1078518054837885063L;
/**
*EASSEN.DM_MYDWT.MYDWT_DM
*@ibatorgenerated2012-02-0520:14:30
*/
privateStringmydwtDm;
/**
*EASSEN.DM_MYDWT.MYDWT_MC
*@ibatorgenerated2012-02-0520:14:30
*/
privateStringmydwtMc;
/**
*EASSEN.DM_MYDWT.YXBZ
*@ibatorgenerated2012-02-0520:14:30
*/
privateStringyxbz;
/**
*EASSEN.DM_MYDWT.XYBZ
*@ibatorgenerated2012-02-0520:14:30
*/
privateStringxybz;
publicStringgetMydwtDm(){
returnmydwtDm;
}
publicvoidsetMydwtDm(StringmydwtDm){
this.mydwtDm=mydwtDm;
}
publicStringgetMydwtMc(){
returnmydwtMc;
}
publicvoidsetMydwtMc(StringmydwtMc){
this.mydwtMc=mydwtMc;
}
publicStringgetYxbz(){
returnyxbz;
}
publicvoidsetYxbz(Stringyxbz){
this.yxbz=yxbz;
}
publicStringgetXybz(){
returnxybz;
}
publicvoidsetXybz(Stringxybz){
this.xybz=xybz;
}
}
4.DAO
Java代码
packagecom.dao;
importcom.pojo.DmMydwt;
publicinterfaceDmMydwtMapper {
/**
* 根据主键删除
* 参数:主键
* 返回:删除个数
* @ibatorgenerated 2012-02-05 20:14:58
*/
intdeleteByPrimaryKey(String mydwtDm);
/**
* 插入,空属性也会插入
* 参数:pojo对象
* 返回:删除个数
* @ibatorgenerated 2012-02-05 20:14:58
*/
intinsert(DmMydwt record);
/**
* 插入,空属性不会插入
* 参数:pojo对象
* 返回:删除个数
* @ibatorgenerated 2012-02-05 20:14:58
*/
intinsertSelective(DmMydwt record);
/**
* 根据主键查询
* 参数:查询条件,主键值
* 返回:对象
* @ibatorgenerated 2012-02-05 20:14:58
*/
DmMydwt selectByPrimaryKey(String mydwtDm);
/**
* 根据主键修改,空值条件不会修改成null
* 参数:1.要修改成的值
* 返回:成功修改个数
* @ibatorgenerated 2012-02-05 20:14:58
*/
intupdateByPrimaryKeySelective(DmMydwt record);
/**
* 根据主键修改,空值条件会修改成null
* 参数:1.要修改成的值
* 返回:成功修改个数
* @ibatorgenerated 2012-02-05 20:14:58
*/
intupdateByPrimaryKey(DmMydwt record);
}
Java代码
packagecom.dao;
importcom.pojo.DmMydwt;
publicinterfaceDmMydwtMapper{
/**
*根据主键删除
*参数:主键
*返回:删除个数
*@ibatorgenerated2012-02-0520:14:58
*/
intdeleteByPrimaryKey(StringmydwtDm);
/**
*插入,空属性也会插入
*参数:pojo对象
*返回:删除个数
*@ibatorgenerated2012-02-0520:14:58
*/
intinsert(DmMydwtrecord);
/**
*插入,空属性不会插入
*参数:pojo对象
*返回:删除个数
*@ibatorgenerated2012-02-0520:14:58
*/
intinsertSelective(DmMydwtrecord);
/**
*根据主键查询
*参数:查询条件,主键值
*返回:对象
*@ibatorgenerated2012-02-0520:14:58
*/
DmMydwtselectByPrimaryKey(StringmydwtDm);
/**
*根据主键修改,空值条件不会修改成null
*参数:1.要修改成的值
*返回:成功修改个数
*@ibatorgenerated2012-02-0520:14:58
*/
intupdateByPrimaryKeySelective(DmMydwtrecord);
/**
*根据主键修改,空值条件会修改成null
*参数:1.要修改成的值
*返回:成功修改个数
*@ibatorgenerated2012-02-0520:14:58
*/
intupdateByPrimaryKey(DmMydwtrecord);
}
5.mybatis加载
Java代码
packagecom.db;
importjava.io.IOException;
importjava.io.Reader;
importorg.apache.ibatis.io.Resources;
importorg.apache.ibatis.session.SqlSession;
importorg.apache.ibatis.session.SqlSessionFactory;
importorg.apache.ibatis.session.SqlSessionFactoryBuilder;
publicclassConnectionFactory {
privatestaticSqlSessionFactory factory;
privatestaticSqlSession sqlSession =null;
// 读取MyBatis配置文件,创建SqlSessionFactory
static{
try{
Reader reader = Resources.getResourceAsReader("sqlMapConfig.xml");
factory =newSqlSessionFactoryBuilder().build(reader,"eassen");
}catch(IOException e) {
e.printStackTrace();
}
}
/**
* 获取SqlSession
* @return
*/
publicstaticSqlSession getSession() {
if(sqlSession ==null){
sqlSession = factory.openSession();
}
returnsqlSession;
}
/**
* 从配置文件中获取数据库表映射对象信息
* @param mapper
* @return
*/
publicstatic<T> T getMapper(Class<T> mapper) {
SqlSession session = getSession();
return(T) session.getMapper(mapper);
}
/**
* 数据提交
*/
publicstaticvoidcommit(){
sqlSession.commit();
}
/**
* 数据回滚
*/
publicstaticvoidrollback(){
sqlSession.rollback();
}
/**
* 关闭sqlsession
*/
publicstaticvoidclose(){
if(sqlSession !=null){
sqlSession.close();
}
}
}
Java代码
packagecom.db;
importjava.io.IOException;
importjava.io.Reader;
importorg.apache.ibatis.io.Resources;
importorg.apache.ibatis.session.SqlSession;
importorg.apache.ibatis.session.SqlSessionFactory;
importorg.apache.ibatis.session.SqlSessionFactoryBuilder;
publicclassConnectionFactory{
privatestaticSqlSessionFactoryfactory;
privatestaticSqlSessionsqlSession=null;
//读取MyBatis配置文件,创建SqlSessionFactory
static{
try{
Readerreader=Resources.getResourceAsReader("sqlMapConfig.xml");
factory=newSqlSessionFactoryBuilder().build(reader,"eassen");
}catch(IOExceptione){
e.printStackTrace();
}
}
/**
*获取SqlSession
*@return
*/
publicstaticSqlSessiongetSession(){
if(sqlSession==null){
sqlSession=factory.openSession();
}
returnsqlSession;
}
/**
*从配置文件中获取数据库表映射对象信息
*@parammapper
*@return
*/
publicstatic<T>TgetMapper(Class<T>mapper){
SqlSessionsession=getSession();
return(T)session.getMapper(mapper);
}
/**
*数据提交
*/
publicstaticvoidcommit(){
sqlSession.commit();
}
/**
*数据回滚
*/
publicstaticvoidrollback(){
sqlSession.rollback();
}
/**
*关闭sqlsession
*/
publicstaticvoidclose(){
if(sqlSession!=null){
sqlSession.close();
}
}
}
6.数据查询,插入,更新,删除测试
Java代码
packagecom.test;
importcom.dao.DmMydwtMapper;
importcom.db.ConnectionFactory;
importcom.pojo.DmMydwt;
publicclassMydTest {
publicstaticvoidmain(String[] args) {
try{
// 获取对象
DmMydwtMapper mydwtMapper = ConnectionFactory
.getMapper(com.dao.DmMydwtMapper.class);
// 查询相关MYDWT_DM为“1001”的信息
DmMydwt mydwt = mydwtMapper.selectByPrimaryKey("1001");
System.out.println("mybatis查询测试:=================================");
System.out.println("MYDWT_DM:"+ mydwt.getMydwtDm());
System.out.println("MYDWT_MC:"+ mydwt.getMydwtMc());
// 插入数据
System.out.println("mybatis保存测试:=================================");
mydwt =newDmMydwt();
mydwt.setMydwtDm("aaaa");
mydwt.setMydwtMc("mybatis保存");
mydwt.setYxbz("Y");
mydwt.setXybz("Y");
mydwtMapper.insert(mydwt);
// 更新数据
System.out.println("mybatis更新测试:=================================");
mydwt.setMydwtMc(newString("mybatis保存".getBytes(),"UTF-8"));
mydwtMapper.updateByPrimaryKey(mydwt);
// 删除数据
System.out.println("mybatis删除测试:=================================");
mydwtMapper.deleteByPrimaryKey("1001");
ConnectionFactory.commit();
}catch(Exception e) {
ConnectionFactory.rollback();
e.printStackTrace();
}finally{
// 关闭sqlsession
ConnectionFactory.close();
}
}
}
Java代码
packagecom.test;
importcom.dao.DmMydwtMapper;
importcom.db.ConnectionFactory;
importcom.pojo.DmMydwt;
publicclassMydTest{
publicstaticvoidmain(String[]args){
try{
//获取对象
DmMydwtMappermydwtMapper=ConnectionFactory
.getMapper(com.dao.DmMydwtMapper.class);
//查询相关MYDWT_DM为“1001”的信息
DmMydwtmydwt=mydwtMapper.selectByPrimaryKey("1001");
System.out.println("mybatis查询测试:=================================");
System.out.println("MYDWT_DM:"+mydwt.getMydwtDm());
System.out.println("MYDWT_MC:"+mydwt.getMydwtMc());
//插入数据
System.out.println("mybatis保存测试:=================================");
mydwt=newDmMydwt();
mydwt.setMydwtDm("aaaa");
mydwt.setMydwtMc("mybatis保存");
mydwt.setYxbz("Y");
mydwt.setXybz("Y");
mydwtMapper.insert(mydwt);
//更新数据
System.out.println("mybatis更新测试:=================================");
mydwt.setMydwtMc(newString("mybatis保存".getBytes(),"UTF-8"));
mydwtMapper.updateByPrimaryKey(mydwt);
//删除数据
System.out.println("mybatis删除测试:=================================");
mydwtMapper.deleteByPrimaryKey("1001");
ConnectionFactory.commit();
}catch(Exceptione){
ConnectionFactory.rollback();
e.printStackTrace();
}finally{
//关闭sqlsession
ConnectionFactory.close();
}
}
}
7.控制台信息输出
Java代码
2012-02-0811:43:01Logging initialized using'org.apache.ibatis.logging.commons.JakartaCommonsLoggingImpl'adapter.
2012-02-0811:43:01PooledDataSource forcefully closed/removed all connections.
2012-02-0811:43:01PooledDataSource forcefully closed/removed all connections.
2012-02-0811:43:01PooledDataSource forcefully closed/removed all connections.
2012-02-0811:43:01PooledDataSource forcefully closed/removed all connections.
2012-02-0811:43:02Created connection17671659.
2012-02-0811:43:02ooo Connection Opened
2012-02-0811:43:02==> Executing: select MYDWT_DM, MYDWT_MC, YXBZ, XYBZ from EASSEN.DM_MYDWT where MYDWT_DM = ?
2012-02-0811:43:02==> Parameters:1001(String)
2012-02-0811:43:02<== Columns: MYDWT_DM, MYDWT_MC, YXBZ, XYBZ
2012-02-0811:43:02<== Row:1001, 您经常访问的网站包括:, Y, Y
mybatis查询测试:=================================
MYDWT_DM:1001
MYDWT_MC:您经常访问的网站包括:
mybatis保存测试:=================================
2012-02-0811:43:02==> Executing: insert into EASSEN.DM_MYDWT (MYDWT_DM, MYDWT_MC, YXBZ, XYBZ) values (?, ?, ?, ?)
2012-02-0811:43:02==> Parameters: aaaa(String), mybatis保存(String), Y(String), Y(String)
mybatis更新测试:=================================
2012-02-0811:43:02==> Executing: update EASSEN.DM_MYDWT set MYDWT_MC = ?, YXBZ = ?, XYBZ = ? where MYDWT_DM = ?
2012-02-0811:43:02==> Parameters: mybatis保存(String), Y(String), Y(String), aaaa(String)
mybatis删除测试:=================================
2012-02-0811:43:02==> Executing: delete from EASSEN.DM_MYDWT where MYDWT_DM = ?
2012-02-0811:43:02==> Parameters:1001(String)
2012-02-0811:43:02xxx Connection Closed
2012-02-0811:43:02Returned connection17671659to pool.
声明:本站所有文章资源内容,如无特殊说明或标注,均为采集网络资源。如若本站内容侵犯了原著者的合法权益,可联系本站删除。