当前位置: 首页 > news >正文

如何建小企业网站河南省建设厅

如何建小企业网站,河南省建设厅,网站建设内容策划,自贡建设网站简明入门教程#xff0c;参考#xff1a;https://www.cnblogs.com/CQY1183344265/p/5854418.html 进行此章节之前#xff0c;介绍一个JdbcUtils的再次的简单封装 #xff08;例如后面需要构造QueryRunner时得到数据源等的简便的操作#xff09; package cn.itcast.jdbcuti…  简明入门教程参考https://www.cnblogs.com/CQY1183344265/p/5854418.html 进行此章节之前介绍一个JdbcUtils的再次的简单封装   例如后面需要构造QueryRunner时得到数据源等的简便的操作 package cn.itcast.jdbcutils;import java.sql.Connection; import java.sql.SQLException;import com.mchange.v2.c3p0.ComboPooledDataSource;public class JdbcUtils {//使用的是默认的配置信息注意给出c3p0-config.xml配置文件private static ComboPooledDataSource dataSource new ComboPooledDataSource();//处理多线程的并发访问问题使用ThreadLocalprivate static ThreadLocalConnection tl new ThreadLocalConnection();public static Connection getConnection() throws SQLException{//不为Null说明开启了事务返回连接//先获取自己线程的ConnectionConnection con tl.get();if(con ! null) return con;return dataSource.getConnection();}/*** 大方一点给出连接池对象给你*/public static ComboPooledDataSource getDataSource(){return dataSource;}//给出三个方法/*** 开启事务* 创建一个Connection设置为手动提交* 保证DAO使用的就是这个事务的连接* 同时还需要保证下面两个提交与回滚是同一个连接* 通过创建一个本类的连接成员* throws SQLException */public static void startTransaction() throws SQLException{Connection con tl.get();//开启事务后con不再为nullcon getConnection();con.setAutoCommit(false);//保存连接tl.set(con);}/*** 提交事务* throws SQLException */public static void commitTransaction() throws SQLException{Connection con tl.get();if(con null) throw new SQLException(事务未开启请勿提交);con.commit();con.close();//清空连接con null;//移除事务tl.remove();}/*** 回滚事务* throws SQLException */public static void rollbackTransaction() throws SQLException {Connection con tl.get();if(con null) throw new SQLException(事务未开启请勿回滚);con.rollback();con.close();con null;tl.remove();}/*** 用于释放连接* param connection* throws SQLException */public static void releaseConnection(Connection connection) throws SQLException{//事务专用则不关闭后续会有关闭//如果不是事务则需要关闭Connection con tl.get();//事务都没有直接关闭if(con null) connection.close();//有事务判断是否相等是否为专用连接if(con ! connection) connection.close();} }   一、简易的入门     common-dbutils是Apache对Jdbc的一个简单的封装其中主要涉及的类有       QueryRunner       ResultSetHandler       DbUtils     使用的依赖如下          1.   重要类 QueryRunner 构造时提供数据源   重要方法int update(String sql,Object...params);增删改   重载版本 int update(Connection con,String sql,Object...params);本方法不再管理con由外部提供保证是同一个   T query(String sql,ResultSetHandler rsh,Object...params);查询   重载版本类同上   给出一个使用的小例子    package cn.itcast.demo;import java.sql.SQLException;import org.apache.commons.dbutils.QueryRunner; import org.junit.Test;import cn.itcast.jdbcutils.JdbcUtils;/*** 测试commons-dbutils* author jiangbei01**/ public class Demo02 {Testpublic void testfun1() throws SQLException{QueryRunner qr new QueryRunner(JdbcUtils.getDataSource());String sql INSERT INTO ab VALUES(?,?);Object[] params {8,肖恩};qr.update(sql, params);} }     2.   给一张表对应一个类字段与属性对应起来   他会先得到ResultSet然后调用handler方法转换成需要的类型   接口ResultSetHandler我们学习的实现类   BeanHandler 构造器需要一个class参数返回指定类型的javabean对象  一行记录   BeanListHandler 构造器同上由名称知为多行转换成list对象多个javabean  多行记录   MapHandler 把一行记录转换成一个map 如{name:zhangsan,age:20}  一行记录   MapListHandler 同上对比多个map的多行记录返回ListMap返回的也是一个List  多行记录   ScalarHandler 单行单列通常与select count(*) from stu; 单行单列   这里使用装饰者模式加上开头改造的工具类将QueryRunner稍加改造    package cn.itcast.jdbcutils;import java.sql.Connection; import java.sql.SQLException;import org.apache.commons.dbutils.QueryRunner; import org.apache.commons.dbutils.ResultSetHandler; /*** 这个类可以自身自己处理连接问题可以通过jdbcUtils释放连接类方法会处理是否关闭* author jiangbei01**/ public class TxQueryRunner extends QueryRunner {Overridepublic int[] batch(String sql, Object[][] params) throws SQLException {/** 得到连接* 执行父类方法* 释放连接* 返回值*/Connection con JdbcUtils.getConnection();int[] results super.batch(con,sql, params);JdbcUtils.releaseConnection(con);return results;}Overridepublic T T query(String sql, Object param, ResultSetHandlerT rsh) throws SQLException {/** 得到连接* 执行父类方法* 释放连接* 返回值*/Connection con JdbcUtils.getConnection();T results super.query(con,sql, param,rsh);JdbcUtils.releaseConnection(con);return results;}Overridepublic T T query(String sql, Object[] params, ResultSetHandlerT rsh) throws SQLException {Connection con JdbcUtils.getConnection();T results super.query(con,sql, params,rsh);JdbcUtils.releaseConnection(con);return results;}Overridepublic T T query(String sql, ResultSetHandlerT rsh, Object... params) throws SQLException {Connection con JdbcUtils.getConnection();T results super.query(con,sql, rsh,params);JdbcUtils.releaseConnection(con);return results;}Overridepublic T T query(String sql, ResultSetHandlerT rsh) throws SQLException {Connection con JdbcUtils.getConnection();T results super.query(con,sql, rsh);JdbcUtils.releaseConnection(con);return results;}Overridepublic int update(String sql, Object... params) throws SQLException {Connection con JdbcUtils.getConnection();int results super.update(con,sql,params);JdbcUtils.releaseConnection(con);return results;}Overridepublic int update(String sql, Object param) throws SQLException {Connection con JdbcUtils.getConnection();int results super.update(con,sql,param);JdbcUtils.releaseConnection(con);return results;}Overridepublic int update(String sql) throws SQLException {Connection con JdbcUtils.getConnection();int results super.update(con,sql);JdbcUtils.releaseConnection(con);return results;}} 给出一个使用改造类的小例子 package cn.itcast.jdbcutils;import java.sql.Connection; import java.sql.SQLException;import org.apache.commons.dbutils.QueryRunner;public class AccountDAO {/*** 不能使用连接池* 要自己提供连接才能保证是同一个连接* param name* param money* throws SQLException*/public static void update(String name, double money) throws SQLException{QueryRunner qr new TxQueryRunner();String sql update account set balaencebalaence? where name?;Object[] params {money,name};//给出参数并执行qr.update(sql,params);/** 以下代码新写的Tx类已经完成无需处理* Connection con JdbcUtils.getConnection();* //释放连接JdbcUtils.releaseConnection(con);*/} }     并发访问时产生的问题可以使用ThreadLocal类待更新详细进行解决示例如下 package cn.itcast.jdbcutils;import java.sql.Connection; import java.sql.SQLException;import com.mchange.v2.c3p0.ComboPooledDataSource;public class JdbcUtils {//使用的是默认的配置信息注意给出c3p0-config.xml配置文件private static ComboPooledDataSource dataSource new ComboPooledDataSource();//处理多线程的并发访问问题使用ThreadLocalprivate static ThreadLocalConnection tl new ThreadLocalConnection();public static Connection getConnection() throws SQLException{//不为Null说明开启了事务返回连接//先获取自己线程的ConnectionConnection con tl.get();if(con ! null) return con;return dataSource.getConnection();}/*** 大方一点给出连接池对象给你*/public static ComboPooledDataSource getDataSource(){return dataSource;}//给出三个方法/*** 开启事务* 创建一个Connection设置为手动提交* 保证DAO使用的就是这个事务的连接* 同时还需要保证下面两个提交与回滚是同一个连接* 通过创建一个本类的连接成员* throws SQLException */public static void startTransaction() throws SQLException{Connection con tl.get();//开启事务后con不再为nullcon getConnection();con.setAutoCommit(false);//保存连接tl.set(con);}/*** 提交事务* throws SQLException */public static void commitTransaction() throws SQLException{Connection con tl.get();if(con null) throw new SQLException(事务未开启请勿提交);con.commit();con.close();//清空连接con null;//移除事务tl.remove();}/*** 回滚事务* throws SQLException */public static void rollbackTransaction() throws SQLException {Connection con tl.get();if(con null) throw new SQLException(事务未开启请勿回滚);con.rollback();con.close();con null;tl.remove();}/*** 用于释放连接* param connection* throws SQLException */public static void releaseConnection(Connection connection) throws SQLException{//事务专用则不关闭后续会有关闭//如果不是事务则需要关闭Connection con tl.get();//事务都没有直接关闭if(con null) connection.close();//有事务判断是否相等是否为专用连接if(con ! connection) connection.close();} }  转载于:https://www.cnblogs.com/jiangbei/p/6704643.html
http://www.pierceye.com/news/504795/

相关文章:

  • 备案号放网站下面居中物流网站制作目的
  • 房产网站排名做情侣网站
  • 营销型网站建设推荐国内团购网站做的最好的是
  • 前端网站建设苏州高新区建设局网站管网
  • 中小企业网站建设中服务器的解决方案是网站建设推广总结
  • 东莞网站建设新闻资讯做赌场网站犯法么
  • wordpress怎么添加单页模版seo价格是多少
  • 网站域名有了_网站如何建设优书网首页
  • 宠物网站建设策划报告Wordpress is文章展示
  • 电子建设网站的目的阿里巴巴网站是用什么技术做的
  • 图形设计网站wordpress微信群多个二维码
  • 网站建设维护是干什么网站用户需求报告
  • 咸宁网站建设公司水网站模板
  • 移动网站开发教材seo网站排名优化价格
  • 重生做网站小说畅想网络网站建设推广
  • 找个做网站的 优帮云wordpress 判断自定义栏目
  • wordpress文章目录分页wordpress加速优化服务
  • 二级目录网站怎么做小程序开发成都公司
  • 网站标题名字和备案名字网站开发 质量管理
  • 网站与系统开发吉安网站建设收费
  • 湖北襄阳网站建设wordpress电商ar
  • 微做网站环保行业网站建设
  • 昭通做网站公司北京手机网站制作多少钱
  • 昆明企业建网站多少钱如何弄微信小程序
  • wordpress清理网站缓存做的比较简约的网站
  • 青岛高端网站制作中铁建设集团门户密码
  • 公司专业做网站做网站域名起什么作用
  • 推广型网站建设机构如何创建wordpress
  • 做网站交互demo工具在线设计自己的签名免费
  • 做百度推广会送网站吗网站建设和邮箱的关联