【转】mybatis连接Oracle做增删改查
原文地址:http://blog.csdn.net/liumengcheng/article/details/34422475
入门请看http://blog.csdn.NET/liumengcheng/article/details/34409783
首先创建表
- 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;
User.java
- package com.southgis.scout.demo;
- import java.util.Date;
- /**
- * 用户类
- *
- * @author lmc
- *
- */
- 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() {
- }
- }
UsersMapper.java
- package com.southgis.scout.demo;
- import java.util.List;
- import com.southgis.scout.demo.User;
- 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);
- }
OracleClobTypeHandler.java
- package com.southgis.scout.demo;
- import java.sql.CallableStatement;
- import java.sql.PreparedStatement;
- import java.sql.ResultSet;
- import java.sql.SQLException;
- import oracle.sql.CLOB;
- import org.apache.ibatis.type.JdbcType;
- import org.apache.ibatis.type.TypeHandler;
- public class OracleClobTypeHandler implements TypeHandler<Object> {
- public Object valueOf(String param) {
- return null;
- }
- @Override
- 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());
- }
- @Override
- public Object getResult(ResultSet arg0, int arg1) throws SQLException {
- return null;
- }
- @Override
- public Object getResult(CallableStatement arg0, int arg1) throws SQLException {
- return null;
- }
- @Override
- 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);
- }
- }
main.java
- package com.southgis.scout.demo;
- import java.io.IOException;
- import java.text.DateFormat;
- import java.text.ParseException;
- import java.text.SimpleDateFormat;
- import java.util.List;
- import java.util.Date;
- import org.apache.ibatis.io.Resources;
- import org.apache.ibatis.session.SqlSession;
- import org.apache.ibatis.session.SqlSessionFactory;
- import org.apache.ibatis.session.SqlSessionFactoryBuilder;
- import com.southgis.scout.demo.UsersMapper;
- import com.southgis.scout.demo.User;
- public class main {
- /**
- * 获得MyBatis SqlSessionFactory
- * SqlSessionFactory负责创建SqlSession,一旦创建成功,就可以用SqlSession实例来执行映射语句,commit,rollback,close等方法。
- * @return
- */
- 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);
- if(delList != null) {
- 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("ding");
- bean.setSex("男");
- bean.setBirs(date);
- bean.setMessage("This is Clob!");
- dao.add(bean);
- List<User> list = dao.queryByList(nullBean);
- if(list != null) {
- for(User user : list) {
- System.out.println(user.getName()+user.getMessage());
- }
- }
- //查询并更新
- bean = new User();
- bean.setName("ding");
- List<User> queList = dao.queryByList(bean);
- if(queList != null) {
- for(User user : list) {
- user.setSex("女");
- dao.updateBySelective(user);
- }
- }
- list = dao.queryByList(nullBean);
- if(list != null) {
- for(User user : list) {
- System.out.println(user.getSex());
- }
- }
- //查询并更新
- bean = new User();
- bean.setName("ding");
- List<User> queList2 = dao.queryByList(bean);
- if(queList != null) {
- for(User user : queList2) {
- user.setSex("男");
- user.setMessage("");
- dao.update(user);
- }
- }
- list = dao.queryByList(nullBean);
- if(list != null) {
- for(User user : list) {
- System.out.println(user.getSex());
- }
- }
- int num = dao.queryByCount(nullBean);
- System.out.println("num=" + num);
- //默认是不提交的,所以这里手工提交
- sqlSession.commit();
- }
- }
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.southgis.scout.demo.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:@192.168.56.102:1521:orcl" />
- <property name="username" value="scott" />
- <property name="password" value="tiger" />
- </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.southgis.scout.demo.UsersMapper" >
- <!-- Result Map-->
- <resultMap type="com.southgis.scout.demo.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.southgis.scout.demo.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>
【转】mybatis连接Oracle做增删改查的更多相关文章
- Mybatis连接Oracle实现增删改查实践
1. 首先要在项目中增加Mybatis和Oracle的Jar文件 这里我使用的版本为ojdbc7 Mybatis版本为:3.2.4 2. 在Oracle中创建User表 create table T_ ...
- 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 数据库的经典操作:增删改查. 在这一章我们主要说明一下简单的查询和增删改, ...
- sqlHelper做增删改查,SQL注入处理,存储值,cookie,session
一.存储值 eg:登录一个页面,在进入这个页面之前你怎么知道它登没登录呢?[在登录成功之后我们把状态保存起来] 存储值得方式有两种,一种是cookie,一种是session 1.1区别: 代码: if ...
- Java连接MongoDB进行增删改查
1.导入必须的包: 详情看项目:http://pan.baidu.com/s/1cvDAOY 2.通过Myeclipse创建WEB项目 3. 3.bean:创建实体类 package com.bean ...
- java对xml文件做增删改查------摘录
java对xml文件做增删改查 package com.wss; import java.io.File;import java.util.ArrayList;import java.util.Lis ...
- mvc模式jsp+servel+dbutils oracle基本增删改查demo
mvc模式jsp+servel+dbutils oracle基本增删改查demo 下载地址
随机推荐
- Win10下Clion配置opencv3
本人不想在爱机装一个vs2013或者vs2015这种庞然大物,可是手头要弄一个基于windows的opencv项目,就只好装了个Clion,期间踩了不少坑,记录一下. 参考网址:http://www. ...
- Failed to resolve: 之一
摘要:编译不通过提示错误如下:gradle文件里边对应:解决方案:在gradle文件里边加上.+,解决后gradle文件如下图所示:然后编译就能通过. 解决方案: 在gradle文件里边加上.+,解决 ...
- CustomValidator控件用法
虽然大部分时间一直从事asp.net的开发,对于一些常用的asp.net服务器端验证控件及它们的组合使用比较熟悉,如:CompareValidator ——比较验证控件RangeValidator — ...
- [转]SSH 原理和基本使用:ssh 安全配置 以及ssh key 认证登录
一.什么是 SSH ? SSH全称(Secure SHell)是一种网络协议,顾名思义就是非常安全的shell,主要用于计算机间加密传输.早期,互联网通信都是基于明文通信,一旦被截获,内容就暴露无遗. ...
- git概念及工作流程详解
git概念及工作流程详解 既然我们已经把gitlab安装完毕[当然这是非必要条件],我们就可以使用git来管理自己的项目了,前文也多多少少提及到git的基本命令,本文就先简单对比下SVN与git的区别 ...
- 主流磁盘接口比较(SATA/SCSI/SAS/FC)[转]
数据越来越多,用户对存储容量的要求是越来越高.作为数据存储最基本的介质——硬盘,其种类也越来越多.面对市场上纷繁复杂的硬盘,用户又该如何选择呢?本文就对SATA.FC.SAS三种硬盘进行了比较,希望能 ...
- PHP读取超大日志文件
打开一个17G的日志文件,都不吃力,除了占cpu之外,内存占用不多,如果直接fopen根本打不开 注:它是逐行读取的 foreach( glob( ngx_log. "/*.log" ...
- MySQL,如何修改root帐户密码、如何解决root帐户忘记密码的问题
1. 如何修改root帐户密码 打开MySQL 5.6 Command Line Client窗口,输入当前密码登录,然后依次输入如下3条命令: use mysql; update user set ...
- 关于 sql server 数据库权限乱七八糟的一些东西
研究权限这些东西主要是因为今天正好在折腾数据库备份相关的东西,备份好说,备份完了就完了. 但是恢复备份的时候,需要先让数据库脱机,然后恢复,然后再联机,嗯,问题就出在联机上了. 根据 MSDN 的说法 ...
- .NET MVC5+ EF+AutoFac自动注入框架
1.创建一个MVC系统 VIEW显示页面代码: <link href="~/Content/bootstrap.css" rel="stylesheet" ...