原文地址:http://blog.csdn.net/liumengcheng/article/details/34422475

入门请看http://blog.csdn.NET/liumengcheng/article/details/34409783

首先创建表

  1. create table T_USERS
  2. (
  3. ID      NUMBER not null,
  4. NAME    VARCHAR2(30),
  5. SEX     VARCHAR2(3),
  6. BIRS    DATE,
  7. MESSAGE CLOB
  8. );
  9. create sequence SEQ_T_USERS_ID
  10. minvalue 1
  11. maxvalue 99999999
  12. start with 1
  13. increment by 1
  14. cache 20;

User.java

  1. package com.southgis.scout.demo;
  2. import java.util.Date;
  3. /**
  4. * 用户类
  5. *
  6. * @author lmc
  7. *
  8. */
  9. public class User {
  10. private String name;
  11. private String sex;
  12. private Integer id;
  13. private Date birs;
  14. private String message;
  15. public String getMessage() {
  16. return message;
  17. }
  18. public void setMessage(String pMessage) {
  19. this.message = pMessage;
  20. }
  21. public Date getBirs() {
  22. return birs;
  23. }
  24. public void setBirs(Date pbirs) {
  25. this.birs = pbirs;
  26. }
  27. public String getName() {
  28. return name;
  29. }
  30. public void setName(String name) {
  31. this.name = name;
  32. }
  33. public String getSex() {
  34. return sex;
  35. }
  36. public void setSex(String psex) {
  37. this.sex = psex;
  38. }
  39. public Integer getId() {
  40. return id;
  41. }
  42. public void setID(Integer pid) {
  43. this.id = pid;
  44. }
  45. public User() {
  46. }
  47. }

UsersMapper.java

  1. package com.southgis.scout.demo;
  2. import java.util.List;
  3. import com.southgis.scout.demo.User;
  4. public interface UsersMapper {
  5. public void add(User t);
  6. public void update(User t);
  7. public void updateBySelective(User t);
  8. public void delete(Object id);
  9. public User queryById(Object id);
  10. public List<User> queryBySelective(User t);
  11. public int queryByCount(User t);
  12. public List<User> queryByList(User t);
  13. }

OracleClobTypeHandler.java

  1. package com.southgis.scout.demo;
  2. import java.sql.CallableStatement;
  3. import java.sql.PreparedStatement;
  4. import java.sql.ResultSet;
  5. import java.sql.SQLException;
  6. import oracle.sql.CLOB;
  7. import org.apache.ibatis.type.JdbcType;
  8. import org.apache.ibatis.type.TypeHandler;
  9. public class OracleClobTypeHandler implements TypeHandler<Object> {
  10. public Object valueOf(String param) {
  11. return null;
  12. }
  13. @Override
  14. public Object getResult(ResultSet arg0, String arg1) throws SQLException {
  15. CLOB clob = (CLOB) arg0.getClob(arg1);
  16. return (clob == null || clob.length() == 0) ? null : clob.getSubString((long) 1, (int) clob.length());
  17. }
  18. @Override
  19. public Object getResult(ResultSet arg0, int arg1) throws SQLException {
  20. return null;
  21. }
  22. @Override
  23. public Object getResult(CallableStatement arg0, int arg1) throws SQLException {
  24. return null;
  25. }
  26. @Override
  27. public void setParameter(PreparedStatement arg0, int arg1, Object arg2, JdbcType arg3) throws SQLException {
  28. CLOB clob = CLOB.empty_lob();
  29. clob.setString(1, (String) arg2);
  30. arg0.setClob(arg1, clob);
  31. }
  32. }

main.java

  1. package com.southgis.scout.demo;
  2. import java.io.IOException;
  3. import java.text.DateFormat;
  4. import java.text.ParseException;
  5. import java.text.SimpleDateFormat;
  6. import java.util.List;
  7. import java.util.Date;
  8. import org.apache.ibatis.io.Resources;
  9. import org.apache.ibatis.session.SqlSession;
  10. import org.apache.ibatis.session.SqlSessionFactory;
  11. import org.apache.ibatis.session.SqlSessionFactoryBuilder;
  12. import com.southgis.scout.demo.UsersMapper;
  13. import com.southgis.scout.demo.User;
  14. public class main {
  15. /**
  16. * 获得MyBatis SqlSessionFactory
  17. * SqlSessionFactory负责创建SqlSession,一旦创建成功,就可以用SqlSession实例来执行映射语句,commit,rollback,close等方法。
  18. * @return
  19. */
  20. private static SqlSessionFactory getSessionFactory() {
  21. SqlSessionFactory sessionFactory = null;
  22. String resource = "configuration.xml";
  23. try {
  24. sessionFactory = new SqlSessionFactoryBuilder().build(Resources
  25. .getResourceAsReader(resource));
  26. } catch (IOException e) {
  27. e.printStackTrace();
  28. }
  29. return sessionFactory;
  30. }
  31. public static void main(String[] args) {
  32. SqlSession sqlSession = getSessionFactory().openSession();
  33. UsersMapper dao = sqlSession.getMapper(UsersMapper.class);
  34. //删除表中所有信息
  35. User nullBean = new User();
  36. List<User> delList = dao.queryByList(nullBean);
  37. if(delList != null) {
  38. for(User user : delList) {
  39. dao.delete(user.getId());
  40. }
  41. }
  42. DateFormat dd=new SimpleDateFormat("yyyy-MM-dd");
  43. Date date=null;
  44. try {
  45. date = dd.parse("1985-01-01");
  46. } catch (ParseException e) {
  47. e.printStackTrace();
  48. }
  49. //新增
  50. User bean = new User();
  51. bean.setName("ding");
  52. bean.setSex("男");
  53. bean.setBirs(date);
  54. bean.setMessage("This is Clob!");
  55. dao.add(bean);
  56. List<User> list = dao.queryByList(nullBean);
  57. if(list != null) {
  58. for(User user : list) {
  59. System.out.println(user.getName()+user.getMessage());
  60. }
  61. }
  62. //查询并更新
  63. bean = new User();
  64. bean.setName("ding");
  65. List<User> queList = dao.queryByList(bean);
  66. if(queList != null) {
  67. for(User user : list) {
  68. user.setSex("女");
  69. dao.updateBySelective(user);
  70. }
  71. }
  72. list = dao.queryByList(nullBean);
  73. if(list != null) {
  74. for(User user : list) {
  75. System.out.println(user.getSex());
  76. }
  77. }
  78. //查询并更新
  79. bean = new User();
  80. bean.setName("ding");
  81. List<User> queList2 = dao.queryByList(bean);
  82. if(queList != null) {
  83. for(User user : queList2) {
  84. user.setSex("男");
  85. user.setMessage("");
  86. dao.update(user);
  87. }
  88. }
  89. list = dao.queryByList(nullBean);
  90. if(list != null) {
  91. for(User user : list) {
  92. System.out.println(user.getSex());
  93. }
  94. }
  95. int num = dao.queryByCount(nullBean);
  96. System.out.println("num=" + num);
  97. //默认是不提交的,所以这里手工提交
  98. sqlSession.commit();
  99. }
  100. }

configuration.xml

  1. <?xml version="1.0" encoding="UTF-8" ?>
  2. <!DOCTYPE configuration
  3. PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
  4. "http://mybatis.org/dtd/mybatis-3-config.dtd">
  5. <configuration>
  6. <typeAliases>
  7. <!--给实体类起一个别名 user 不过建议不要起别名,容易搞混-->
  8. <typeAlias type="com.southgis.scout.demo.User" alias="User" />
  9. </typeAliases>
  10. <!--数据源配置  这块用 Oracle数据库 -->
  11. <environments default="development">
  12. <environment id="development">
  13. <transactionManager type="jdbc" />
  14. <dataSource type="POOLED">
  15. <property name="driver" value="oracle.jdbc.OracleDriver" />
  16. <property name="url" value="jdbc:oracle:thin:@192.168.56.102:1521:orcl" />
  17. <property name="username" value="scott" />
  18. <property name="password" value="tiger" />
  19. </dataSource>
  20. </environment>
  21. </environments>
  22. <mappers>
  23. <!--UsersMapper.xml装载进来  同等于把“dao”的实现装载进来 -->
  24. <mapper resource="UsersMapper.xml" />
  25. </mappers>
  26. </configuration>

UsersMapper.xml

    1. <?xml version="1.0" encoding="UTF-8"?>
    2. <!DOCTYPE mapper
    3. PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
    4. "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
    5. <!--这块等于dao接口的实现  namespace必须和接口的类路径一样-->
    6. <mapper namespace="com.southgis.scout.demo.UsersMapper" >
    7. <!-- Result Map-->
    8. <resultMap type="com.southgis.scout.demo.User" id="BaseResultMap">
    9. <result property="id" column="id" />
    10. <result property="name" column="name" />
    11. <result property="sex" column="sex" />
    12. <result property="birs" column="birs" jdbcType="TIMESTAMP"/>
    13. <result property="message" column="message" jdbcType="CLOB" javaType = "java.lang.String"  typeHandler ="com.southgis.scout.demo.OracleClobTypeHandler"/>
    14. </resultMap>
    15. <!-- 表名-->
    16. <sql id="Tabel_Name">
    17. t_users
    18. </sql>
    19. <!-- 表中所有列 -->
    20. <sql id="Base_Column_List" >
    21. id,name,sex,birs,message
    22. </sql>
    23. <!-- 查询条件 -->
    24. <sql id="Example_Where_Clause">
    25. where 1=1
    26. <trim suffixOverrides=",">
    27. <if test="id != null">
    28. and id = #{id}
    29. </if>
    30. <if test="name != null and name != ''">
    31. and name like concat(concat('%', '${name}'), '%')
    32. </if>
    33. <if test="sex != null and sex != ''">
    34. and sex like concat(concat('%', '${sex}'), '%')
    35. </if>
    36. <if test="birs != null">
    37. and birs = #{birs}
    38. </if>
    39. <if test="message != null">
    40. and message = #{message}
    41. </if>
    42. </trim>
    43. </sql>
    44. <!-- 下面的id都和接口UsersMapper中的方法名一样-->
    45. <!-- 1.新增记录 -->
    46. <insert id="add" parameterType="Object" >
    47. <selectKey resultType="int" order="BEFORE" keyProperty="id">
    48. select seq_t_users_id.nextval as id from dual
    49. </selectKey>
    50. insert into t_users(id,name,sex,birs,message) values(#{id},#{name},#{sex},#{birs},#{message,jdbcType=CLOB})
    51. </insert>
    52. <!-- 2.根据id修改记录-->
    53. <update id="update" parameterType="Object" >
    54. update t_users set name=#{name},sex=#{sex},birs=#{birs},message=#{message} where id=#{id}
    55. </update>
    56. <!-- 3.只修改不为空的字段 -->
    57. <update id="updateBySelective" parameterType="Object" >
    58. update t_users set
    59. <trim  suffixOverrides="," >
    60. <if test="name != null  and name != '' ">
    61. name=#{name},
    62. </if>
    63. <if test="sex != null  and sex != '' ">
    64. sex=#{sex},
    65. </if>
    66. <if test="birs != null  ">
    67. birs=#{birs},
    68. </if>
    69. <if test="message != null  and message != '' ">
    70. message=#{message},
    71. </if>
    72. </trim> where id=#{id}
    73. </update>
    74. <!-- 4.根据id进行删除 -->
    75. <delete id="delete" parameterType="Object">
    76. delete from t_users where id = #{id}
    77. </delete>
    78. <!-- 5.根据id查询 -->
    79. <select id="queryById" resultMap="BaseResultMap" parameterType="Object">
    80. select
    81. <include refid="Base_Column_List" />
    82. from t_users where id = #{id}
    83. </select>
    84. <!-- 6.查询列表,只查询不为空的字段 -->
    85. <select id="queryBySelective" resultMap="BaseResultMap" parameterType="Object">
    86. select
    87. <include refid="Base_Column_List" />
    88. from t_users
    89. <include refid="Example_Where_Clause" />
    90. </select>
    91. <!-- 7.列表总数 -->
    92. <select id="queryByCount" resultType="java.lang.Integer" parameterType="Object">
    93. select count(1) from t_users
    94. <include refid="Example_Where_Clause" />
    95. </select>
    96. <!-- 8.查询列表 -->
    97. <select id="queryByList" resultMap="BaseResultMap" parameterType="Object">
    98. select
    99. <include refid="Base_Column_List" />
    100. from t_users
    101. <include refid="Example_Where_Clause"/>
    102. </select>
    103. </mapper>

【转】mybatis连接Oracle做增删改查的更多相关文章

  1. Mybatis连接Oracle实现增删改查实践

    1. 首先要在项目中增加Mybatis和Oracle的Jar文件 这里我使用的版本为ojdbc7 Mybatis版本为:3.2.4 2. 在Oracle中创建User表 create table T_ ...

  2. ASP.NET C# 连接 Oracle数据库增删改查,事务

    一.知识介绍 ①ASP.NET 使用的是MVC模式,开发工具Visual studio ,语言C# ②Oracle是比较重型的数据库,这里主要介绍连接数据库,对数据进行具体的使用 ③Visual St ...

  3. C# 连接 Oracle数据库增删改查,事务

    一. 前情提要 一般.NET环境连接Oracle数据库,是通过 TNS/SQL.NET 配置文件,而 TNS 必须要 Oracle 客户端(如果连接的是服务器的数据库,本地还要装一个 client , ...

  4. java 连接oracle 进行增删改查

    1.在DAO层新增类OraclePersionDao package com.test.dao; import java.sql.*; /** * Created by wdw on 2017/9/1 ...

  5. MyBatis学习系列二——增删改查

    目录 MyBatis学习系列一之环境搭建 MyBatis学习系列二——增删改查 MyBatis学习系列三——结合Spring 数据库的经典操作:增删改查. 在这一章我们主要说明一下简单的查询和增删改, ...

  6. sqlHelper做增删改查,SQL注入处理,存储值,cookie,session

    一.存储值 eg:登录一个页面,在进入这个页面之前你怎么知道它登没登录呢?[在登录成功之后我们把状态保存起来] 存储值得方式有两种,一种是cookie,一种是session 1.1区别: 代码: if ...

  7. Java连接MongoDB进行增删改查

    1.导入必须的包: 详情看项目:http://pan.baidu.com/s/1cvDAOY 2.通过Myeclipse创建WEB项目 3. 3.bean:创建实体类 package com.bean ...

  8. java对xml文件做增删改查------摘录

    java对xml文件做增删改查 package com.wss; import java.io.File;import java.util.ArrayList;import java.util.Lis ...

  9. mvc模式jsp+servel+dbutils oracle基本增删改查demo

    mvc模式jsp+servel+dbutils oracle基本增删改查demo 下载地址

随机推荐

  1. 替换SQL字段中的换行符,回车符

    替换SQL字段中的换行符,回车符: 在富文本内容中通常会出现回车.换行内容.在sql数据库中这些回车.换行符,输出html后,表现为空格. 这里是在数据导出.导入中发现的,通常把回车.换行符找出来,用 ...

  2. SQLServer2008 全文检索摘记

    最近在做全文搜索的内容,google了一下全文检索,发现了一些问题,现在总结如下: 全文索引和查询概念(摘自SQL 联机帮助)SQL Server 2008 为应用程序和用户提供了对 SQL Serv ...

  3. .net framework多个版本在IIS服务器上时应注意-重新注册IIS-错误Server Application Unavailable

    今天客户一个附件上传的应用程序报错,服务器安装了.net 4.0 framework(还有1.0和2.0版本),因为有网站程序需要用到2.0,配置好站点后,附件程序是用的2.0,Mail程序选择版本为 ...

  4. 解决 p0sixspwn-v1.0.4 win版 无法定位程序输入点sqlite3_wal_checkpoint的问题

    p0sixspwn-v1.0.4 win版今天早晨发现大神( @winocm · @iH8sn0w · @SquiffyPwn) 已经发布. 下载下来运行之,发现会报错: 无法定位程序输入点sqlit ...

  5. Java:多线程,CountDownLatch同步器

    1. 背景 CountDownLatch类,在完成一组正在其他线程中执行的操作之前,它允许一个或多个线程一直等待. 用给定的计数 初始化 CountDownLatch.由于调用了 countDown( ...

  6. Android调试桥-Android Debug Birdge详解

    原文:http://android.eoe.cn/topic/summary Android调试桥-Android Debug Birdge Android调试桥(adb)是一个多功能的命令行功具,它 ...

  7. 一个里表世界切换的shader效果

    之前GGJ实现了一个,但是实现方式上有很多冗余.今天正好在做一个类似的东西,重新做了一个版本 还是当时美术画的素材: 由于里表世界是不同的内容,是两张材质.所以拆分成不同Layer之后,里世界单独渲染 ...

  8. VS2017中建立ASP.NET MVC 4.0项目

    新的项目需要运行在WIN2003上,又不想用ASPX了,只好用回ASP.NET MVC4.0了,可是在VS2017中已经没有MVC4的模板了,网上下载的安装了也没有,只好把以前的MVC4的项目拿 出来 ...

  9. 菜鸟译文(一)——Java中的继承和组合

    阅读英文的能力对于程序员来说,是很重要的.这几年也一直在学习英文,今天心血来潮,就在网上找了一篇简短的博文翻译一下.水平一般,能力有限,还请各位看官多多指点. 译文: 本文将会举例说明Java中继承和 ...

  10. android 去掉标题栏、状态栏、横屏

    // 去掉标题栏 supportRequestWindowFeature(Window.FEATURE_NO_TITLE); // 全屏.隐藏状态栏 getWindow().setFlags(Wind ...