spring-mybtais整合
2016-01-12 13:18
531 查看
第一种:
源代码http://eassen.iteye.com/blog/1399002
近来打算开发一个技术框架,并应用此框架开发出一个论坛,开始打算用sturts2+spring+hibernate+jquery为基础,然后再进行封装,最后形成技术框架,但通过此网站获知mybatis比hibernate更灵活,实用。因此开始逐步接触mybatis。
以下是mybatis3.0的开发实例,使用的java环境jdk5.0,ide为eclipse3.7,数据库是oracle11g。
1.数据环境配置
Xml代码
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE configuration PUBLIC "-//mybatis.org//DTD Config 3.0//EN" "mybatis-3-config.dtd">
<configuration>
<!-- - - - - - - 数据库环境配置- - - - - - - - - -->
<environments default="environments">
<environment id="eassen">
<transactionManager type="JDBC"/>
<dataSource type="POOLED">
<property name="driver" value="oracle.jdbc.driver.OracleDriver"/>
<property name="url" value="jdbc:oracle:thin:@127.0.0.1:1521:eassen"/>
<property name="username" value="eassen"/>
<property name="password" value="oracle"/>
</dataSource>
</environment>
</environments>
<!-- - - - - - - -映射文件路径- - - - - - -->
<mappers>
<mapper resource="com/pojo/sql/DmMydwtMapper.xml"/>
</mappers>
</configuration>
Xml代码
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE configuration PUBLIC "-//mybatis.org//DTD Config 3.0//EN" "mybatis-3-config.dtd">
<configuration>
<!-- - - - - - - 数据库环境配置- - - - - - - - - -->
<environments default="environments">
<environment id="eassen">
<transactionManager type="JDBC"/>
<dataSource type="POOLED">
<property name="driver" value="oracle.jdbc.driver.OracleDriver"/>
<property name="url" value="jdbc:oracle:thin:@127.0.0.1:1521:eassen"/>
<property name="username" value="eassen"/>
<property name="password" value="oracle"/>
</dataSource>
</environment>
</environments>
<!-- - - - - - - -映射文件路径- - - - - - -->
<mappers>
<mapper resource="com/pojo/sql/DmMydwtMapper.xml"/>
</mappers>
</configuration>
2.数据库表映射(DM_MYDWT)XML文件
Xml代码
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.dao.DmMydwtMapper">
<resultMap id="BaseResultMap" type="com.pojo.DmMydwt">
<id column="MYDWT_DM" property="mydwtDm" jdbcType="CHAR" javaType="String" />
<result column="MYDWT_MC" property="mydwtMc" jdbcType="VARCHAR"
javaType="String" />
<result column="YXBZ" property="yxbz" jdbcType="CHAR" javaType="String" />
<result column="XYBZ" property="xybz" jdbcType="CHAR" javaType="String" />
</resultMap>
<sql id="Base_Column_List">
MYDWT_DM, MYDWT_MC, YXBZ, XYBZ
</sql>
<select id="selectByPrimaryKey" resultMap="BaseResultMap"
parameterType="java.lang.String">
select
<include refid="Base_Column_List" />
from EASSEN.DM_MYDWT
where MYDWT_DM = #{mydwtDm,jdbcType=CHAR}
</select>
<delete id="deleteByPrimaryKey" parameterType="java.lang.String"
flushCache="true">
delete from EASSEN.DM_MYDWT
where MYDWT_DM =
#{mydwtDm,jdbcType=CHAR}
</delete>
<insert id="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>
<insert id="insertSelective" parameterType="com.pojo.DmMydwt"
flushCache="true">
insert into EASSEN.DM_MYDWT
<trim prefix="(" suffix=")" suffixOverrides=",">
MYDWT_DM,
MYDWT_MC,
YXBZ,
XYBZ,
</trim>
<trim prefix="values
(" suffix=")" suffixOverrides=",">
#{mydwtDm,jdbcType=CHAR},
#{mydwtMc},
#{yxbz,jdbcType=CHAR},
#{xybz,jdbcType=CHAR},
</trim>
</insert>
<update id="updateByPrimaryKeySelective" parameterType="com.pojo.DmMydwt"
flushCache="true">
update EASSEN.DM_MYDWT
<set>
<if test="mydwtMc
!= null">
MYDWT_MC = #{mydwtMc,jdbcType=VARCHAR},
</if>
<if test="yxbz
!= null">
YXBZ = #{yxbz,jdbcType=CHAR},
</if>
<if test="xybz
!= null">
XYBZ = #{xybz,jdbcType=CHAR},
</if>
</set>
where MYDWT_DM = #{mydwtDm,jdbcType=CHAR}
</update>
<update id="updateByPrimaryKey" parameterType="com.pojo.DmMydwt"
flushCache="true">
update EASSEN.DM_MYDWT
set MYDWT_MC =
#{mydwtMc,jdbcType=VARCHAR},
YXBZ = #{yxbz,jdbcType=CHAR},
XYBZ =
#{xybz,jdbcType=CHAR}
where MYDWT_DM = #{mydwtDm,jdbcType=CHAR}
</update>
</mapper>
Xml代码
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.dao.DmMydwtMapper">
<resultMap id="BaseResultMap" type="com.pojo.DmMydwt">
<id column="MYDWT_DM" property="mydwtDm" jdbcType="CHAR" javaType="String" />
<result column="MYDWT_MC" property="mydwtMc" jdbcType="VARCHAR"
javaType="String" />
<result column="YXBZ" property="yxbz" jdbcType="CHAR" javaType="String" />
<result column="XYBZ" property="xybz" jdbcType="CHAR" javaType="String" />
</resultMap>
<sql id="Base_Column_List">
MYDWT_DM, MYDWT_MC, YXBZ, XYBZ
</sql>
<select id="selectByPrimaryKey" resultMap="BaseResultMap"
parameterType="java.lang.String">
select
<include refid="Base_Column_List" />
from EASSEN.DM_MYDWT
where MYDWT_DM = #{mydwtDm,jdbcType=CHAR}
</select>
<delete id="deleteByPrimaryKey" parameterType="java.lang.String"
flushCache="true">
delete from EASSEN.DM_MYDWT
where MYDWT_DM =
#{mydwtDm,jdbcType=CHAR}
</delete>
<insert id="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>
<insert id="insertSelective" parameterType="com.pojo.DmMydwt"
flushCache="true">
insert into EASSEN.DM_MYDWT
<trim prefix="(" suffix=")" suffixOverrides=",">
MYDWT_DM,
MYDWT_MC,
YXBZ,
XYBZ,
</trim>
<trim prefix="values (" suffix=")" suffixOverrides=",">
#{mydwtDm,jdbcType=CHAR},
#{mydwtMc},
#{yxbz,jdbcType=CHAR},
#{xybz,jdbcType=CHAR},
</trim>
</insert>
<update id="updateByPrimaryKeySelective" parameterType="com.pojo.DmMydwt"
flushCache="true">
update EASSEN.DM_MYDWT
<set>
<if test="mydwtMc != null">
MYDWT_MC = #{mydwtMc,jdbcType=VARCHAR},
</if>
<if test="yxbz != null">
YXBZ = #{yxbz,jdbcType=CHAR},
</if>
<if test="xybz != null">
XYBZ = #{xybz,jdbcType=CHAR},
</if>
</set>
where MYDWT_DM = #{mydwtDm,jdbcType=CHAR}
</update>
<update id="updateByPrimaryKey" parameterType="com.pojo.DmMydwt"
flushCache="true">
update EASSEN.DM_MYDWT
set MYDWT_MC =
#{mydwtMc,jdbcType=VARCHAR},
YXBZ = #{yxbz,jdbcType=CHAR},
XYBZ =
#{xybz,jdbcType=CHAR}
where MYDWT_DM = #{mydwtDm,jdbcType=CHAR}
</update>
</mapper>
3.数据库表(DM_MYDWT)java
Java代码
package com.pojo;
import java.io.Serializable;
public class DmMydwt implements Serializable
{
/**
*
*/
private static final long serialVersionUID
= 1078518054837885063L;
/**
* EASSEN.DM_MYDWT.MYDWT_DM
* @ibatorgenerated 2012-02-05 20:14:30
*/
private String mydwtDm;
/**
* EASSEN.DM_MYDWT.MYDWT_MC
* @ibatorgenerated 2012-02-05 20:14:30
*/
private String mydwtMc;
/**
* EASSEN.DM_MYDWT.YXBZ
* @ibatorgenerated 2012-02-05 20:14:30
*/
private String yxbz;
/**
* EASSEN.DM_MYDWT.XYBZ
* @ibatorgenerated 2012-02-05 20:14:30
*/
private String xybz;
public String getMydwtDm() {
return mydwtDm;
}
public void setMydwtDm(String mydwtDm) {
this.mydwtDm = mydwtDm;
}
public String getMydwtMc() {
return mydwtMc;
}
public void setMydwtMc(String mydwtMc) {
this.mydwtMc = mydwtMc;
}
public String getYxbz() {
return yxbz;
}
public void setYxbz(String yxbz) {
this.yxbz = yxbz;
}
public String getXybz() {
return xybz;
}
public void setXybz(String xybz) {
this.xybz = xybz;
}
}
Java代码
package com.pojo;
import java.io.Serializable;
public class DmMydwt implements Serializable {
/**
*
*/
private static final long serialVersionUID = 1078518054837885063L;
/**
* EASSEN.DM_MYDWT.MYDWT_DM
* @ibatorgenerated 2012-02-05 20:14:30
*/
private String mydwtDm;
/**
* EASSEN.DM_MYDWT.MYDWT_MC
* @ibatorgenerated 2012-02-05 20:14:30
*/
private String mydwtMc;
/**
* EASSEN.DM_MYDWT.YXBZ
* @ibatorgenerated 2012-02-05 20:14:30
*/
private String yxbz;
/**
* EASSEN.DM_MYDWT.XYBZ
* @ibatorgenerated 2012-02-05 20:14:30
*/
private String xybz;
public String getMydwtDm() {
return mydwtDm;
}
public void setMydwtDm(String mydwtDm) {
this.mydwtDm = mydwtDm;
}
public String getMydwtMc() {
return mydwtMc;
}
public void setMydwtMc(String mydwtMc) {
this.mydwtMc = mydwtMc;
}
public String getYxbz() {
return yxbz;
}
public void setYxbz(String yxbz) {
this.yxbz = yxbz;
}
public String getXybz() {
return xybz;
}
public void setXybz(String xybz) {
this.xybz = xybz;
}
}
4.DAO
Java代码
package com.dao;
import com.pojo.DmMydwt;
public interface DmMydwtMapper {
/**
* 根据主键删除
* 参数:主键
* 返回:删除个数
* @ibatorgenerated 2012-02-05 20:14:58
*/
int deleteByPrimaryKey(String mydwtDm);
/**
* 插入,空属性也会插入
* 参数:pojo对象
* 返回:删除个数
* @ibatorgenerated 2012-02-05 20:14:58
*/
int insert(DmMydwt record);
/**
* 插入,空属性不会插入
* 参数:pojo对象
* 返回:删除个数
* @ibatorgenerated 2012-02-05 20:14:58
*/
int insertSelective(DmMydwt record);
/**
* 根据主键查询
* 参数:查询条件,主键值
* 返回:对象
* @ibatorgenerated 2012-02-05 20:14:58
*/
DmMydwt selectByPrimaryKey(String mydwtDm);
/**
* 根据主键修改,空值条件不会修改成null
* 参数:1.要修改成的值
* 返回:成功修改个数
* @ibatorgenerated 2012-02-05 20:14:58
*/
int updateByPrimaryKeySelective(DmMydwt record);
/**
* 根据主键修改,空值条件会修改成null
* 参数:1.要修改成的值
* 返回:成功修改个数
* @ibatorgenerated 2012-02-05 20:14:58
*/
int updateByPrimaryKey(DmMydwt record);
}
Java代码
package com.dao;
import com.pojo.DmMydwt;
public interface DmMydwtMapper {
/**
* 根据主键删除
* 参数:主键
* 返回:删除个数
* @ibatorgenerated 2012-02-05 20:14:58
*/
int deleteByPrimaryKey(String mydwtDm);
/**
* 插入,空属性也会插入
* 参数:pojo对象
* 返回:删除个数
* @ibatorgenerated 2012-02-05 20:14:58
*/
int insert(DmMydwt record);
/**
* 插入,空属性不会插入
* 参数:pojo对象
* 返回:删除个数
* @ibatorgenerated 2012-02-05 20:14:58
*/
int insertSelective(DmMydwt record);
/**
* 根据主键查询
* 参数:查询条件,主键值
* 返回:对象
* @ibatorgenerated 2012-02-05 20:14:58
*/
DmMydwt selectByPrimaryKey(String mydwtDm);
/**
* 根据主键修改,空值条件不会修改成null
* 参数:1.要修改成的值
* 返回:成功修改个数
* @ibatorgenerated 2012-02-05 20:14:58
*/
int updateByPrimaryKeySelective(DmMydwt record);
/**
* 根据主键修改,空值条件会修改成null
* 参数:1.要修改成的值
* 返回:成功修改个数
* @ibatorgenerated 2012-02-05 20:14:58
*/
int updateByPrimaryKey(DmMydwt record);
}
5.mybatis加载
Java代码
package com.db;
import java.io.IOException;
import java.io.Reader;
import org.apache.ibatis.io.Resources;
import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.session.SqlSessionFactoryBuilder;
public class ConnectionFactory {
private static SqlSessionFactory factory;
private static SqlSession sqlSession = null;
// 读取MyBatis配置文件,创建SqlSessionFactory
static {
try {
Reader reader = Resources.getResourceAsReader("sqlMapConfig.xml");
factory = new SqlSessionFactoryBuilder().build(reader, "eassen");
} catch (IOException e) {
e.printStackTrace();
}
}
/**
* 获取SqlSession
* @return
*/
public static SqlSession getSession() {
if(sqlSession == null){
sqlSession = factory.openSession();
}
return sqlSession;
}
/**
* 从配置文件中获取数据库表映射对象信息
* @param mapper
* @return
*/
public static <T> T getMapper(Class<T> mapper) {
SqlSession session = getSession();
return (T) session.getMapper(mapper);
}
/**
* 数据提交
*/
public static void commit(){
sqlSession.commit();
}
/**
* 数据回滚
*/
public static void rollback(){
sqlSession.rollback();
}
/**
* 关闭sqlsession
*/
public static void close(){
if(sqlSession != null){
sqlSession.close();
}
}
}
Java代码
package com.db;
import java.io.IOException;
import java.io.Reader;
import org.apache.ibatis.io.Resources;
import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.session.SqlSessionFactoryBuilder;
public class ConnectionFactory {
private static SqlSessionFactory factory;
private static SqlSession sqlSession = null;
// 读取MyBatis配置文件,创建SqlSessionFactory
static {
try {
Reader reader = Resources.getResourceAsReader("sqlMapConfig.xml");
factory = new SqlSessionFactoryBuilder().build(reader, "eassen");
} catch (IOException e) {
e.printStackTrace();
}
}
/**
* 获取SqlSession
* @return
*/
public static SqlSession getSession() {
if(sqlSession == null){
sqlSession = factory.openSession();
}
return sqlSession;
}
/**
* 从配置文件中获取数据库表映射对象信息
* @param mapper
* @return
*/
public static <T> T getMapper(Class<T> mapper) {
SqlSession session = getSession();
return (T) session.getMapper(mapper);
}
/**
* 数据提交
*/
public static void commit(){
sqlSession.commit();
}
/**
* 数据回滚
*/
public static void rollback(){
sqlSession.rollback();
}
/**
* 关闭sqlsession
*/
public static void close(){
if(sqlSession != null){
sqlSession.close();
}
}
}
6.数据查询,插入,更新,删除测试
Java代码
package com.test;
import com.dao.DmMydwtMapper;
import com.db.ConnectionFactory;
import com.pojo.DmMydwt;
public class MydTest {
public static void main(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 = new DmMydwt();
mydwt.setMydwtDm("aaaa");
mydwt.setMydwtMc("mybatis保存");
mydwt.setYxbz("Y");
mydwt.setXybz("Y");
mydwtMapper.insert(mydwt);
// 更新数据
System.out.println("mybatis更新测试:=================================");
mydwt.setMydwtMc(new String("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代码
package com.test;
import com.dao.DmMydwtMapper;
import com.db.ConnectionFactory;
import com.pojo.DmMydwt;
public class MydTest {
public static void main(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 = new DmMydwt();
mydwt.setMydwtDm("aaaa");
mydwt.setMydwtMc("mybatis保存");
mydwt.setYxbz("Y");
mydwt.setXybz("Y");
mydwtMapper.insert(mydwt);
// 更新数据
System.out.println("mybatis更新测试:=================================");
mydwt.setMydwtMc(new String("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();
}
}
}
7.控制台信息输出
Java代码
2012-02-08 11:43:01 Logging
initialized using 'org.apache.ibatis.logging.commons.JakartaCommonsLoggingImpl' adapter.
2012-02-08 11:43:01 PooledDataSource
forcefully closed/removed all connections.
2012-02-08 11:43:01 PooledDataSource
forcefully closed/removed all connections.
2012-02-08 11:43:01 PooledDataSource
forcefully closed/removed all connections.
2012-02-08 11:43:01 PooledDataSource
forcefully closed/removed all connections.
2012-02-08 11:43:02 Created
connection 17671659.
2012-02-08 11:43:02 ooo
Connection Opened
2012-02-08 11:43:02 ==>
Executing: select MYDWT_DM, MYDWT_MC, YXBZ, XYBZ from EASSEN.DM_MYDWT where MYDWT_DM = ?
2012-02-08 11:43:02 ==>
Parameters: 1001(String)
2012-02-08 11:43:02 <==
Columns: MYDWT_DM, MYDWT_MC, YXBZ, XYBZ
2012-02-08 11:43:02 <==
Row: 1001, 您经常访问的网站包括:, Y, Y
mybatis查询测试:=================================
MYDWT_DM:1001
MYDWT_MC:您经常访问的网站包括:
mybatis保存测试:=================================
2012-02-08 11:43:02 ==>
Executing: insert into EASSEN.DM_MYDWT (MYDWT_DM, MYDWT_MC, YXBZ, XYBZ) values (?, ?, ?, ?)
2012-02-08 11:43:02 ==>
Parameters: aaaa(String), mybatis保存(String), Y(String), Y(String)
mybatis更新测试:=================================
2012-02-08 11:43:02 ==>
Executing: update EASSEN.DM_MYDWT set MYDWT_MC = ?, YXBZ = ?, XYBZ = ? where MYDWT_DM = ?
2012-02-08 11:43:02 ==>
Parameters: mybatis保存(String), Y(String), Y(String), aaaa(String)
mybatis删除测试:=================================
2012-02-08 11:43:02 ==>
Executing: delete from EASSEN.DM_MYDWT where MYDWT_DM = ?
2012-02-08 11:43:02 ==>
Parameters: 1001(String)
2012-02-08 11:43:02 xxx
Connection Closed
2012-02-08 11:43:02 Returned
connection 17671659 to pool.
Xml代码
<update id="updateBySelected" parameterType="users">
update users
<set>
<if test="name!=null">user_name = #{name}</if>
<if test="addr!=null">user_addr = #{addr}</if>
</set>
where user_id=#{id}
</update>
第二种:
Xml代码
<update id="update" parameterType="users">
update users set user_name = #{name}, user_addr = #{addr}
where user_id=#{id}
</update>
个人认为有时候还是有需要将字段值设置为null的,比如清空日期字段。因此,针对只更新某一两个字段值的情况,我一般是这样操作的:
Java代码
// 只更新用户姓名(前台页面只传入id、name)
User user = userService.findById(id);//根据用户ID获取缓存的用户对象
user.setName(name);//更新用户姓名
userService.update(user);//同时更新User表所有字段值
源代码http://eassen.iteye.com/blog/1399002
近来打算开发一个技术框架,并应用此框架开发出一个论坛,开始打算用sturts2+spring+hibernate+jquery为基础,然后再进行封装,最后形成技术框架,但通过此网站获知mybatis比hibernate更灵活,实用。因此开始逐步接触mybatis。
以下是mybatis3.0的开发实例,使用的java环境jdk5.0,ide为eclipse3.7,数据库是oracle11g。
1.数据环境配置
Xml代码
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE configuration PUBLIC "-//mybatis.org//DTD Config 3.0//EN" "mybatis-3-config.dtd">
<configuration>
<!-- - - - - - - 数据库环境配置- - - - - - - - - -->
<environments default="environments">
<environment id="eassen">
<transactionManager type="JDBC"/>
<dataSource type="POOLED">
<property name="driver" value="oracle.jdbc.driver.OracleDriver"/>
<property name="url" value="jdbc:oracle:thin:@127.0.0.1:1521:eassen"/>
<property name="username" value="eassen"/>
<property name="password" value="oracle"/>
</dataSource>
</environment>
</environments>
<!-- - - - - - - -映射文件路径- - - - - - -->
<mappers>
<mapper resource="com/pojo/sql/DmMydwtMapper.xml"/>
</mappers>
</configuration>
Xml代码
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE configuration PUBLIC "-//mybatis.org//DTD Config 3.0//EN" "mybatis-3-config.dtd">
<configuration>
<!-- - - - - - - 数据库环境配置- - - - - - - - - -->
<environments default="environments">
<environment id="eassen">
<transactionManager type="JDBC"/>
<dataSource type="POOLED">
<property name="driver" value="oracle.jdbc.driver.OracleDriver"/>
<property name="url" value="jdbc:oracle:thin:@127.0.0.1:1521:eassen"/>
<property name="username" value="eassen"/>
<property name="password" value="oracle"/>
</dataSource>
</environment>
</environments>
<!-- - - - - - - -映射文件路径- - - - - - -->
<mappers>
<mapper resource="com/pojo/sql/DmMydwtMapper.xml"/>
</mappers>
</configuration>
2.数据库表映射(DM_MYDWT)XML文件
Xml代码
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.dao.DmMydwtMapper">
<resultMap id="BaseResultMap" type="com.pojo.DmMydwt">
<id column="MYDWT_DM" property="mydwtDm" jdbcType="CHAR" javaType="String" />
<result column="MYDWT_MC" property="mydwtMc" jdbcType="VARCHAR"
javaType="String" />
<result column="YXBZ" property="yxbz" jdbcType="CHAR" javaType="String" />
<result column="XYBZ" property="xybz" jdbcType="CHAR" javaType="String" />
</resultMap>
<sql id="Base_Column_List">
MYDWT_DM, MYDWT_MC, YXBZ, XYBZ
</sql>
<select id="selectByPrimaryKey" resultMap="BaseResultMap"
parameterType="java.lang.String">
select
<include refid="Base_Column_List" />
from EASSEN.DM_MYDWT
where MYDWT_DM = #{mydwtDm,jdbcType=CHAR}
</select>
<delete id="deleteByPrimaryKey" parameterType="java.lang.String"
flushCache="true">
delete from EASSEN.DM_MYDWT
where MYDWT_DM =
#{mydwtDm,jdbcType=CHAR}
</delete>
<insert id="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>
<insert id="insertSelective" parameterType="com.pojo.DmMydwt"
flushCache="true">
insert into EASSEN.DM_MYDWT
<trim prefix="(" suffix=")" suffixOverrides=",">
MYDWT_DM,
MYDWT_MC,
YXBZ,
XYBZ,
</trim>
<trim prefix="values
(" suffix=")" suffixOverrides=",">
#{mydwtDm,jdbcType=CHAR},
#{mydwtMc},
#{yxbz,jdbcType=CHAR},
#{xybz,jdbcType=CHAR},
</trim>
</insert>
<update id="updateByPrimaryKeySelective" parameterType="com.pojo.DmMydwt"
flushCache="true">
update EASSEN.DM_MYDWT
<set>
<if test="mydwtMc
!= null">
MYDWT_MC = #{mydwtMc,jdbcType=VARCHAR},
</if>
<if test="yxbz
!= null">
YXBZ = #{yxbz,jdbcType=CHAR},
</if>
<if test="xybz
!= null">
XYBZ = #{xybz,jdbcType=CHAR},
</if>
</set>
where MYDWT_DM = #{mydwtDm,jdbcType=CHAR}
</update>
<update id="updateByPrimaryKey" parameterType="com.pojo.DmMydwt"
flushCache="true">
update EASSEN.DM_MYDWT
set MYDWT_MC =
#{mydwtMc,jdbcType=VARCHAR},
YXBZ = #{yxbz,jdbcType=CHAR},
XYBZ =
#{xybz,jdbcType=CHAR}
where MYDWT_DM = #{mydwtDm,jdbcType=CHAR}
</update>
</mapper>
Xml代码
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.dao.DmMydwtMapper">
<resultMap id="BaseResultMap" type="com.pojo.DmMydwt">
<id column="MYDWT_DM" property="mydwtDm" jdbcType="CHAR" javaType="String" />
<result column="MYDWT_MC" property="mydwtMc" jdbcType="VARCHAR"
javaType="String" />
<result column="YXBZ" property="yxbz" jdbcType="CHAR" javaType="String" />
<result column="XYBZ" property="xybz" jdbcType="CHAR" javaType="String" />
</resultMap>
<sql id="Base_Column_List">
MYDWT_DM, MYDWT_MC, YXBZ, XYBZ
</sql>
<select id="selectByPrimaryKey" resultMap="BaseResultMap"
parameterType="java.lang.String">
select
<include refid="Base_Column_List" />
from EASSEN.DM_MYDWT
where MYDWT_DM = #{mydwtDm,jdbcType=CHAR}
</select>
<delete id="deleteByPrimaryKey" parameterType="java.lang.String"
flushCache="true">
delete from EASSEN.DM_MYDWT
where MYDWT_DM =
#{mydwtDm,jdbcType=CHAR}
</delete>
<insert id="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>
<insert id="insertSelective" parameterType="com.pojo.DmMydwt"
flushCache="true">
insert into EASSEN.DM_MYDWT
<trim prefix="(" suffix=")" suffixOverrides=",">
MYDWT_DM,
MYDWT_MC,
YXBZ,
XYBZ,
</trim>
<trim prefix="values (" suffix=")" suffixOverrides=",">
#{mydwtDm,jdbcType=CHAR},
#{mydwtMc},
#{yxbz,jdbcType=CHAR},
#{xybz,jdbcType=CHAR},
</trim>
</insert>
<update id="updateByPrimaryKeySelective" parameterType="com.pojo.DmMydwt"
flushCache="true">
update EASSEN.DM_MYDWT
<set>
<if test="mydwtMc != null">
MYDWT_MC = #{mydwtMc,jdbcType=VARCHAR},
</if>
<if test="yxbz != null">
YXBZ = #{yxbz,jdbcType=CHAR},
</if>
<if test="xybz != null">
XYBZ = #{xybz,jdbcType=CHAR},
</if>
</set>
where MYDWT_DM = #{mydwtDm,jdbcType=CHAR}
</update>
<update id="updateByPrimaryKey" parameterType="com.pojo.DmMydwt"
flushCache="true">
update EASSEN.DM_MYDWT
set MYDWT_MC =
#{mydwtMc,jdbcType=VARCHAR},
YXBZ = #{yxbz,jdbcType=CHAR},
XYBZ =
#{xybz,jdbcType=CHAR}
where MYDWT_DM = #{mydwtDm,jdbcType=CHAR}
</update>
</mapper>
3.数据库表(DM_MYDWT)java
Java代码
package com.pojo;
import java.io.Serializable;
public class DmMydwt implements Serializable
{
/**
*
*/
private static final long serialVersionUID
= 1078518054837885063L;
/**
* EASSEN.DM_MYDWT.MYDWT_DM
* @ibatorgenerated 2012-02-05 20:14:30
*/
private String mydwtDm;
/**
* EASSEN.DM_MYDWT.MYDWT_MC
* @ibatorgenerated 2012-02-05 20:14:30
*/
private String mydwtMc;
/**
* EASSEN.DM_MYDWT.YXBZ
* @ibatorgenerated 2012-02-05 20:14:30
*/
private String yxbz;
/**
* EASSEN.DM_MYDWT.XYBZ
* @ibatorgenerated 2012-02-05 20:14:30
*/
private String xybz;
public String getMydwtDm() {
return mydwtDm;
}
public void setMydwtDm(String mydwtDm) {
this.mydwtDm = mydwtDm;
}
public String getMydwtMc() {
return mydwtMc;
}
public void setMydwtMc(String mydwtMc) {
this.mydwtMc = mydwtMc;
}
public String getYxbz() {
return yxbz;
}
public void setYxbz(String yxbz) {
this.yxbz = yxbz;
}
public String getXybz() {
return xybz;
}
public void setXybz(String xybz) {
this.xybz = xybz;
}
}
Java代码
package com.pojo;
import java.io.Serializable;
public class DmMydwt implements Serializable {
/**
*
*/
private static final long serialVersionUID = 1078518054837885063L;
/**
* EASSEN.DM_MYDWT.MYDWT_DM
* @ibatorgenerated 2012-02-05 20:14:30
*/
private String mydwtDm;
/**
* EASSEN.DM_MYDWT.MYDWT_MC
* @ibatorgenerated 2012-02-05 20:14:30
*/
private String mydwtMc;
/**
* EASSEN.DM_MYDWT.YXBZ
* @ibatorgenerated 2012-02-05 20:14:30
*/
private String yxbz;
/**
* EASSEN.DM_MYDWT.XYBZ
* @ibatorgenerated 2012-02-05 20:14:30
*/
private String xybz;
public String getMydwtDm() {
return mydwtDm;
}
public void setMydwtDm(String mydwtDm) {
this.mydwtDm = mydwtDm;
}
public String getMydwtMc() {
return mydwtMc;
}
public void setMydwtMc(String mydwtMc) {
this.mydwtMc = mydwtMc;
}
public String getYxbz() {
return yxbz;
}
public void setYxbz(String yxbz) {
this.yxbz = yxbz;
}
public String getXybz() {
return xybz;
}
public void setXybz(String xybz) {
this.xybz = xybz;
}
}
4.DAO
Java代码
package com.dao;
import com.pojo.DmMydwt;
public interface DmMydwtMapper {
/**
* 根据主键删除
* 参数:主键
* 返回:删除个数
* @ibatorgenerated 2012-02-05 20:14:58
*/
int deleteByPrimaryKey(String mydwtDm);
/**
* 插入,空属性也会插入
* 参数:pojo对象
* 返回:删除个数
* @ibatorgenerated 2012-02-05 20:14:58
*/
int insert(DmMydwt record);
/**
* 插入,空属性不会插入
* 参数:pojo对象
* 返回:删除个数
* @ibatorgenerated 2012-02-05 20:14:58
*/
int insertSelective(DmMydwt record);
/**
* 根据主键查询
* 参数:查询条件,主键值
* 返回:对象
* @ibatorgenerated 2012-02-05 20:14:58
*/
DmMydwt selectByPrimaryKey(String mydwtDm);
/**
* 根据主键修改,空值条件不会修改成null
* 参数:1.要修改成的值
* 返回:成功修改个数
* @ibatorgenerated 2012-02-05 20:14:58
*/
int updateByPrimaryKeySelective(DmMydwt record);
/**
* 根据主键修改,空值条件会修改成null
* 参数:1.要修改成的值
* 返回:成功修改个数
* @ibatorgenerated 2012-02-05 20:14:58
*/
int updateByPrimaryKey(DmMydwt record);
}
Java代码
package com.dao;
import com.pojo.DmMydwt;
public interface DmMydwtMapper {
/**
* 根据主键删除
* 参数:主键
* 返回:删除个数
* @ibatorgenerated 2012-02-05 20:14:58
*/
int deleteByPrimaryKey(String mydwtDm);
/**
* 插入,空属性也会插入
* 参数:pojo对象
* 返回:删除个数
* @ibatorgenerated 2012-02-05 20:14:58
*/
int insert(DmMydwt record);
/**
* 插入,空属性不会插入
* 参数:pojo对象
* 返回:删除个数
* @ibatorgenerated 2012-02-05 20:14:58
*/
int insertSelective(DmMydwt record);
/**
* 根据主键查询
* 参数:查询条件,主键值
* 返回:对象
* @ibatorgenerated 2012-02-05 20:14:58
*/
DmMydwt selectByPrimaryKey(String mydwtDm);
/**
* 根据主键修改,空值条件不会修改成null
* 参数:1.要修改成的值
* 返回:成功修改个数
* @ibatorgenerated 2012-02-05 20:14:58
*/
int updateByPrimaryKeySelective(DmMydwt record);
/**
* 根据主键修改,空值条件会修改成null
* 参数:1.要修改成的值
* 返回:成功修改个数
* @ibatorgenerated 2012-02-05 20:14:58
*/
int updateByPrimaryKey(DmMydwt record);
}
5.mybatis加载
Java代码
package com.db;
import java.io.IOException;
import java.io.Reader;
import org.apache.ibatis.io.Resources;
import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.session.SqlSessionFactoryBuilder;
public class ConnectionFactory {
private static SqlSessionFactory factory;
private static SqlSession sqlSession = null;
// 读取MyBatis配置文件,创建SqlSessionFactory
static {
try {
Reader reader = Resources.getResourceAsReader("sqlMapConfig.xml");
factory = new SqlSessionFactoryBuilder().build(reader, "eassen");
} catch (IOException e) {
e.printStackTrace();
}
}
/**
* 获取SqlSession
* @return
*/
public static SqlSession getSession() {
if(sqlSession == null){
sqlSession = factory.openSession();
}
return sqlSession;
}
/**
* 从配置文件中获取数据库表映射对象信息
* @param mapper
* @return
*/
public static <T> T getMapper(Class<T> mapper) {
SqlSession session = getSession();
return (T) session.getMapper(mapper);
}
/**
* 数据提交
*/
public static void commit(){
sqlSession.commit();
}
/**
* 数据回滚
*/
public static void rollback(){
sqlSession.rollback();
}
/**
* 关闭sqlsession
*/
public static void close(){
if(sqlSession != null){
sqlSession.close();
}
}
}
Java代码
package com.db;
import java.io.IOException;
import java.io.Reader;
import org.apache.ibatis.io.Resources;
import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.session.SqlSessionFactoryBuilder;
public class ConnectionFactory {
private static SqlSessionFactory factory;
private static SqlSession sqlSession = null;
// 读取MyBatis配置文件,创建SqlSessionFactory
static {
try {
Reader reader = Resources.getResourceAsReader("sqlMapConfig.xml");
factory = new SqlSessionFactoryBuilder().build(reader, "eassen");
} catch (IOException e) {
e.printStackTrace();
}
}
/**
* 获取SqlSession
* @return
*/
public static SqlSession getSession() {
if(sqlSession == null){
sqlSession = factory.openSession();
}
return sqlSession;
}
/**
* 从配置文件中获取数据库表映射对象信息
* @param mapper
* @return
*/
public static <T> T getMapper(Class<T> mapper) {
SqlSession session = getSession();
return (T) session.getMapper(mapper);
}
/**
* 数据提交
*/
public static void commit(){
sqlSession.commit();
}
/**
* 数据回滚
*/
public static void rollback(){
sqlSession.rollback();
}
/**
* 关闭sqlsession
*/
public static void close(){
if(sqlSession != null){
sqlSession.close();
}
}
}
6.数据查询,插入,更新,删除测试
Java代码
package com.test;
import com.dao.DmMydwtMapper;
import com.db.ConnectionFactory;
import com.pojo.DmMydwt;
public class MydTest {
public static void main(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 = new DmMydwt();
mydwt.setMydwtDm("aaaa");
mydwt.setMydwtMc("mybatis保存");
mydwt.setYxbz("Y");
mydwt.setXybz("Y");
mydwtMapper.insert(mydwt);
// 更新数据
System.out.println("mybatis更新测试:=================================");
mydwt.setMydwtMc(new String("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代码
package com.test;
import com.dao.DmMydwtMapper;
import com.db.ConnectionFactory;
import com.pojo.DmMydwt;
public class MydTest {
public static void main(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 = new DmMydwt();
mydwt.setMydwtDm("aaaa");
mydwt.setMydwtMc("mybatis保存");
mydwt.setYxbz("Y");
mydwt.setXybz("Y");
mydwtMapper.insert(mydwt);
// 更新数据
System.out.println("mybatis更新测试:=================================");
mydwt.setMydwtMc(new String("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();
}
}
}
7.控制台信息输出
Java代码
2012-02-08 11:43:01 Logging
initialized using 'org.apache.ibatis.logging.commons.JakartaCommonsLoggingImpl' adapter.
2012-02-08 11:43:01 PooledDataSource
forcefully closed/removed all connections.
2012-02-08 11:43:01 PooledDataSource
forcefully closed/removed all connections.
2012-02-08 11:43:01 PooledDataSource
forcefully closed/removed all connections.
2012-02-08 11:43:01 PooledDataSource
forcefully closed/removed all connections.
2012-02-08 11:43:02 Created
connection 17671659.
2012-02-08 11:43:02 ooo
Connection Opened
2012-02-08 11:43:02 ==>
Executing: select MYDWT_DM, MYDWT_MC, YXBZ, XYBZ from EASSEN.DM_MYDWT where MYDWT_DM = ?
2012-02-08 11:43:02 ==>
Parameters: 1001(String)
2012-02-08 11:43:02 <==
Columns: MYDWT_DM, MYDWT_MC, YXBZ, XYBZ
2012-02-08 11:43:02 <==
Row: 1001, 您经常访问的网站包括:, Y, Y
mybatis查询测试:=================================
MYDWT_DM:1001
MYDWT_MC:您经常访问的网站包括:
mybatis保存测试:=================================
2012-02-08 11:43:02 ==>
Executing: insert into EASSEN.DM_MYDWT (MYDWT_DM, MYDWT_MC, YXBZ, XYBZ) values (?, ?, ?, ?)
2012-02-08 11:43:02 ==>
Parameters: aaaa(String), mybatis保存(String), Y(String), Y(String)
mybatis更新测试:=================================
2012-02-08 11:43:02 ==>
Executing: update EASSEN.DM_MYDWT set MYDWT_MC = ?, YXBZ = ?, XYBZ = ? where MYDWT_DM = ?
2012-02-08 11:43:02 ==>
Parameters: mybatis保存(String), Y(String), Y(String), aaaa(String)
mybatis删除测试:=================================
2012-02-08 11:43:02 ==>
Executing: delete from EASSEN.DM_MYDWT where MYDWT_DM = ?
2012-02-08 11:43:02 ==>
Parameters: 1001(String)
2012-02-08 11:43:02 xxx
Connection Closed
2012-02-08 11:43:02 Returned
connection 17671659 to pool.
Xml代码
<update id="updateBySelected" parameterType="users">
update users
<set>
<if test="name!=null">user_name = #{name}</if>
<if test="addr!=null">user_addr = #{addr}</if>
</set>
where user_id=#{id}
</update>
第二种:
Xml代码
<update id="update" parameterType="users">
update users set user_name = #{name}, user_addr = #{addr}
where user_id=#{id}
</update>
个人认为有时候还是有需要将字段值设置为null的,比如清空日期字段。因此,针对只更新某一两个字段值的情况,我一般是这样操作的:
Java代码
// 只更新用户姓名(前台页面只传入id、name)
User user = userService.findById(id);//根据用户ID获取缓存的用户对象
user.setName(name);//更新用户姓名
userService.update(user);//同时更新User表所有字段值
相关文章推荐
- 使用 Spring Data JPA 简化 JPA 开发
- Java加密算法Triple DES
- JAVA 中 extends 与 implements 的前世今生
- Eclipse怎样设置本地的maven
- Java BeanValidation
- 我的Java之路
- JAVA程序中代码的初始化
- Java反射机制的使用方法
- 在myeclipse中maven部署流程及遇见的问题
- java多线程--生产者和消费者模型
- eclipse 的一些小知识
- Java中ArrayList源码解析
- Java生成文件
- Spring 无法注入静态变量,直接在静态方法中获取bean
- Windows系统下查看JDK的版本和安装路径!
- Thinking in Java,Fourth Edition(Java 编程思想,第四版)学习笔记(十)之Inner Classes
- 待翻译---- Understanding Spring MVC Model and Session Attributes
- [javase学习笔记]-9.2 单继承与多重继承
- Java进阶(二十二)使用FileOutputStream写入文件
- Java进阶(二十二)使用FileOutputStream写入文件