JDBC工具類DataSourceUtils,dao介面程式碼示例;
阿新 • • 發佈:2019-01-04
DataSourceUtils工具類連線池用的是Druid:
import com.igeek.common.utils.DataSourceUtils; import java.sql.Connection; import java.sql.ResultSet; import java.sql.SQLException; import java.sql.Statement; import java.util.Properties; import javax.sql.DataSource; import com.alibaba.druid.pool.DruidDataSourceFactory; public class DataSourceUtils { private static DataSource dataSource ; private static ThreadLocal<Connection> tl = new ThreadLocal<Connection>(); static{ Properties properties = new Properties(); try { properties.load(DataSourceUtils.class.getResourceAsStream("/db.properties")); dataSource = DruidDataSourceFactory.createDataSource(properties); } catch (Exception e) { e.printStackTrace(); } } // 直接可以獲取一個連線池 public static DataSource getDataSource() { return dataSource; } // 獲取連線物件 public static Connection getConnection() throws SQLException { Connection con = tl.get(); if (con == null) { con = dataSource.getConnection(); tl.set(con); } return con; } // 開啟事務 public static void startTransaction() throws SQLException { Connection con = getConnection(); if (con != null) { con.setAutoCommit(false); } } // 事務回滾 public static void rollback() throws SQLException { Connection con = getConnection(); if (con != null) { con.rollback(); } } // 提交併且 關閉資源及從ThreadLocall中釋放 public static void commitAndRelease() throws SQLException { Connection con = getConnection(); if (con != null) { con.commit(); // 事務提交 con.close();// 關閉資源 tl.remove();// 從執行緒繫結中移除 } } // 關閉資源方法 public static void closeConnection() throws SQLException { Connection con = getConnection(); if (con != null) { con.close(); tl.remove();// 從執行緒繫結中移除 } } public static void closeStatement(Statement st) throws SQLException { if (st != null) { st.close(); } } public static void closeResultSet(ResultSet rs) throws SQLException { if (rs != null) { rs.close(); } } }
dao應用:
package com.igeek.shop.dao.impl; import java.sql.Connection; import java.sql.PreparedStatement; import java.sql.ResultSet; import java.util.ArrayList; import java.util.List; import com.igeek.common.utils.DataSourceUtils; import com.igeek.shop.dao.UserDao; import com.igeek.shop.entity.User; /** * * TODO * * 2018年9月1日上午10:26:41 */ public class UserDaoImpl implements UserDao { private Connection con = null; private PreparedStatement pst = null; private ResultSet rs = null; @Override public int save(User u) { int result=0; String sql = "insert into user(uid,username,password,name,email,telephone,birthday,sex,state,code) values(?,?,?,?,?,?,?,?,?,?)"; try { con = DataSourceUtils.getConnection(); pst = con.prepareStatement(sql); pst.setString(1, u.getUid()); pst.setString(2, u.getUsername()); pst.setString(3, u.getPassword()); pst.setString(4, u.getName()); pst.setString(5, u.getEmail()); pst.setString(6, u.getTelephone()); pst.setString(7, u.getBirthday()); pst.setString(8, u.getSex()); pst.setInt(9, u.getState()); pst.setString(10, u.getCode()); result = pst.executeUpdate(); } catch (Exception e) { e.printStackTrace(); }finally{ try { DataSourceUtils.closeResultSet(rs); DataSourceUtils.closeStatement(pst); DataSourceUtils.closeConnection(); } catch (Exception e2) { } } return result; } /* (non-Javadoc) * @see com.igeek.shop.dao.UserDao#updateUserState(com.igeek.shop.entity.User) */ @Override public int updateUserState(User u) { int result=0; String sql = "update user set state = ? where code=?"; try { con = DataSourceUtils.getConnection(); pst = con.prepareStatement(sql); pst.setInt(1, u.getState()); pst.setString(2, u.getCode()); result = pst.executeUpdate(); } catch (Exception e) { e.printStackTrace(); }finally{ try { DataSourceUtils.closeResultSet(rs); DataSourceUtils.closeStatement(pst); DataSourceUtils.closeConnection(); } catch (Exception e2) { } } return result; } /* (non-Javadoc) * @see com.igeek.shop.dao.UserDao#queryByUsername(java.lang.String) */ @Override public User queryByUsername(String username) { User user = null; String sql = "select * from user where username = ?"; try { con = DataSourceUtils.getConnection(); pst = con.prepareStatement(sql); pst.setString(1, username); rs = pst.executeQuery(); if(rs.next()){ user = new User(); user.setBirthday(rs.getString("birthday")); user.setCode(rs.getString("code")); user.setEmail(rs.getString("email")); user.setName(rs.getString("name")); user.setPassword(rs.getString("password")); user.setSex(rs.getString("sex")); user.setState(rs.getInt("state")); user.setTelephone(rs.getString("telephone")); user.setUid(rs.getString("uid")); user.setUsername(rs.getString("username")); } }catch (Exception e) { e.printStackTrace(); }finally{ try { DataSourceUtils.closeResultSet(rs); DataSourceUtils.closeStatement(pst); DataSourceUtils.closeConnection(); } catch (Exception e2) { } } return user; } /* (non-Javadoc) * @see com.igeek.shop.dao.UserDao#queryAll() */ @Override public List<User> queryAll() { List<User> users = new ArrayList<>(); String sql = "select * from user"; try { con = DataSourceUtils.getConnection(); pst = con.prepareStatement(sql); rs = pst.executeQuery(); while(rs.next()){ User user = new User(); user.setBirthday(rs.getString("birthday")); user.setCode(rs.getString("code")); user.setEmail(rs.getString("email")); user.setName(rs.getString("name")); user.setPassword(rs.getString("password")); user.setSex(rs.getString("sex")); user.setState(rs.getInt("state")); user.setTelephone(rs.getString("telephone")); user.setUid(rs.getString("uid")); user.setUsername(rs.getString("username")); users.add(user); } }catch (Exception e) { e.printStackTrace(); }finally{ try { DataSourceUtils.closeResultSet(rs); DataSourceUtils.closeStatement(pst); DataSourceUtils.closeConnection(); } catch (Exception e2) { } } return users; } }
package com.igeek.shop.dao.impl; import java.sql.Connection; import java.sql.PreparedStatement; import java.sql.ResultSet; import java.util.ArrayList; import java.util.List; import com.igeek.common.utils.DataSourceUtils; import com.igeek.shop.dao.ProductDao; import com.igeek.shop.entity.Product; /** * * TODO * * 2018年9月3日下午6:36:31 */ public class ProductDaoImpl implements ProductDao { private Connection con = null; private PreparedStatement pst = null; private ResultSet rs = null; public List<Product> findHotProducts() { List<Product> products = new ArrayList<>(); String sql = "SELECT * from product where is_hot = ? order by pdate desc limit ? "; try { con = DataSourceUtils.getConnection(); pst = con.prepareStatement(sql); pst.setInt(1, 1); pst.setInt(2, 9); rs = pst.executeQuery(); while(rs.next()){ Product p = new Product(); p.setIs_hot(rs.getInt("is_hot")); p.setMarket_price(rs.getDouble("market_price")); p.setPdate(rs.getDate("pdate")); p.setPdesc(rs.getString("pdesc")); p.setPflag(rs.getInt("pflag")); p.setPid(rs.getString("pid")); p.setPimage(rs.getString("pimage")); p.setPname(rs.getString("pname")); p.setShop_price(rs.getDouble("shop_price")); products.add(p); } }catch (Exception e) { e.printStackTrace(); }finally{ try { DataSourceUtils.closeResultSet(rs); DataSourceUtils.closeStatement(pst); DataSourceUtils.closeConnection(); } catch (Exception e2) { } } return products; } @Override public List<Product> findNewProducts() { List<Product> products = new ArrayList<>(); String sql = "SELECT * from product order by pdate desc limit ? "; try { con = DataSourceUtils.getConnection(); pst = con.prepareStatement(sql); pst.setInt(1, 9); rs = pst.executeQuery(); while(rs.next()){ Product p = new Product(); p.setIs_hot(rs.getInt("is_hot")); p.setMarket_price(rs.getDouble("market_price")); p.setPdate(rs.getDate("pdate")); p.setPdesc(rs.getString("pdesc")); p.setPflag(rs.getInt("pflag")); p.setPid(rs.getString("pid")); p.setPimage(rs.getString("pimage")); p.setPname(rs.getString("pname")); p.setShop_price(rs.getDouble("shop_price")); products.add(p); } }catch (Exception e) { e.printStackTrace(); }finally{ try { DataSourceUtils.closeResultSet(rs); DataSourceUtils.closeStatement(pst); DataSourceUtils.closeConnection(); } catch (Exception e2) { } } return products; } @Override public List<Product> findProductsByCid(String cid) { List<Product> products = new ArrayList<>(); String sql = "SELECT * from product where cid = ? order by pdate "; try { con = DataSourceUtils.getConnection(); pst = con.prepareStatement(sql); pst.setString(1, cid); rs = pst.executeQuery(); while(rs.next()){ Product p = new Product(); p.setIs_hot(rs.getInt("is_hot")); p.setMarket_price(rs.getDouble("market_price")); p.setPdate(rs.getDate("pdate")); p.setPdesc(rs.getString("pdesc")); p.setPflag(rs.getInt("pflag")); p.setPid(rs.getString("pid")); p.setPimage(rs.getString("pimage")); p.setPname(rs.getString("pname")); p.setShop_price(rs.getDouble("shop_price")); products.add(p); } }catch (Exception e) { e.printStackTrace(); }finally{ try { DataSourceUtils.closeResultSet(rs); DataSourceUtils.closeStatement(pst); DataSourceUtils.closeConnection(); } catch (Exception e2) { } } return products; } @Override public Product findProducById(String pid) { Product p = null; String sql = "SELECT * from product where pid = ?"; try { con = DataSourceUtils.getConnection(); pst = con.prepareStatement(sql); pst.setString(1, pid); rs = pst.executeQuery(); if(rs.next()){ p = new Product(); p.setIs_hot(rs.getInt("is_hot")); p.setMarket_price(rs.getDouble("market_price")); p.setPdate(rs.getDate("pdate")); p.setPdesc(rs.getString("pdesc")); p.setPflag(rs.getInt("pflag")); p.setPid(rs.getString("pid")); p.setPimage(rs.getString("pimage")); p.setPname(rs.getString("pname")); p.setShop_price(rs.getDouble("shop_price")); } }catch (Exception e) { e.printStackTrace(); }finally{ try { DataSourceUtils.closeResultSet(rs); DataSourceUtils.closeStatement(pst); DataSourceUtils.closeConnection(); } catch (Exception e2) { } } return p; } @Override public List<Product> findByPage(int page, int size, String cid) { List<Product> products = new ArrayList<>(); String sql = "SELECT * from product where cid = ? order by pdate limit ?,?"; try { con = DataSourceUtils.getConnection(); pst = con.prepareStatement(sql); pst.setString(1, cid); //設定開始查詢的位置 pst.setInt(2, (page-1)*size); //設定查詢的條數 pst.setInt(3, size); rs = pst.executeQuery(); while(rs.next()){ Product p = new Product(); p.setIs_hot(rs.getInt("is_hot")); p.setMarket_price(rs.getDouble("market_price")); p.setPdate(rs.getDate("pdate")); p.setPdesc(rs.getString("pdesc")); p.setPflag(rs.getInt("pflag")); p.setPid(rs.getString("pid")); p.setPimage(rs.getString("pimage")); p.setPname(rs.getString("pname")); p.setShop_price(rs.getDouble("shop_price")); products.add(p); } }catch (Exception e) { e.printStackTrace(); }finally{ try { DataSourceUtils.closeResultSet(rs); DataSourceUtils.closeStatement(pst); DataSourceUtils.closeConnection(); } catch (Exception e2) { } } return products; } @Override public int getTotal(String cid) { int count = 0; String sql = "select count(*) from product where cid = ?"; try { con = DataSourceUtils.getConnection(); pst = con.prepareStatement(sql); pst.setString(1, cid); rs = pst.executeQuery(); if(rs.next()){ count = rs.getInt(1); } }catch (Exception e) { e.printStackTrace(); }finally{ try { DataSourceUtils.closeResultSet(rs); DataSourceUtils.closeStatement(pst); DataSourceUtils.closeConnection(); } catch (Exception e2) { } } return count; } @Override public List<Product> findByIds(String[] pids) { List<Product> products = new ArrayList<>(); String sql = "SELECT * from product where pid in ("; //遍歷陣列,拼接引數 for (int i = 0; i < pids.length; i++) { String pid = pids[i]; if(i==pids.length-1){ sql += "'"+pid+"')"; }else{ sql += "'"+pid+"',"; } } try { con = DataSourceUtils.getConnection(); pst = con.prepareStatement(sql); rs = pst.executeQuery(); while(rs.next()){ Product p = new Product(); p.setIs_hot(rs.getInt("is_hot")); p.setMarket_price(rs.getDouble("market_price")); p.setPdate(rs.getDate("pdate")); p.setPdesc(rs.getString("pdesc")); p.setPflag(rs.getInt("pflag")); p.setPid(rs.getString("pid")); p.setPimage(rs.getString("pimage")); p.setPname(rs.getString("pname")); p.setShop_price(rs.getDouble("shop_price")); products.add(p); } }catch (Exception e) { e.printStackTrace(); }finally{ try { DataSourceUtils.closeResultSet(rs); DataSourceUtils.closeStatement(pst); DataSourceUtils.closeConnection(); } catch (Exception e2) { } } return products; } }
db.properties
driverClassName=com.mysql.jdbc.Driver
username=root
password=*******
url=jdbc:mysql://localhost:3306/shop
initialSiz=5
maxActive=15
jar包