【转】mybatis连接Oracle做增删改查
2017-05-03 10:53
323 查看
原文地址:http://blog.csdn.net/liumengcheng/article/details/34422475
入门请看http://blog.csdn.NET/liumengcheng/article/details/34409783
首先创建表
[sql] view plain copy
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
[java] view plain copy
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
[java] view plain copy
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
[java] view plain copy
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
[java] view plain copy
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
[html] view plain copy
<?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
[html] view plain copy
<?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>
入门请看http://blog.csdn.NET/liumengcheng/article/details/34409783
首先创建表
[sql] view plain copy
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
[java] view plain copy
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
[java] view plain copy
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
[java] view plain copy
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
[java] view plain copy
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
[html] view plain copy
<?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
[html] view plain copy
<?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实现增删改查实践
- Spring+Mybatis 框架在 Oracle12c中实现增删改查,报错ORA-01017
- jsp+servlet+mybatis+oracle+Tomcat实现数据库用户增删改查功能
- java 连接oracle 进行增删改查
- Mybatis增删改查(连接mysql数据库)
- MyBatis连接数据库增删改查,并使用log4j.
- mybatis 连接 oracle模糊查询concat关键字
- JDBC连接ORACLE 增删改查
- 连接oracle,附通用增删改查方法
- mybatis连接oracle,为什么要设置字段默认类型
- Intellij Mybatis连接Mysql数据库,并且实现动态sql,增删改查等
- springMVC+MyBatis+Oracle+Web实现增删改查(附带完整案例+数据库数据)
- Mybatis之Oracle增删查改示例--转
- oracle连接数据库以及增删改查(全面)
- python cx_Oracle的基础使用方法(连接和增删改查)
- java通过jdbc连接Oracle通过数据库连接池实现增删改查
- Mybatis学习之路之Oracle增删改查以及常用函数<二>
- C#连接oracle实现增删改查
- Mybatis之Oracle增删查改示例(含Date、Clob数据类型操作)