【转】mybatis连接Oracle做增删改查

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

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

 

首先创建表

[sql] view plain copy 在CODE上查看代码片派生到我的代码片
  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

[java] view plain copy 在CODE上查看代码片派生到我的代码片
  1. package com.southgis.scout.demo;  
  2.   
  3. import java.util.Date;  
  4. /** 
  5.  * 用户类 
  6.  *  
  7.  * @author lmc 
  8.  *  
  9.  */  
  10. public class User {  
  11.     private String name;  
  12.     private String sex;  
  13.     private Integer id;  
  14.     private Date birs;  
  15.     private String message;  
  16.   
  17.       
  18.     public String getMessage() {  
  19.         return message;  
  20.     }  
  21.       
  22.     public void setMessage(String pMessage) {  
  23.         this.message = pMessage;  
  24.     }  
  25.       
  26.     public Date getBirs() {  
  27.         return birs;  
  28.     }  
  29.       
  30.     public void setBirs(Date pbirs) {  
  31.         this.birs = pbirs;  
  32.     }  
  33.       
  34.     public String getName() {  
  35.         return name;  
  36.     }  
  37.       
  38.     public void setName(String name) {  
  39.         this.name = name;  
  40.     }  
  41.       
  42.     public String getSex() {  
  43.         return sex;  
  44.     }  
  45.       
  46.     public void setSex(String psex) {  
  47.         this.sex = psex;  
  48.     }  
  49.       
  50.     public Integer getId() {  
  51.         return id;  
  52.     }  
  53.       
  54.     public void setID(Integer pid) {  
  55.         this.id = pid;  
  56.     }  
  57.       
  58.     public User() {  
  59.     }  
  60.   
  61. }  




UsersMapper.java

[java] view plain copy 在CODE上查看代码片派生到我的代码片
  1. package com.southgis.scout.demo;  
  2.   
  3. import java.util.List;  
  4. import com.southgis.scout.demo.User;    
  5. public interface UsersMapper {  
  6.   
  7.     public void add(User t);  
  8.   
  9.     public void update(User t);  
  10.   
  11.     public void updateBySelective(User t);  
  12.   
  13.     public void delete(Object id);  
  14.   
  15.     public User queryById(Object id);  
  16.       
  17.     public List<User> queryBySelective(User t);  
  18.       
  19.     public int queryByCount(User t);  
  20.   
  21.     public List<User> queryByList(User t);  
  22.       
  23. }  




OracleClobTypeHandler.java

[java] view plain copy 在CODE上查看代码片派生到我的代码片
  1. package com.southgis.scout.demo;  
  2.   
  3. import java.sql.CallableStatement;  
  4. import java.sql.PreparedStatement;  
  5. import java.sql.ResultSet;  
  6. import java.sql.SQLException;  
  7.   
  8. import oracle.sql.CLOB;  
  9.   
  10. import org.apache.ibatis.type.JdbcType;  
  11. import org.apache.ibatis.type.TypeHandler;  
  12.   
  13. public class OracleClobTypeHandler implements TypeHandler<Object> {  
  14.       
  15.     public Object valueOf(String param) {  
  16.         return null;  
  17.     }  
  18.   
  19.     @Override  
  20.     public Object getResult(ResultSet arg0, String arg1) throws SQLException {  
  21.         CLOB clob = (CLOB) arg0.getClob(arg1);  
  22.         return (clob == null || clob.length() == 0) ? null : clob.getSubString((long) 1, (int) clob.length());  
  23.     }  
  24.   
  25.     @Override  
  26.     public Object getResult(ResultSet arg0, int arg1) throws SQLException {  
  27.         return null;  
  28.     }  
  29.   
  30.     @Override  
  31.     public Object getResult(CallableStatement arg0, int arg1) throws SQLException {  
  32.         return null;  
  33.     }  
  34.   
  35.     @Override  
  36.     public void setParameter(PreparedStatement arg0, int arg1, Object arg2, JdbcType arg3) throws SQLException {  
  37.         CLOB clob = CLOB.empty_lob();  
  38.         clob.setString(1, (String) arg2);  
  39.         arg0.setClob(arg1, clob);  
  40.     }  
  41. }  




main.java

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




configuration.xml

[html] view plain copy 在CODE上查看代码片派生到我的代码片
  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

[html] view plain copy 在CODE上查看代码片派生到我的代码片
    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.   
    8.     <!-- Result Map-->  
    9.     <resultMap type="com.southgis.scout.demo.User" id="BaseResultMap">  
    10.         <result property="id" column="id" />  
    11.         <result property="name" column="name" />  
    12.         <result property="sex" column="sex" />  
    13.         <result property="birs" column="birs" jdbcType="TIMESTAMP"/>  
    14.         <result property="message" column="message" jdbcType="CLOB" javaType = "java.lang.String"  typeHandler ="com.southgis.scout.demo.OracleClobTypeHandler"/>  
    15.     </resultMap>  
    16.       
    17.     <!-- 表名-->  
    18.     <sql id="Tabel_Name">  
    19.         t_users  
    20.     </sql>  
    21.       
    22.     <!-- 表中所有列 -->  
    23.     <sql id="Base_Column_List" >  
    24.         id,name,sex,birs,message  
    25.     </sql>  
    26.   
    27.     <!-- 查询条件 -->  
    28.     <sql id="Example_Where_Clause">  
    29.         where 1=1  
    30.         <trim suffixOverrides=",">  
    31.             <if test="id != null">  
    32.                 and id = #{id}  
    33.             </if>  
    34.             <if test="name != null and name != ''">  
    35.                 and name like concat(concat('%', '${name}'), '%')  
    36.             </if>  
    37.             <if test="sex != null and sex != ''">  
    38.                 and sex like concat(concat('%', '${sex}'), '%')  
    39.             </if>  
    40.             <if test="birs != null">  
    41.                 and birs = #{birs}  
    42.             </if>  
    43.             <if test="message != null">  
    44.                 and message = #{message}  
    45.             </if>  
    46.         </trim>  
    47.     </sql>  
    48.       
    49.     <!-- 下面的id都和接口UsersMapper中的方法名一样-->  
    50.       
    51.     <!-- 1.新增记录 -->  
    52.     <insert id="add" parameterType="Object" >  
    53.          <selectKey resultType="int" order="BEFORE" keyProperty="id">  
    54.             select seq_t_users_id.nextval as id from dual  
    55.         </selectKey>  
    56.         insert into t_users(id,name,sex,birs,message) values(#{id},#{name},#{sex},#{birs},#{message,jdbcType=CLOB})  
    57.     </insert>  
    58.   
    59.     <!-- 2.根据id修改记录-->    
    60.     <update id="update" parameterType="Object" >  
    61.         update t_users set name=#{name},sex=#{sex},birs=#{birs},message=#{message} where id=#{id}  
    62.     </update>  
    63.   
    64.     <!-- 3.只修改不为空的字段 -->  
    65.     <update id="updateBySelective" parameterType="Object" >  
    66.         update t_users set   
    67.         <trim  suffixOverrides="," >  
    68.             <if test="name != null  and name != '' ">  
    69.                 name=#{name},  
    70.             </if>  
    71.             <if test="sex != null  and sex != '' ">  
    72.                 sex=#{sex},  
    73.             </if>  
    74.             <if test="birs != null  ">  
    75.                 birs=#{birs},  
    76.             </if>  
    77.             <if test="message != null  and message != '' ">  
    78.                 message=#{message},  
    79.             </if>  
    80.         </trim> where id=#{id}  
    81.     </update>  
    82.   
    83.     <!-- 4.根据id进行删除 -->  
    84.     <delete id="delete" parameterType="Object">  
    85.         delete from t_users where id = #{id}  
    86.     </delete>  
    87.       
    88.     <!-- 5.根据id查询 -->  
    89.     <select id="queryById" resultMap="BaseResultMap" parameterType="Object">  
    90.         select  
    91.         <include refid="Base_Column_List" />  
    92.         from t_users where id = #{id}  
    93.     </select>  
    94.   
    95.     <!-- 6.查询列表,只查询不为空的字段 -->  
    96.     <select id="queryBySelective" resultMap="BaseResultMap" parameterType="Object">  
    97.         select  
    98.         <include refid="Base_Column_List" />  
    99.         from t_users  
    100.         <include refid="Example_Where_Clause" />  
    101.     </select>  
    102.       
    103.     <!-- 7.列表总数 -->  
    104.     <select id="queryByCount" resultType="java.lang.Integer" parameterType="Object">  
    105.         select count(1) from t_users  
    106.         <include refid="Example_Where_Clause" />  
    107.     </select>  
    108.       
    109.     <!-- 8.查询列表 -->  
    110.     <select id="queryByList" resultMap="BaseResultMap" parameterType="Object">  
    111.         select  
    112.         <include refid="Base_Column_List" />  
    113.         from t_users   
    114.         <include refid="Example_Where_Clause"/>  
    115.     </select>  
    116. </mapper>     
posted @ 2017-05-03 10:53  dirgo  阅读(315)  评论(0编辑  收藏  举报