| 注册
请输入搜索内容

热门搜索

Java Linux MySQL PHP JavaScript Hibernate jQuery Nginx
cyjjkz1
9年前发布

用于jdbc 连接sqlite数据库的dao层

c3p0部分配置    

package com.jht.navigate;    import java.sql.Connection;  import java.sql.ResultSet;  import java.sql.SQLException;  import java.sql.Statement;    import com.mchange.v2.c3p0.ComboPooledDataSource;    public class C3P0Utils {   private static ComboPooledDataSource ds = new ComboPooledDataSource();     static {    try {     Class.forName("org.sqlite.JDBC");     String path = C3P0Utils.class.getResource("/").getPath();     ds.setJdbcUrl("jdbc:sqlite:" + path + "test.db");    } catch (ClassNotFoundException e) {     e.printStackTrace();    }   }     /**    * 打开数据库连接    */   public static Connection openConnection() {    Connection conn = null;    try {     conn = ds.getConnection();    } catch (SQLException e) {     e.printStackTrace();    }    return conn;   }     /**    * 关闭数据库    */   public static void closeAll(Connection con, Statement stmt, ResultSet rs) {    try {     if (con != null) {      con.close();     }     if (stmt != null) {      stmt.close();     }     if (rs != null) {      rs.close();     }    } catch (SQLException e) {     e.printStackTrace();    }   }  }

dao接口    

package com.jht.navigate;    import java.util.List;    /**   * @author chmin<br>   * @time 2016年1月23日 上午9:35:51<br>   */  public interface IBaseDao<T> {     // 保存实体   boolean add(T t);     // 删除实体   boolean remove(T t);     // 根据id删除   boolean remove(int id);     // 更新实体数据   boolean update(T t);     // 添加或更新,有则更新,无则添加   boolean addOrUpdate(T t);     // 用id获取一个实体   T getObjectById(int id);     // 用khdm获取一个实体   T getObjectByName(String khdm);     // 自定义获取一个实体   T getObject(String sql, Object[] parameters);     // 自定义获取一个集合   List<T> getObjects(String sql, Object[] parameters);     // 根据khdm返回集合   List<T> getObjectsByName(String khdm);     // 获取所有实体   List<T> getObjects();  }

[代码]dao辅助(需要jdk7)    

package com.jht.navigate;    import java.lang.reflect.Method;  import java.sql.Connection;  import java.sql.PreparedStatement;  import java.sql.ResultSet;  import java.sql.ResultSetMetaData;  import java.sql.SQLException;  import java.util.ArrayList;  import java.util.List;    /**   * @author chmin<br>   * @time 2016年1月23日 上午9:41:43<br>   */  public class DaoHandle {     /**    * 更新和删除    * @param sql    * @param parameters    * @return    */   public static int executeUpdate(String sql, Object[] parameters) {    return execute(sql, parameters, 0);   }      /**    * 添加    * @param sql    * @param parameters    * @return    */   public static int insert(String sql, Object[] parameters) {    return execute(sql, parameters, 1);   }      /**    * 执行增删改    * @param sql    * @param parameters    * @param type 0为删改,1为增加    * @return    */   private static int execute(String sql, Object[] parameters, int type){    Connection con = C3P0Utils.openConnection();    int count = 0;    if (con != null) {     try (PreparedStatement ps = con.prepareStatement(sql);) {      for (int i = type + 1; i <= parameters.length + type; i++) {       ps.setObject(i, parameters[i - (1 + type)]);      }      count = ps.executeUpdate();     } catch (SQLException e) {      e.printStackTrace();     } finally {      C3P0Utils.closeAll(con, null, null);     }    }    return count;   }     /**    * 执行查询,并将值反射到bean    * @param sql    * @param parameters    * @param clazz    * @return    */   public static <T> List<T> select(String sql, Object[] parameters, Class<T> clazz) {    List<T> list = new ArrayList<T>();    Connection conn = C3P0Utils.openConnection();    PreparedStatement ps = null;    ResultSet rs = null;    try {     ps = conn.prepareStatement(sql);     if(parameters != null){      for (int i = 1; i <= parameters.length; i++) {       ps.setObject(i, parameters[i - 1]);      }     }     // 执行查询方法     rs = ps.executeQuery();     ResultSetMetaData rsmd = rs.getMetaData();     List<String> columnList = new ArrayList<String>();     for (int i = 0; i < rsmd.getColumnCount(); i++) {      columnList.add(rsmd.getColumnName(i + 1));     }     // 循环遍历记录     while (rs.next()) {      // 创建封装记录的对象      T obj = clazz.newInstance();      // 遍历一个记录中的所有列      for (int i = 0; i < columnList.size(); i++) {       // 获取列名       String column = columnList.get(i);       // 根据列名创建set方法       String setMethd = "set" + column.substring(0, 1).toUpperCase() + column.substring(1);       // 获取clazz中所有方法对应的Method对象       Method[] ms = clazz.getMethods();       // 循环遍历ms       for (int j = 0; j < ms.length; j++) {        // 获取每一个method对象        Method m = ms[j];        // 判断m中对应的方法名和数据库中列名创建的set方法名是否形同        if (m.getName().equals(setMethd)) {         // 反调set方法封装数据         m.invoke(obj, rs.getObject(column));// 获取rs中对应的值,封装到obj中         break; // 提高效率        }       }      }      list.add(obj);     }    } catch (Exception e) {     e.printStackTrace();    } finally {     C3P0Utils.closeAll(conn, ps, rs);    }    return list;   }  }  

[代码]dao impl层    

package com.jht.navigate;    import java.util.List;    /**   * @author chmin<br>   * @time 2016年1月23日 上午9:39:49<br>   */  public class ClientInfoDao implements IBaseDao<Clientinfo> {   /**    * 方便使用dao    */   public static ClientInfoDao dao = new ClientInfoDao();     /**    * 保存实体    */   @Override   public boolean add(Clientinfo t) {    String sql = "insert into tb_clientinfo values (?,?,?,?,?)";    Object[] parameters = new Object[]{t.getKhdm(), t.getCmpyname(), t.getPhone(), t.getAddr()};    return DaoHandle.insert(sql, parameters) == 1 ? true : false;   }     /**    * 删除实体    */   @Override   public boolean remove(Clientinfo t) {    return remove(t.getId());   }     /**    * 删除实体    */   @Override   public boolean remove(int id) {    String sql = "delete from tb_wxnavinfo where khdm = (select khdm from tb_clientinfo where id = ?)";    Object[] parameters = new Object[]{id};    DaoHandle.executeUpdate(sql, parameters);    sql = "delete from tb_clientinfo where id = ?";    return DaoHandle.executeUpdate(sql, parameters) == 1 ? true : false;   }     /**    * 更新    */   @Override   public boolean update(Clientinfo t) {    String sql = "update tb_clientinfo khdm = ?, cmpyname = ?, phone = ?, addr = ? where id = ?";    Object[] parameters = new Object[]{t.getKhdm(), t.getCmpyname(), t.getPhone(), t.getAddr(), t.getId()};    return DaoHandle.executeUpdate(sql, parameters) == 1 ? true : false;   }     @Override   public boolean addOrUpdate(Clientinfo t) {    if (getObjectByName(t.getKhdm()) == null) {     return add(t);    } else {     return update(t);    }   }     @Override   public Clientinfo getObjectById(int id) {    String sql = "select * from tb_clientinfo where id = ?";    Object[] parameters = new Object[]{id};    return getObject(sql, parameters);   }     @Override   public Clientinfo getObject(String sql, Object[] parameters) {    List<Clientinfo> list = DaoHandle.select(sql, parameters, Clientinfo.class);    return list == null ? null : list.get(0);   }     @Override   public Clientinfo getObjectByName(String khdm) {    String sql = "select * from tb_clientinfo where khdm = ?";    Object[] parameters = new Object[]{khdm};    return getObject(sql, parameters);   }     @Override   public List<Clientinfo> getObjectsByName(String khdm) {    String sql = "select * from tb_clientinfo where khdm = ?";    Object[] parameters = new Object[]{khdm};    return getObjects(sql, parameters);   }     @Override   public List<Clientinfo> getObjects() {    String sql = "select * from tb_clientinfo order by id desc";    Object[] parameters = new Object[]{};    return getObjects(sql, parameters);   }     @Override   public List<Clientinfo> getObjects(String sql, Object[] parameters) {    return DaoHandle.select(sql, parameters, Clientinfo.class);   }  }