【转】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 下载地址
随机推荐
- 【js】在js中加HTML注释标签的原因?
<script type="text/JavaScript"> <!-- js代码 //--> //就是这句,为什么还要在-->前加上js注释 < ...
- stm32开发 - 远离 Keil uVision, 回到 Visual Studio
学了8051单片机, 学了MSP430系列, 终于开始步入正轨, 开始学习 stm32(ARM Cortex-M3)系列微处理器~ 学51用Keil uVision开发环境, 提一下Keil uVis ...
- SharePoint自动化部署,利用SPSD工具包
目录 怎样使用SPSD 配置Environment XML文件 PowerShell激活Feature 上篇博客讲了利用PowerShell导出.导入AD中的Users.这篇介绍简单介绍一下SPSD ...
- json解析为泛型对象
一.方法 public <T> T jsonToObjByType(String str, Type type) { try { if (isValidJson(str)) { retur ...
- 《自己动手写框架2》:用200行的DBF解析器来展示良好架构设计
因为工作关系.须要工作其中,须要读取DBF文件.找了一些DBF读取开源软件,要么是太过庞大,动不动就上万行.要么是功能有问题,编码,长度,总之是没有找到一个很爽的. 在万般无奈之下,我老人家怒从心头起 ...
- stm32定时器主从模式
TIM2作master:TIM3,TIM4作slave 定时器2事件更新被用作触发输出TRGO 从定时器TIM3,TIM4工作在从模式:门控模式 触发选择设为:ITR1,这样TIM2的TRGO就连到了 ...
- 活久见: 原来 Chrome 浏览器支持 Import from 语法
需要满足以下三个条件: 1.高版本的Chrome ,总而言之越新越好……,其他浏览器请参考:https://caniuse.com/#search=import 2.必须在服务器环境下才能运行,譬如a ...
- 物联网将在2018年实现大规模发展--IBM的四大预测
物联网将在2018年实现大规模发展--IBM的四大预测 数据是数字化变革的基本组成部分,物联网.人工智能.区块链.边缘计算等技术预计将在来年掀起巨浪, 因为这些技术是收集.分析和存储信息的方法. ...
- php使用CURL不依赖COOKIEJAR获取COOKIE的方法
本文实例讲述了php使用CURL不依赖COOKIEJAR获取COOKIE的方法.分享给大家供大家参考.具体分析如下: PHP中CURL类是一个非常牛逼的工具类,具体怎么牛逼就不啰嗦了. 对于COOKI ...
- Java操作XML的JAXB工具
在java中操作XML的工作中中,比较方便的工具是JAXB(Java Architecture for XML Binding). 利用这个工具很方便生成XML的tag和Java类的对应关系.参照网上 ...