zoukankan      html  css  js  c++  java
  • queryrunner Basedao的使用

    package com.oracle.dao;

    import java.lang.reflect.ParameterizedType;
    import java.lang.reflect.Type;
    import java.sql.Connection;
    import java.sql.SQLException;
    import java.util.Arrays;
    import java.util.List;

    import org.apache.commons.dbutils.QueryRunner;
    import org.apache.commons.dbutils.handlers.BeanHandler;
    import org.apache.commons.dbutils.handlers.BeanListHandler;
    import org.apache.commons.dbutils.handlers.ScalarHandler;

    import com.mysql.jdbc.JDBC4DatabaseMetaDataUsingInfoSchema;
    import com.oracle.utils.JDBCUtils;


    public class BaseDao<T> {
    public QueryRunner qr=new QueryRunner();
    private Class<T> clazz;
    public BaseDao(){
    Type type=this.getClass().getGenericSuperclass();
    if(type instanceof ParameterizedType){
    ParameterizedType pt=(ParameterizedType)type;
    Type[] array=pt.getActualTypeArguments();
    if(array[0] instanceof Class){
    clazz=(Class<T>)array[0];
    }
    }
    }
    /*
    * 非事务处理查询返回一个对象
    */
    public T get(String sql,Object...args){
    Connection conn=null;
    try {

    conn=JDBCUtils.getconnection();

    return qr.query(conn, sql, new BeanHandler<>(clazz), args);
    } catch (SQLException e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
    }finally{
    JDBCUtils.close(conn);
    }
    return null;
    }

    /*非事务处理返回一个列表
    *
    */
    public List<T> getList(String sql,Object...args){
    List<T> T=null;
    Connection conn=null;

    try {
    conn=JDBCUtils.getconnection();

    T=qr.query(conn, sql, new BeanListHandler<>(clazz), args);


    } catch (SQLException e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
    }finally{
    JDBCUtils.close(conn);
    }

    return T;
    }

    /*
    * 非事务处理更新
    */

    public int update(String sql,Object...args){
    Connection conn=null;
    conn=JDBCUtils.getconnection();
    int i=0;
    try {
    i = qr.update(conn, sql, args);
    } catch (SQLException e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
    }finally{
    JDBCUtils.close(conn);
    }
    return i;
    }

    /*
    * 非事务处理返回查询到的只有一个值的
    */

    public Object getValue(String sql,Object...args){
    Connection conn=null;
    QueryRunner q=new QueryRunner();
    try {
    conn=JDBCUtils.getconnection();
    return qr.query(conn, sql, new ScalarHandler(),args);
    } catch (Exception e) {
    // TODO: handle exception
    }finally{
    JDBCUtils.close(conn);
    }

    return null;
    }


    /*
    * 事务处理,查询一个对象
    */
    public T get(Connection conn,String sql,Object...args){
    T entity=null;

    try {
    entity=qr.query(conn, sql, new BeanHandler<>(clazz), args);
    } catch (SQLException e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
    }
    return entity;
    }

    /*
    * 事务处理,查询一个列表
    */
    public List<T> getList(Connection conn,String sql,Object...args){
    List<T> t=null;
    try {
    t=qr.query(conn, sql, new BeanListHandler<>(clazz), args);
    } catch (SQLException e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
    }
    return t;
    }

    /*
    * 事务处理更新
    */

    public int update(Connection conn,String sql,Object...args){
    int i=0;
    try {
    i = qr.update(conn, sql, args);
    } catch (SQLException e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
    }
    return i;
    }

    /*
    * 事务处理,获得object对象
    */
    public Object getValue(Connection conn,String sql,Object...args){
    Object value=null;
    try {
    value = qr.query(conn, sql, new ScalarHandler(), args);
    } catch (SQLException e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
    }
    return value;

    }

    }

  • 相关阅读:
    vue手机号正则表达式
    工作中linux常用命令速记!
    Mac os 升级到Catalina 之后的问题
    NX二次开发-UFUN获取某个部件或对象事例的父部件或对象事例(PartOcc)UF_ASSEM_ask_part_occurrence
    C#例子1(WinForm窗体开发)-带图形列表的系统登录程序
    NX二次开发-C#多线程技术做exe外部开发(批量导出PDF图纸例子)
    NX二次开发-C#使用DllImport调用libugui.dll里的内部函数自动将NX标题设置为prt路径例子(三部曲3)
    NX二次开发-C#使用DllImport调用libufun.dll里的UF函数学习方法及tag转handle例子(三部曲2)
    NX二次开发-C#创建XML和解析XML
    NX二次开发-C#使用DllImport调用libufun.dll里的UF函数(反编译.net.dll)调用loop等UF函数(三部曲1)
  • 原文地址:https://www.cnblogs.com/wxldlxt/p/11131931.html
Copyright © 2011-2022 走看看