• 编写DBCP连接池


    #配置数据库数据源
    package com.itang.utils; import java.io.InputStream; 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 org.apache.commons.dbcp.BasicDataSourceFactory; public class DBCPUtil { private static DataSource dataSource; static{ try { InputStream in = DBCPUtil.class.getClassLoader().getResourceAsStream("dbcpconfig.properties"); Properties props = new Properties(); props.load(in); dataSource = BasicDataSourceFactory.createDataSource(props); } catch (Exception e) { e.printStackTrace(); throw new ExceptionInInitializerError(e); } } public static DataSource getDataSource(){ return dataSource; } public static Connection getConnection(){ try { return dataSource.getConnection(); } catch (SQLException e) { throw new RuntimeException(e); } } /** * 功能:关闭数据库连接资源 * @param rs * ResultSet对象 * @param st * Statement 对象 * @param conn * Connection对象 */ public static void closeSource(ResultSet rs, Statement st, Connection conn) { if(rs!=null) { try { rs.close(); } catch (SQLException e) { // TODO Auto-generated catch block e.printStackTrace(); }finally { closeSource(st,conn); } } } public static void closeSource(Statement st, Connection conn) { if(st!=null) { try { st.close(); } catch (SQLException e) { // TODO Auto-generated catch block e.printStackTrace(); }finally { if(conn!=null) { try { conn.close(); } catch (SQLException e) { // TODO Auto-generated catch block e.printStackTrace(); } } } } } }

      获取配置文件的属性值

    public class GetDefaultValue {
    	private static String defaultimagepath;
    	private static String defaultimagename;
    	static {
    		ResourceBundle bundle=ResourceBundle.getBundle("defaultvalueconfig");
    		defaultimagepath = bundle.getString("defaultimagepath");
    		defaultimagename = bundle.getString("defaultimagename");
    	}
    	public static String getDefaultimagepath()
    	{
    		return defaultimagepath;
    	}
    	public static String getDefaultimagename()
    	{
    		return defaultimagename;
    	}
    }
    

      利用common-dbutils.jar和common-dbcp.jar工具来操作数据库:

      注意查询的时候:

      QueryRunner qr = new QueryRunner(dataSource);

      qr.query(sql, new BeanHandler<User>(User.class));查询对象

      qr.query(sql, new BeanListHandler<User>(User.class));查询对象列表

      qr.query(sql, new ScalarHandler<>());返回单个值

      具体可以参考下面代码:

    package com.itwang.dao.impl;
    
    import java.sql.SQLException;
    
    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.itwang.dao.InterestNumberDao;
    import com.itwang.domain.InterestCard;
    import com.itwang.domain.InterestNumber;
    import com.itwang.utils.DBCPUtil;
    
    public class InterestNumberDaoImpl implements InterestNumberDao {
    	private QueryRunner qr = new QueryRunner(DBCPUtil.getDataSource());
    	@Override
    	public void save(InterestNumber interestNumber) {
    		// TODO Auto-generated method stub
    		try {
    			qr.update("insert into interestnumber(id,name,follownumber,description,path,filename) values(?,?,?,?,?,?)",interestNumber.getId(),interestNumber.getName(),interestNumber.getFollownumber(),interestNumber.getDescription(),interestNumber.getPath(),interestNumber.getFilename());
    		} catch (SQLException e) {
    			// TODO Auto-generated catch block
    			e.printStackTrace();
    		}
    	}
    	@Override
    	public List<InterestNumber> findAllInterestNumber() {
    		// TODO Auto-generated method stub
    		List<InterestNumber> list=null;
    		try {
    			list=qr.query("select * from interestNumber",new BeanListHandler<InterestNumber>(InterestNumber.class));
    		} catch (SQLException e) {
    			// TODO Auto-generated catch block
    			e.printStackTrace();
    		}
    		return list;
    	}
    	@Override
    	public void deleteInterestNumber(String id) {
    		// TODO Auto-generated method stub
    		try {
    			qr.update("delete from interestnumber where id=?", id);
    		} catch (SQLException e) {
    			// TODO Auto-generated catch block
    			e.printStackTrace();
    		}
    	}
    	@Override
    	public InterestNumber findInterestNumberById(String id) {
    		// TODO Auto-generated method stub
    		InterestNumber interestNumber= null;
    		try {
    			interestNumber=qr.query("select * from interestnumber where id=?", new BeanHandler<InterestNumber>(InterestNumber.class), id);
    		} catch (SQLException e) {
    			// TODO Auto-generated catch block
    			e.printStackTrace();
    		}
    		return interestNumber;
    	}
    	@Override
    	public void updateInterestNumber(InterestNumber interestNumber) {
    		// TODO Auto-generated method stub
    		try {
    			qr.update("update interestnumber set name=?,follownumber=?,description=?,path=?,filename=? where id=?",interestNumber.getName(),interestNumber.getFollownumber(),interestNumber.getDescription(),interestNumber.getPath(),interestNumber.getFilename(),interestNumber.getId());
    		} catch (SQLException e) {
    			// TODO Auto-generated catch block
    			e.printStackTrace();
    		}
    	}
    	@Override
    	public int checkStatusInterestNumber(String id, String interestnumberid) {
    		// TODO Auto-generated method stub
    		Long count=null;
    		try {
    			count=qr.query("select count(*) from interestrelative where uid=? and pid=?",new ScalarHandler<>(), id,interestnumberid);
    		} catch (SQLException e) {
    			// TODO Auto-generated catch block
    			e.printStackTrace();
    		}
    		if(count.intValue()>0)
    			return 1;
    		else
    			return 0;
    	}
    	@Override
    	public void deleteRelative(String uid, String pid) {
    		// TODO Auto-generated method stub
    		try {
    			qr.update("delete from interestrelative where uid=? and pid=?", uid,pid);
    		} catch (SQLException e) {
    			// TODO Auto-generated catch block
    			e.printStackTrace();
    		}
    	}
    	@Override
    	public void addRelative(String id,String uid, String pid) {
    		// TODO Auto-generated method stub
    		try {
    			qr.update("insert into interestrelative(id,uid,pid) values(?,?,?)",id, uid,pid);
    		} catch (SQLException e) {
    			// TODO Auto-generated catch block
    			e.printStackTrace();
    		}
    	}
    	@Override
    	public List<InterestNumber> findInterestNumberByKeywords(String searchKeywords) {
    		// TODO Auto-generated method stub
    		List<InterestNumber> list=null;
    		String sqlstring="select * from interestnumber where name like CONCAT('%', ?, '%')";
    		try {
    			list=qr.query(sqlstring,new BeanListHandler<InterestNumber>(InterestNumber.class),searchKeywords );
    		} catch (SQLException e) {
    			// TODO Auto-generated catch block
    			e.printStackTrace();
    		}
    		return list;
    	}
    	@Override
    	public void updateFollowNumber(int totalUser,String pid) {
    		// TODO Auto-generated method stub
    		try {
    			qr.update("update interestnumber set follownumber=? where id=?",totalUser,pid);
    		} catch (SQLException e) {
    			// TODO Auto-generated catch block
    			e.printStackTrace();
    		}
    	}
    	@Override
    	public int getTotalUserByPid(String pid) {
    		// TODO Auto-generated method stub
    		Long total=null;
    		try {
    			total=qr.query("select count(*) from interestrelative where pid=?", new ScalarHandler<>(), pid);
    		} catch (SQLException e) {
    			// TODO Auto-generated catch block
    			e.printStackTrace();
    		}
    		return total.intValue();
    	}
    	@Override
    	public void addInteretCard(InterestCard interestCard) {
    		// TODO Auto-generated method stub
    		try {
    			qr.update("insert into interestcard(id,datetime,title,content,uid,pid) values(?,?,?,?,?,?)",interestCard.getId(),interestCard.getDatetime(),interestCard.getTitle(),interestCard.getContent(),interestCard.getUser().getId(),interestCard.getInterestnumber().getId());
    		} catch (SQLException e) {
    			// TODO Auto-generated catch block
    			e.printStackTrace();
    		}
    	}
    
    }
    

      

  • 相关阅读:
    分分钟提升命令行模式下密码输入逼格
    MySQL server has gone away 的两个最常见的可能性
    第一次遇到刷新缓冲区延时
    Mac上安装mysqlclient的报错
    python3 --- locale命名空间让程序更加安全了
    doctest --- 一个改善python代码质量的工具
    MySQL优化器 --- index_merge
    机智的MySQL优化器 --- is null
    Centos-7.x 下子网掩码的配置
    JS组件系列——BootstrapTable+KnockoutJS实现增删改查解决方案(三):两个Viewmodel搞定增删改查
  • 原文地址:https://www.cnblogs.com/ya-qiang/p/9320532.html
Copyright © 2020-2023  润新知