zoukankan      html  css  js  c++  java
  • C3P0学习的学习

    domain:只是定义一个javabean。

    dao:对于数据库的操作,都放到dao层,也就是dao里面通常是对数据库的增、删、改、查等操作。

    service:完成相应的业务逻辑处理,调用dao层。

    servlet:完成界面请求、对界面进行跳转等等。servlet调用service层。

    一、准备     

    JAR包:

    既然是连接数据库第一个最重要的就是数据库的驱动包mysql-connection-java-5.1.44-bin.jar      

    接着就是C3P0-0.9.2.1.jar以及mchange-commons-java-0.2.3.4.jar

    然后还少不了dbutils 使用的是commons-dbutils-1.7.jar   

    一共是4个JAR包

    二、配置 

    配置数据库连接:

    创建c3p0-config.xml的配置文件,里面包含连接数据库的信息

     1 <?xml version="1.0" encoding="UTF-8"?>
     2 <c3p0-config>
     3  <default-config>
     4  <property name="driverClass">com.mysql.jdbc.Driver</property>
     5  <property name="jdbcUrl">jdbc:mysql://localhost:3306/mybatis</property>
     6  <property name="user">root</property>
     7  <property name="password">123</property>
     8  <property name="acquireIncrement">5</property>
     9  <property name="initialPoolSize">10</property>
    10  <property name="minPoolSize">5</property>
    11  <property name="maxPoolSize">20</property>
    12  </default-config>
    13 </c3p0-config>

    创建C3P0Util.java 使用getDataSource()的对象获取数据库连接

     1 package com.utils;
     2 
     3 import java.sql.Connection;
     4 import java.sql.SQLException;
     5 
     6 import javax.sql.DataSource;
     7 
     8 import com.mchange.v2.c3p0.ComboPooledDataSource;
     9 
    10 public class C3P0Utils {
    11     private static ComboPooledDataSource dataSource=new ComboPooledDataSource("itheima");
    12     public static DataSource getDataSource(){
    13         return dataSource;
    14     }
    15     public static Connection getConnection(){
    16         try {
    17             return dataSource.getConnection();
    18         } catch (SQLException e) {            
    19             throw new RuntimeException(e);
    20         }
    21     }
    22 }

     由于没有使用Mybatis的逆向工程,这里需要手动创建body.java 用于获取数据库表的所有列

     1 package com.Domain;
     2 public class body {
     3     private int id;
     4     private String notifyType;
     5     private String requestId;
     6     private String deviceId;
     7     private String gatewayId;
     8     private String service;
     9 
    10     public int getid() {
    11         return id;
    12     }
    13     public void setid(int id) {
    14         this.id = id;
    15     }
    16     public String getnotifyType(){
    17         return notifyType;
    18     
    19     }
    20     public void setnotifyType(String notifyType) {
    21         this.notifyType = notifyType;
    22     }
    23     public String getrequestId(){
    24         return requestId;
    25     
    26     }
    27     public void setrequestId(String requestId) {
    28         this.requestId = requestId;
    29     }
    30     public String getdeviceId(){
    31         return deviceId;
    32     
    33     }
    34     public void setdeviceIde(String deviceId) {
    35         this.deviceId = deviceId;
    36     }
    37     public String getgatewayId(){
    38         return gatewayId;
    39     
    40     }
    41     public void setgatewayId(String gatewayId) {
    42         this.gatewayId = gatewayId;
    43     }
    44     public String getservice(){
    45         return service;
    46     
    47     }
    48     public void setservice(String service) {
    49         this.service = service;
    50     }
    51 }

     dao层DBUtils简化了JDBC的开发步骤,使得我们可以用更少量的代码实现连接数据库的功能。参考连接:https://blog.csdn.net/simonforfuture/article/details/90480147

    DBUtils封装了JDBC的操作,核心功能如下:
    Dbutils三个核心功能介绍

    1、QueryRunner中提供对sql语句操作的API.

    2、ResultSetHandler接口,用于定义select操作后,怎样封装结果集.

    3、DbUtils类是一个工具类,定义了关闭资源与事务处理的方法

    ResultSetHandler结果集处理类

      1 package cn.simon.jdbc.demo03_DBUtils的使用;
      2 
      3 import java.sql.SQLException;
      4 import java.util.List;
      5 import java.util.Map;
      6 
      7 import org.apache.commons.dbutils.QueryRunner;
      8 import org.apache.commons.dbutils.handlers.ArrayHandler;
      9 import org.apache.commons.dbutils.handlers.ArrayListHandler;
     10 import org.apache.commons.dbutils.handlers.BeanHandler;
     11 import org.apache.commons.dbutils.handlers.BeanListHandler;
     12 import org.apache.commons.dbutils.handlers.ColumnListHandler;
     13 import org.apache.commons.dbutils.handlers.MapHandler;
     14 import org.apache.commons.dbutils.handlers.MapListHandler;
     15 import org.apache.commons.dbutils.handlers.ScalarHandler;
     16 
     17 import cn.simon.jdbc.domain.Category;
     18 
     19 /**
     20  *  DBUtils执行数据库查询操作
     21  *      1.QueryRunner(DataSource)
     22  *      2.query(String sql, ResultSetHandler<T> rsh, Object... params); // 主要执行查询
     23  */
     24 
     25 public class DBUtilsDemo {
     26     public static void main(String[] args) throws SQLException {
     27         // TODO Auto-generated method stub
     28 
     29 //        queryDemo01();
     30 //        queryDemo02();
     31 //        queryDemo03();
     32 //        queryDemo04();
     33 //        queryDemo05();
     34         queryDemo06();
     35 //        queryDemo07();
     36 //        queryDemo08();
     37     }
     38     
     39     // ArrayHandler处理类的使用
     40     public static void queryDemo01() throws SQLException{
     41         // 1.创建QueryRunner对象
     42         QueryRunner qr = new QueryRunner(C3P0Utils.getDataSource());
     43         // 2.执行查询
     44         Object[] objs = qr.query("select * from category where cid = ?", new ArrayHandler(), 1);
     45         for(Object o: objs){        // object[]中保存了object对象
     46             System.out.println(o);
     47         }
     48     }
     49     
     50     // ArrayListHandler
     51     public static void queryDemo02() throws SQLException{
     52         // 1.创建QueryRunner对象
     53         QueryRunner qr = new QueryRunner(C3P0Utils.getDataSource());
     54         // 2.执行查询
     55         List<Object[]> objs = qr.query("select * from category ", new ArrayListHandler());
     56         for (Object[] objects : objs) {
     57             System.out.println(objects[0]+"	"+objects[1]);
     58         }
     59     }
     60     
     61     // BeanHandler处理类的使用
     62     public static void queryDemo03() throws SQLException{
     63         // 1.创建QueryRunner对象
     64         QueryRunner qr = new QueryRunner(C3P0Utils.getDataSource());
     65         // 2.执行查询
     66         String sql = "select * from category";
     67         Category c = qr.query(sql, new BeanHandler<Category>(Category.class));
     68         System.out.println(c);
     69     }
     70     
     71     // BeanListHandler
     72     public static void queryDemo04() throws SQLException{
     73         // 1.创建QueryRunner对象
     74         QueryRunner qr = new QueryRunner(C3P0Utils.getDataSource());
     75         // 2.执行查询
     76         String sql = "select * from category";
     77         List<Category> c = qr.query(sql, new BeanListHandler<Category>(Category.class));
     78         for (Category category : c) {
     79             System.out.println(category);
     80         }
     81     }
     82     
     83     // ColumnListHandler处理类的使用
     84     public static void queryDemo05() throws SQLException{
     85         // 1.创建QueryRunner对象
     86         QueryRunner qr = new QueryRunner(C3P0Utils.getDataSource());
     87         // 2.执行查询
     88         String sql = "select * from category";
     89         List<Object> c = qr.query(sql, new ColumnListHandler<Object>("cname"));
     90         System.out.println(c);
     91     }
     92     
     93     // MapHandler处理类的使用
     94     public static void queryDemo06() throws SQLException{
     95         // 1.创建QueryRunner对象
     96         QueryRunner qr = new QueryRunner(C3P0Utils.getDataSource());
     97         // 2.执行查询
     98         String sql = "select * from category";
     99         Map<String, Object> map = qr.query(sql, new MapHandler());
    100         // 3.
    101         System.out.println(map);
    102     }
    103     
    104     // MapListHandler处理类的使用
    105     public static void queryDemo07() throws SQLException{
    106         // 1.创建QueryRunner对象
    107         QueryRunner qr = new QueryRunner(C3P0Utils.getDataSource());
    108         // 2.执行查询
    109         String sql = "select * from category";
    110         List<Map<String, Object>> maps = qr.query(sql, new MapListHandler());
    111         // 3.List
    112         System.out.println(maps);
    113     }
    114     
    115     // MapListHandler处理类的使用
    116     public static void queryDemo08() throws SQLException{
    117         // 1.创建QueryRunner对象
    118         QueryRunner qr = new QueryRunner(C3P0Utils.getDataSource());
    119         // 2.执行查询
    120         String sql = "select count(*) from category";
    121         Long count = qr.query(sql, new ScalarHandler<Long>());
    122         // 3.List
    123         System.out.println(count);
    124     }
    public  String  bodyvalue()  throws SQLException{
       // 1.创建QueryRunner对象
       QueryRunner qr = new QueryRunner(C3P0Utils.getDataSource());
       // 2.执行查询(查询表中最后一句)
       String sql = "select * from body order by id desc limit 1";
        Map<String, Object> map =  qr.query(sql, new MapHandler());
    //通过转换成字符串用get方法获得键值对
       String service = (String) map.get("service");
      return service;
    125 }
  • 相关阅读:
    菜鸟也能飞:SQL数据库实战专业教程(二)
    菜鸟也能飞:SQL数据库实战专业教程(三)
    我的时间管理柳暗花明
    真正的全能文件批量重命名工具(命令形式)
    关于提高班最近的一些事
    菜鸟也能飞:SQL数据库实战专业教程(一)
    JQuery以POST方法从ASP.NET服务器获取Json数据完整示例
    先有鸡还是先有蛋:数据库中的相互依赖
    一个简单的性能计数器:CodeTimer
    数据库范式
  • 原文地址:https://www.cnblogs.com/ZHANG576433951/p/12431704.html
Copyright © 2011-2022 走看看