• 【转】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>     
  • 相关阅读:
    sqli-labs 第四关
    sqli-labs 第三关
    sqli-labs 第二关
    sqli-labs 第一关
    Buuctf-misc-假如给我三天光明
    Buuctf-misc-另外一个世界
    Buuctf-misc-FLAG
    量化投资_合成数据
    量化投资_止盈止损在策略中的有效性(改编)
    量化投资_金融数据信息处理的新维度(A New Dimension to Deal Data Information of Finance)【论文/时海涛】
  • 原文地址:https://www.cnblogs.com/dirgo/p/6800732.html
Copyright © 2020-2023  润新知