Mybatis连接Oracle实现增删改查实践
1. 首先要在项目中增加Mybatis和Oracle的Jar文件
这里我使用的版本为ojdbc7
Mybatis版本为:3.2.4
2. 在Oracle中创建User表
create table T_USERS
(
ID NUMBER not null,
NAME VARCHAR2(30),
SEX VARCHAR2(3),
BIRS DATE,
MESSAGE CLOB
);
create sequence SEQ_T_USERS_ID
minvalue 1
maxvalue 99999999
start with 1
increment by 1
cache 20;
3.创建User类
public class User {
private String name;
private String sex;
private Integer id;
private Date birs;
private String message;
public String getMessage() {
return message;
}
public void setMessage(String pMessage) {
this.message = pMessage;
}
public Date getBirs() {
return birs;
}
public void setBirs(Date pbirs) {
this.birs = pbirs;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getSex() {
return sex;
}
public void setSex(String psex) {
this.sex = psex;
}
public Integer getId() {
return id;
}
public void setID(Integer pid) {
this.id = pid;
}
public User() {
}
@Override
public String toString() {
return "User [name=" + name + ", sex=" + sex + ", id=" + id + ", birs=" + birs + ", message=" + message
+ "]";
}
}
4. 创建UsersMapper接口
public interface UsersMapper {
public void add(User t);
public void update(User t);
public void updateBySelective(User t);
public void delete(Object id);
public User queryById(Object id);
public List<User> queryBySelective(User t);
public int queryByCount(User t);
public List<User> queryByList(User t);
}
5. 创建OracleClobTypeHandler.java
import java.sql.CallableStatement;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException; import org.apache.ibatis.type.JdbcType;
import org.apache.ibatis.type.TypeHandler; import oracle.sql.CLOB; public class OracleClobTypeHandler implements TypeHandler<Object> { public Object valueOf(String param) {
return null;
} public Object getResult(ResultSet arg0, String arg1) throws SQLException {
CLOB clob = (CLOB) arg0.getClob(arg1);
return (clob == null || clob.length() == 0) ? null : clob.getSubString((long) 1, (int) clob.length());
} public Object getResult(ResultSet arg0, int arg1) throws SQLException {
return null;
} public Object getResult(CallableStatement arg0, int arg1) throws SQLException {
return null;
} public void setParameter(PreparedStatement arg0, int arg1, Object arg2, JdbcType arg3) throws SQLException {
CLOB clob = CLOB.empty_lob();
clob.setString(1, (String) arg2);
arg0.setClob(arg1, clob);
} }
6. 创建配置文件
configuration.xml
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE configuration
PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-config.dtd">
<configuration> <typeAliases>
<!--给实体类起一个别名 user 不过建议不要起别名,容易搞混-->
<typeAlias type="com.example.oracle.User" alias="User" />
</typeAliases>
<!--数据源配置 这块用 Oracle数据库 -->
<environments default="development">
<environment id="development">
<transactionManager type="jdbc" />
<dataSource type="POOLED">
<property name="driver" value="oracle.jdbc.OracleDriver" />
<property name="url" value="jdbc:oracle:thin:@127.0.0.1:1521:orcl" />
<property name="username" value="system" />
<property name="password" value="123456" />
</dataSource>
</environment>
</environments>
<mappers>
<!--UsersMapper.xml装载进来 同等于把“dao”的实现装载进来 -->
<mapper resource="UsersMapper.xml" />
</mappers>
</configuration>
UsersMapper.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">
<!--这块等于dao接口的实现 namespace必须和接口的类路径一样-->
<mapper namespace="com.example.mapper.UsersMapper" > <!-- Result Map-->
<resultMap type="com.example.oracle.User" id="BaseResultMap">
<result property="id" column="id" />
<result property="name" column="name" />
<result property="sex" column="sex" />
<result property="birs" column="birs" jdbcType="TIMESTAMP"/>
<result property="message" column="message" jdbcType="CLOB" javaType = "java.lang.String" typeHandler ="com.example.oracle.OracleClobTypeHandler"/>
</resultMap> <!-- 表名-->
<sql id="Tabel_Name">
t_users
</sql> <!-- 表中所有列 -->
<sql id="Base_Column_List" >
id,name,sex,birs,message
</sql> <!-- 查询条件 -->
<sql id="Example_Where_Clause">
where 1=1
<trim suffixOverrides=",">
<if test="id != null">
and id = #{id}
</if>
<if test="name != null and name != ''">
and name like concat(concat('%', '${name}'), '%')
</if>
<if test="sex != null and sex != ''">
and sex like concat(concat('%', '${sex}'), '%')
</if>
<if test="birs != null">
and birs = #{birs}
</if>
<if test="message != null">
and message = #{message}
</if>
</trim>
</sql> <!-- 下面的id都和接口UsersMapper中的方法名一样--> <!-- 1.新增记录 -->
<insert id="add" parameterType="Object" >
<selectKey resultType="int" order="BEFORE" keyProperty="id">
select seq_t_users_id.nextval as id from dual
</selectKey>
insert into t_users(id,name,sex,birs,message) values(#{id},#{name},#{sex},#{birs},#{message,jdbcType=CLOB})
</insert> <!-- 2.根据id修改记录-->
<update id="update" parameterType="Object" >
update t_users set name=#{name},sex=#{sex},birs=#{birs},message=#{message} where id=#{id}
</update> <!-- 3.只修改不为空的字段 -->
<update id="updateBySelective" parameterType="Object" >
update t_users set
<trim suffixOverrides="," >
<if test="name != null and name != '' ">
name=#{name},
</if>
<if test="sex != null and sex != '' ">
sex=#{sex},
</if>
<if test="birs != null ">
birs=#{birs},
</if>
<if test="message != null and message != '' ">
message=#{message},
</if>
</trim> where id=#{id}
</update> <!-- 4.根据id进行删除 -->
<delete id="delete" parameterType="Object">
delete from t_users where id = #{id}
</delete> <!-- 5.根据id查询 -->
<select id="queryById" resultMap="BaseResultMap" parameterType="Object">
select
<include refid="Base_Column_List" />
from t_users where id = #{id}
</select> <!-- 6.查询列表,只查询不为空的字段 -->
<select id="queryBySelective" resultMap="BaseResultMap" parameterType="Object">
select
<include refid="Base_Column_List" />
from t_users
<include refid="Example_Where_Clause" />
</select> <!-- 7.列表总数 -->
<select id="queryByCount" resultType="java.lang.Integer" parameterType="Object">
select count(1) from t_users
<include refid="Example_Where_Clause" />
</select> <!-- 8.查询列表 -->
<select id="queryByList" resultMap="BaseResultMap" parameterType="Object">
select
<include refid="Base_Column_List" />
from t_users
<include refid="Example_Where_Clause"/>
</select>
</mapper>
两个xml文件路径为:

7 .在main方法中测试
public class OracleMain {
private static SqlSessionFactory getSessionFactory(){
SqlSessionFactory sessionFactory = null;
String resource = "configuration.xml";
try{
sessionFactory = new SqlSessionFactoryBuilder()
.build(Resources.getResourceAsReader(resource));
}catch(IOException e){
e.printStackTrace();
}
return sessionFactory;
}
public static void main(String[] args) {
SqlSession sqlSession = getSessionFactory().openSession();
UsersMapper dao = sqlSession.getMapper(UsersMapper.class);
//删除表中所有信息
User nullBean = new User();
List<User> delList = dao.queryByList(nullBean);
for(User user: delList){
dao.delete(user.getId());
}
DateFormat dd=new SimpleDateFormat("yyyy-MM-dd");
Date date=null;
try {
date = dd.parse("1985-01-01");
} catch (ParseException e) {
e.printStackTrace();
}
//新增用戶
User bean = new User();
bean.setName("张三");
bean.setSex("男");
bean.setBirs(date);
bean.setMessage("您好,我是张三");
dao.add(bean);
bean = new User();
bean.setName("李四");
bean.setSex("男");
bean.setBirs(date);
bean.setMessage("您好,我是李四");
dao.add(bean);
printUserInfo(dao);
//查詢并更新
bean = new User();
bean.setName("李四");
List<User> list = dao.queryByList(bean);
for(User user : list){
user.setName("王五");
user.setSex("女");
dao.update(user);
}
System.out.println("---------更新--------------");
printUserInfo(dao);
int num = dao.queryByCount(nullBean);
System.out.println("num="+ num);
sqlSession.commit();
}
private static void printUserInfo(UsersMapper dao) {
User nullBean = new User();
List<User> list = dao.queryByList(nullBean);
for(User user : list){
System.out.println(user.getName() + " " + user.getMessage());
}
}
}
Mybatis连接Oracle实现增删改查实践的更多相关文章
- 【转】mybatis连接Oracle做增删改查
原文地址:http://blog.csdn.net/liumengcheng/article/details/34422475 入门请看http://blog.csdn.NET/liumengchen ...
- ASP.NET C# 连接 Oracle数据库增删改查,事务
一.知识介绍 ①ASP.NET 使用的是MVC模式,开发工具Visual studio ,语言C# ②Oracle是比较重型的数据库,这里主要介绍连接数据库,对数据进行具体的使用 ③Visual St ...
- C# 连接 Oracle数据库增删改查,事务
一. 前情提要 一般.NET环境连接Oracle数据库,是通过 TNS/SQL.NET 配置文件,而 TNS 必须要 Oracle 客户端(如果连接的是服务器的数据库,本地还要装一个 client , ...
- java 连接oracle 进行增删改查
1.在DAO层新增类OraclePersionDao package com.test.dao; import java.sql.*; /** * Created by wdw on 2017/9/1 ...
- MyBatis学习系列二——增删改查
目录 MyBatis学习系列一之环境搭建 MyBatis学习系列二——增删改查 MyBatis学习系列三——结合Spring 数据库的经典操作:增删改查. 在这一章我们主要说明一下简单的查询和增删改, ...
- Java连接MongoDB进行增删改查
1.导入必须的包: 详情看项目:http://pan.baidu.com/s/1cvDAOY 2.通过Myeclipse创建WEB项目 3. 3.bean:创建实体类 package com.bean ...
- mvc模式jsp+servel+dbutils oracle基本增删改查demo
mvc模式jsp+servel+dbutils oracle基本增删改查demo 下载地址
- mvc模式jsp+servel+jdbc oracle基本增删改查demo
mvc模式jsp+servel+jdbc oracle基本增删改查demo 下载地址
- Java连接MySQL数据库增删改查通用方法
版权声明:本文为博主原创文章,未经博主允许不得转载. Java连接MySQL数据库增删改查通用方法 运行环境:eclipse+MySQL 以前我们Java连接MySQL数据库都是一个数据库写一个类,类 ...
随机推荐
- java深浅拷贝
转载:http://atjava.iteye.com/blog/1722501 首先我们看看浅拷贝和深拷贝的定义 浅拷贝:只复制一个对象,对象内部存在的指向其他对象数组或者引用则不复制 深拷贝:对象, ...
- 用 Spark 为 Elasticsearch 导入搜索数据
越来越健忘了,得记录下自己的操作才行! ES和spark版本: spark-1.6.0-bin-hadoop2.6 Elasticsearch for Apache Hadoop 2.1.2 如果是其 ...
- Cxfreeze使用存在问题
Cxfreeze使用 cx_Freeze-5.1.1-cp36-cp36m-win_amd64.wh 1● 打包多个文件 Cxfreeze D:/test.py –target-dir D:/ c ...
- UVALive 4168
aaarticlea/png;base64,iVBORw0KGgoAAAANSUhEUgAAA08AAABMCAIAAAA6IBt+AAAgAElEQVR4nO1dybXjOg7tWJSK65yKxL
- 反向-代理 nginx for Mac 的配置以及使用
反向代理(Reverse Proxy)方式是指以代理服务器来接受internet上的连接请求,然后将请求转发给内部网络上的服务器,并将从服务器上得到的结果返回给internet上请求连接的客户端 ...
- auto类型说明符的注意事项
1.auto类型说明符,是C++11标准下的,它能让编译器自行判断表达式的类型. 2.auto也能在一条语句上声明多个变量,但是,该语句上的多个变量的类型,必须一致. 3.编译器推断出来auto类型可 ...
- 基于GUI的简单聊天室03
上一版本,客户端关闭后会出现“socket close”异常问题,这个版本用捕捉异常来解决,实际上只是把异常输出的语句改为用户退出之类,并没真正解决 服务器类 package Chat03; /** ...
- docker容器,镜像常用操作
1.查看正在运行的容器 docker ps 查看所有容器 docker ps -a 2.查看容器日志 docker logs -f showdoc 3.删除所有容器 docker rm $(docke ...
- 在 windows 开发 reactNative 的环境 搭建过程 react-native-android
安装的东西挺多的, 从 jdk 到c++环境 到node , python, 各种模拟器 http://bbs.reactnative.cn/topic/10/%E5%9C%A8windows%E4% ...
- PHP出现Cannot modify header information问题的解决方法
在C盘的WINDOWS中找到php.ini 这个配置文件,然后查找一项:output_buffering将其值由原来的off改为on,重新启动Apache就ok了.