【转】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 下载地址
随机推荐
- 替换SQL字段中的换行符,回车符
替换SQL字段中的换行符,回车符: 在富文本内容中通常会出现回车.换行内容.在sql数据库中这些回车.换行符,输出html后,表现为空格. 这里是在数据导出.导入中发现的,通常把回车.换行符找出来,用 ...
- SQLServer2008 全文检索摘记
最近在做全文搜索的内容,google了一下全文检索,发现了一些问题,现在总结如下: 全文索引和查询概念(摘自SQL 联机帮助)SQL Server 2008 为应用程序和用户提供了对 SQL Serv ...
- .net framework多个版本在IIS服务器上时应注意-重新注册IIS-错误Server Application Unavailable
今天客户一个附件上传的应用程序报错,服务器安装了.net 4.0 framework(还有1.0和2.0版本),因为有网站程序需要用到2.0,配置好站点后,附件程序是用的2.0,Mail程序选择版本为 ...
- 解决 p0sixspwn-v1.0.4 win版 无法定位程序输入点sqlite3_wal_checkpoint的问题
p0sixspwn-v1.0.4 win版今天早晨发现大神( @winocm · @iH8sn0w · @SquiffyPwn) 已经发布. 下载下来运行之,发现会报错: 无法定位程序输入点sqlit ...
- Java:多线程,CountDownLatch同步器
1. 背景 CountDownLatch类,在完成一组正在其他线程中执行的操作之前,它允许一个或多个线程一直等待. 用给定的计数 初始化 CountDownLatch.由于调用了 countDown( ...
- Android调试桥-Android Debug Birdge详解
原文:http://android.eoe.cn/topic/summary Android调试桥-Android Debug Birdge Android调试桥(adb)是一个多功能的命令行功具,它 ...
- 一个里表世界切换的shader效果
之前GGJ实现了一个,但是实现方式上有很多冗余.今天正好在做一个类似的东西,重新做了一个版本 还是当时美术画的素材: 由于里表世界是不同的内容,是两张材质.所以拆分成不同Layer之后,里世界单独渲染 ...
- VS2017中建立ASP.NET MVC 4.0项目
新的项目需要运行在WIN2003上,又不想用ASPX了,只好用回ASP.NET MVC4.0了,可是在VS2017中已经没有MVC4的模板了,网上下载的安装了也没有,只好把以前的MVC4的项目拿 出来 ...
- 菜鸟译文(一)——Java中的继承和组合
阅读英文的能力对于程序员来说,是很重要的.这几年也一直在学习英文,今天心血来潮,就在网上找了一篇简短的博文翻译一下.水平一般,能力有限,还请各位看官多多指点. 译文: 本文将会举例说明Java中继承和 ...
- android 去掉标题栏、状态栏、横屏
// 去掉标题栏 supportRequestWindowFeature(Window.FEATURE_NO_TITLE); // 全屏.隐藏状态栏 getWindow().setFlags(Wind ...