JSP第十八课让你体验不一样的代码世界《笔记内容三》(一)

本文涉及的产品
云数据库 RDS MySQL,集群系列 2核4GB
推荐场景:
搭建个人博客
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
云数据库 RDS MySQL,高可用系列 2核4GB
简介: JSP第十八课让你体验不一样的代码世界《笔记内容三》(一)

欢迎来到Jsp编程课时九——JSP第十八课让你体验不一样的代码世界。用Java框架带你飞出自己写代码变的更加便捷。对数据的增删改查用几行代码弄定。

第一部分到官网上去下载这些构架包。

将上面的架构包导入进lib包下。

回顾mysql的基本语句:增删改查。

#增加一条数据
INSERT INTO `studentdb`.`book`(`name`, `maker`, `price`, `num`, `time`, `autor`) VALUES ('Sping', '中国邮政', '500元', 456, '2021/11/30', 'spingsping')
#查询表单结构
DESC book
#查询表的内容
SELECT * FROM book
#查询一条记录
SELECT *FROM book WHERE name='Sping'and maker='中国邮政'
#查询多个条件
#且 and
#或 or 
INSERT INTO `studentdb`.`book`(`name`, `maker`, `price`, `num`, `time`, `autor`) VALUES ('Sping', '中国邮政', '400元', 456, '2021/11/30', 'spingsping')
SELECT *FROM book WHERE price='400元'or price='500元'
#修改数据内容
UPDATE `studentdb`.`book` SET `maker` = 'kut' WHERE `id` = 1005
#修改大量内容
SELECT * FROM book
#创建一个数据
INSERT INTO `studentdb`.`book`(`name`, `maker`, `price`, `num`, `time`, `autor`) VALUES ('SpingBoot', '中国人名出版社', '300元', 356, '2021/12/30', 'spingbook')
#修改大量的数据内容
INSERT INTO `studentdb`.`book`(`id`, `name`, `maker`, `price`, `num`, `time`, `autor`) VALUES (NULL, 'jquery', 'sum', '123', 345, '2020/1/2', 'gh')
UPDATE `studentdb`.`book` SET `name` = 'html', `maker` = 'sumdt', `price` = '678', `num` = 340, `time` = '2021/1/2', `autor` = 'ghj' WHERE `id` = 1008
#删除表的数据
DELETE FROM `studentdb`.book WHERE ` id` = 1007
DELETE FROM `studentdb`.`book` WHERE `id` = 1004
-- 练习题
#增一条语句
INSERT INTO `studentdb`.`book`(`id`, `name`, `maker`, `price`, `num`, `time`, `autor`) VALUES (1013, 'Html5', 'hellowhtml5', '200元', 678, '2020/1/2', '你哈')
#改一条语句的多个条件
UPDATE `studentdb`.`book` SET `name` = 'php', `maker` = 'as', `price` = '344元', `num` = 2334, `time` = '2021/2/4', `autor` = 'nees' WHERE `id` = 10014 AND `name` = Cast('ps' AS Binary(2))
#查表的结构
DESC book
DESC tb_student
#查表的内容
SELECT * FROM book
#删除语句
INSERT INTO `studentdb`.`book`(`id`, `name`, `maker`, `price`, `num`, `time`, `autor`) VALUES (1015, 'Html5', 'maysquery', '210元', 678, '2020/11/30', '增加的一条语句')
#删除上面增加的语句
DELETE FROM `studentdb`.`book` WHERE `id` = 1015 AND `name` = Cast('Html5' AS Binary(5))
UPDATE `studentdb`.`book` SET `maker` = '', `price` = '' WHERE `id` = 10014 AND `name` = Cast('php' AS Binary(3))

使用第一个构架包:junit-4.13.2


传统的Java方式写程序入口

package com.db.text;
import org.junit.Test;
public class Hellow2 {
  @Test
  public void test1() {
    System.out.println("Hellow javav nees mee to");
  }
  @Test
  public void test2() {
    System.out.println("Hellow javav nees mee to2");
  }
  @Test
  public void test3() {
    System.out.println("Hellow javav nees mee to3");
  }
  @Test
  public void test4() {
    System.out.println("Hellow javav nees mee to4");
  }
}

使用了框架后在一个类中定义多个程序入口


第二个构架包:mysql-jdbc利用框架。利用一个框架写对数据的增删改查。

package com.db.text;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
/**
 * 多个程序入口
 * jut
 * lib 是构架包
 * 数据库的增删改查
 */
import org.junit.Test;
import com.sun.javafx.collections.MappingChange.Map;
import jdk.nashorn.internal.ir.CatchNode;
public class JDBCDemo {
  public Connection con =null;
  /**
   * 定义方法连接数据库
   */
  /**
   * 建立了数据库
   * 操作数据库的连接
   */
  public void getconnection() {
    //第一步加载插件
    try {
      Class.forName("com.mysql.jdbc.Driver");
      String url= "jdbc:mysql://localhost:3306/studentdb?useUnicode=true&characterEncoding=utf-8&zeroDateTimeBechavior=convertToNull&serverTimeZone=UTC";
      String username="root";
      String password="123456";
      //使用设备管理器类根据提供的信息
      con=DriverManager.getConnection(url, username, password);
    } catch (Exception e) {
      // TODO Auto-generated catch block
      e.printStackTrace();
    }
  }
  //连接数据库的信息
/**
 * 插入数据
 */
  @Test
  public void test1() {
      System.out.println("这是我的第一个方法");
      //增加数据
      getconnection();
      //判断数据库是否为空
      if(con!=null) {
        //sql增加语句
        //在jdbc连接数据库
        //String sql="INSERT INTO `studentdb`.`tb_student`(`name`, `age`) VALUES ('hellows', 22)";
        String sql="INSERT INTO `studentdb`.`tb_student`(`name`, `age`) VALUES (?, ?)";
        //执行sql语句
        try {
          PreparedStatement ps=con.prepareStatement(sql);
          //替换符位置
          ps.setString(1, "胡滨");
          ps.setInt(2,34);
        int count=  ps.executeUpdate();
        if (count>0) {
          System.out.println("数据增加一条成功");
        }
        ps.close();
        System.out.println("数据库断开连接");
        } catch (SQLException e) {
          // TODO Auto-generated catch block
          e.printStackTrace();
        }
      }
      try {
        con.close();
      } catch (SQLException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
      }
  }
package com.db.text;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
/**
 * 多个程序入口
 * jut
 * lib 是构架包
 * 数据库的增删改查
 */
import org.junit.Test;
import com.sun.javafx.collections.MappingChange.Map;
import jdk.nashorn.internal.ir.CatchNode;
public class JDBCDemo {
  public Connection con =null;
  /**
   * 定义方法连接数据库
   */
  /**
   * 建立了数据库
   * 操作数据库的连接
   */
  public void getconnection() {
    //第一步加载插件
    try {
      Class.forName("com.mysql.jdbc.Driver");
      String url= "jdbc:mysql://localhost:3306/studentdb?useUnicode=true&characterEncoding=utf-8&zeroDateTimeBechavior=convertToNull&serverTimeZone=UTC";
      String username="root";
      String password="123456";
      //使用设备管理器类根据提供的信息
      con=DriverManager.getConnection(url, username, password);
    } catch (Exception e) {
      // TODO Auto-generated catch block
      e.printStackTrace();
    }
  }
  //连接数据库的信息
      /**
       * 修改数据
       */
      @Test
      public void test2() {
        //修改数据
        getconnection();
        if(con!=null) {
          String sql="UPDATE `studentdb`.`tb_student` SET `age` = ? WHERE ` id` = ?";
          //执行sql语句
          try {
            PreparedStatement ps=con.prepareStatement(sql);
            //替换符位置
          ps.setInt(1, 25);
          ps.setInt(2, 1);
          int count=  ps.executeUpdate();
          if (count>0) {
            System.out.println("执行代码修改了一条数据");
          } ps.close();
          System.out.println("数据库断开连接");
          } catch (SQLException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
          }
        }
      }
package com.db.text;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
/**
 * 多个程序入口
 * jut
 * lib 是构架包
 * 数据库的增删改查
 */
import org.junit.Test;
import com.sun.javafx.collections.MappingChange.Map;
import jdk.nashorn.internal.ir.CatchNode;
public class JDBCDemo {
  public Connection con =null;
  /**
   * 定义方法连接数据库
   */
  /**
   * 建立了数据库
   * 操作数据库的连接
   */
  public void getconnection() {
    //第一步加载插件
    try {
      Class.forName("com.mysql.jdbc.Driver");
      String url= "jdbc:mysql://localhost:3306/studentdb?useUnicode=true&characterEncoding=utf-8&zeroDateTimeBechavior=convertToNull&serverTimeZone=UTC";
      String username="root";
      String password="123456";
      //使用设备管理器类根据提供的信息
      con=DriverManager.getConnection(url, username, password);
    } catch (Exception e) {
      // TODO Auto-generated catch block
      e.printStackTrace();
    }
  }
  //连接数据库的信息
/**
 * 插入数据
 */
  @Test
  public void test1() {
      System.out.println("这是我的第一个方法");
      //增加数据
      getconnection();
      //判断数据库是否为空
      if(con!=null) {
        //sql增加语句
        //在jdbc连接数据库
        //String sql="INSERT INTO `studentdb`.`tb_student`(`name`, `age`) VALUES ('hellows', 22)";
        String sql="INSERT INTO `studentdb`.`tb_student`(`name`, `age`) VALUES (?, ?)";
        //执行sql语句
        try {
          PreparedStatement ps=con.prepareStatement(sql);
          //替换符位置
          ps.setString(1, "胡滨");
          ps.setInt(2,34);
        int count=  ps.executeUpdate();
        if (count>0) {
          System.out.println("数据增加一条成功");
        }
        ps.close();
        System.out.println("数据库断开连接");
        } catch (SQLException e) {
          // TODO Auto-generated catch block
          e.printStackTrace();
        }
      }
      try {
        con.close();
      } catch (SQLException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
      }
  }
      /**
       * 修改数据
       */
      @Test
      public void test2() {
        //修改数据
        getconnection();
        if(con!=null) {
          String sql="UPDATE `studentdb`.`tb_student` SET `age` = ? WHERE ` id` = ?";
          //执行sql语句
          try {
            PreparedStatement ps=con.prepareStatement(sql);
            //替换符位置
          ps.setInt(1, 25);
          ps.setInt(2, 1);
          int count=  ps.executeUpdate();
          if (count>0) {
            System.out.println("执行代码修改了一条数据");
          } ps.close();
          System.out.println("数据库断开连接");
          } catch (SQLException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
          }
        }
      }
      /**
       * 删除语句
       */
    @Test
    public void test3() {
      getconnection();
      if(con!=null) {
        String sql="DELETE FROM `studentdb`.`tb_student` WHERE ` id` = ?";
        //执行sql语句
        try {
          PreparedStatement ps=con.prepareStatement(sql);
          //替换符位置
        ps.setInt(1,5);
        //表发生变化
        int i=  ps.executeUpdate();
        if (i>0) {
          System.out.println("执行代码删除了一条数据");
        } ps.close();
        System.out.println("数据库断开连接");
        } catch (SQLException e) {
          // TODO Auto-generated catch block
          e.printStackTrace();
        }
      }
    }
package com.db.text;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
/**
 * 多个程序入口
 * jut
 * lib 是构架包
 * 数据库的增删改查
 */
import org.junit.Test;
import com.sun.javafx.collections.MappingChange.Map;
import jdk.nashorn.internal.ir.CatchNode;
public class JDBCDemo {
  public Connection con =null;
  /**
   * 定义方法连接数据库
   */
  /**
   * 建立了数据库
   * 操作数据库的连接
   */
  public void getconnection() {
    //第一步加载插件
    try {
      Class.forName("com.mysql.jdbc.Driver");
      String url= "jdbc:mysql://localhost:3306/studentdb?useUnicode=true&characterEncoding=utf-8&zeroDateTimeBechavior=convertToNull&serverTimeZone=UTC";
      String username="root";
      String password="123456";
      //使用设备管理器类根据提供的信息
      con=DriverManager.getConnection(url, username, password);
    } catch (Exception e) {
      // TODO Auto-generated catch block
      e.printStackTrace();
    }
  }
  //连接数据库的信息
/**
 * 插入数据
 */
  @Test
  public void test1() {
      System.out.println("这是我的第一个方法");
      //增加数据
      getconnection();
      //判断数据库是否为空
      if(con!=null) {
        //sql增加语句
        //在jdbc连接数据库
        //String sql="INSERT INTO `studentdb`.`tb_student`(`name`, `age`) VALUES ('hellows', 22)";
        String sql="INSERT INTO `studentdb`.`tb_student`(`name`, `age`) VALUES (?, ?)";
        //执行sql语句
        try {
          PreparedStatement ps=con.prepareStatement(sql);
          //替换符位置
          ps.setString(1, "胡滨");
          ps.setInt(2,34);
        int count=  ps.executeUpdate();
        if (count>0) {
          System.out.println("数据增加一条成功");
        }
        ps.close();
        System.out.println("数据库断开连接");
        } catch (SQLException e) {
          // TODO Auto-generated catch block
          e.printStackTrace();
        }
      }
      try {
        con.close();
      } catch (SQLException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
      }
  }
      /**
       * 修改数据
       */
      @Test
      public void test2() {
        //修改数据
        getconnection();
        if(con!=null) {
          String sql="UPDATE `studentdb`.`tb_student` SET `age` = ? WHERE ` id` = ?";
          //执行sql语句
          try {
            PreparedStatement ps=con.prepareStatement(sql);
            //替换符位置
          ps.setInt(1, 25);
          ps.setInt(2, 1);
          int count=  ps.executeUpdate();
          if (count>0) {
            System.out.println("执行代码修改了一条数据");
          } ps.close();
          System.out.println("数据库断开连接");
          } catch (SQLException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
          }
        }
      }
      /**
       * 删除语句
       */
    @Test
    public void test3() {
      getconnection();
      if(con!=null) {
        String sql="DELETE FROM `studentdb`.`tb_student` WHERE ` id` = ?";
        //执行sql语句
        try {
          PreparedStatement ps=con.prepareStatement(sql);
          //替换符位置
        ps.setInt(1,5);
        //表发生变化
        int i=  ps.executeUpdate();
        if (i>0) {
          System.out.println("执行代码删除了一条数据");
        } ps.close();
        System.out.println("数据库断开连接");
        } catch (SQLException e) {
          // TODO Auto-generated catch block
          e.printStackTrace();
        }
      }
    }
    /**
     * 查询语句
     */
    @Test
    public void test4() {
      //查询语句
      //连接数据库
      getconnection();
      if(con!=null) {
        String sql="select *from tb_student where id=?";
        try {
          PreparedStatement ps=con.prepareStatement(sql);
          //字符占位符
          ps.setInt(1, 1002);
          //结果的集合
        ResultSet rs =  ps.executeQuery();
        //第一步 移动游标,游标默认停在第一行,是字段名。
        //移动一行
        if (rs.next()) {
        int id= rs.getInt(1);
        String name=rs.getString(2);
        int age=rs.getInt(3);
        //获取数据
        System.out.println(id+"-----"+name+"------"+age);
          }
        rs.close();
        ps.close();
        con.close();
        } catch (Exception e) {
          // TODO Auto-generated catch block
          e.printStackTrace();  
        } 
      }
    }
    @Test
    public void test5() {
      List<Map<String, Object>> olList=new ArrayList<Map<String,Object>>();
      getconnection();
      if(con!=null) {
        String sql="select *from tb_student";
        try {
          PreparedStatement ps=con.prepareStatement(sql);
          ResultSet  rs  = ps.executeQuery();
          while (rs.next()) {
            int id= rs.getInt(1);//1
            String name=rs.getString(2);//张三
            int age=rs.getInt(3);//21
          HashMap<String, Object> oMap=new HashMap<String, Object>();
          oMap.put("id", id);
          oMap.put("name", name);
          oMap.put("age", age);
          olList.add((Map<String, Object>) oMap);
          }
          //关闭数据库
          rs.close();
          ps.close();
          con.close();
        } catch (SQLException e) {
          // TODO Auto-generated catch block
          e.printStackTrace();
        }
      }
      //循环
      for (Map<String, Object> map : olList) {
        System.out.println(map);
      }
  //jdk
      List<String> o =new ArrayList<String>();
      o.add("abc");
      o.add("adfbc");
      o.add("abffc");
      //拉马 labdam 表达式
      o.forEach(s->System.out.println(s));
    }
    }
  • druid数据库连接池插件 AND c3p0数据库连接池插件。
  • 采用三个构架包编写增删改查。


@1c3p0数据库连接池插件。

第一步导入构架包。

项目大纲

 

第二步改文件的设置。打开c3p0-config.xml文件

<c3p0-config>
  <!-- 使用默认的配置读取连接池对象 -->
  <default-config>
    <!--  连接参数 -->
    <!-- 加载JDBC的插件  -->
    <property name="driverClass">com.mysql.jdbc.Driver</property>
    <!--  连接数据库的地址  &amp 与连接符-->
    <property name="jdbcUrl">jdbc:mysql://localhost:3306/studentdb?useUnicode=true&amp;characterEncoding=utf-8 &amp;zeroDateTimeBechavior=convertToNull&amp;serverTimeZone=UTC";</property>
     <!--  连接数据库的用户名,密码-->
    <property name="user">root</property>
    <property name="password">123456</property>
     <!-- 连接池参数 初始连接池创建5个 -->
    <!-- 设置初始化使用连接池的个数   最大的连接池的个数   3秒后自动断开 -->
    <!-- 连接池参数 -->
    <property name="initialPoolSize">5</property>
    <property name="maxPoolSize">10</property>
    <property name="checkoutTimeout">3000</property>
  </default-config>
<!-- 针对不过功能 调用不同的连接池  -->
  <named-config name="otherc3p0"> 
    <!--  连接参数 -->
    <property name="driverClass">com.mysql.jdbc.Driver</property>
    <property name="jdbcUrl">jdbc:mysql://localhost:3306/book?useUnicode=true&amp;characterEncoding=utf-8 &amp;zeroDateTimeBechavior=convertToNull&amp;serverTimeZone=UTC";</property>
    <property name="user">root</property>
    <property name="password">123456</property>
    <property name="initialPoolSize">5</property>
    <property name="maxPoolSize">8</property>
    <property name="checkoutTimeout">3000</property>
  </named-config>
</c3p0-config>

你会发现这个构架包代替了下面的几行代码,

public void getConnection() {
    //1.加载插件
    try {
      Class.forName("com.mysql.jdbc.Driver");
      //2.准备连接数据的信息:要连接的数据库的地址      用户名     密码
      String url="jdbc:mysql://localhost:3306/studentdb?useUnicode=true&characterEncoding=utf-8&zeroDateTimeBehavior=convertToNull&serverTimeZone=UTC";
      String username="root";
      String password="123456";
      //使用设备管理器类根据提供的信息连接数据库
      con=DriverManager.getConnection(url, username, password);
    } catch (Exception e) {
      e.printStackTrace();
    }
  }

c3p0-config.xml文件说明:

<default-config>
      <!--  连接参数 -->
      <!-- 加载JDBC的插件  -->
    <property name="driverClass">com.mysql.jdbc.Driver</property>
    <!--  连接数据库的地址  &amp 与连接符-->
    <property name="jdbcUrl">jdbc:mysql://localhost:3306/studentdb?useUnicode=true&amp;characterEncoding=utf-8 &amp;zeroDateTimeBechavior=convertToNull&amp;serverTimeZone=UTC";</property>
     <!--  连接数据库的用户名,密码-->
    <property name="user">root</property>
    <property name="password">123456</property>
     <!-- 连接池参数 初始连接池创建5个 -->
    <!-- 设置初始化使用连接池的个数   最大的连接池的个数   3秒后自动断开 -->
    <!-- 连接池参数 -->
    <property name="initialPoolSize">5</property>
    <property name="maxPoolSize">10</property>
    <property name="checkoutTimeout">3000</property>
  </default-config>
相关实践学习
如何在云端创建MySQL数据库
开始实验后,系统会自动创建一台自建MySQL的 源数据库 ECS 实例和一台 目标数据库 RDS。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助 &nbsp; &nbsp; 相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
相关文章
|
存储 设计模式 JavaScript
掌握JavaWeb开发的必备技能:Servlet、JSP、Cookie、Session、EL、JSTL详解 ~~~~B站老杜--Servlet-JSP-课堂笔记(三)
当某个特殊的事件发生(特殊的事件发生其实就是某个时机到了。)之后,被web服务器自动调用。 思考一个业务场景
78 0
|
缓存 前端开发 Java
掌握JavaWeb开发的必备技能:Servlet、JSP、Cookie、Session、EL、JSTL详解 ~~~~B站老杜--Servlet-JSP-课堂笔记(二)
我们只需要service方法,其他方法大部分情况下是不需要使用的。代码很丑陋。 适配器设计模式Adapter
66 0
|
前端开发 Java 应用服务中间件
掌握JavaWeb开发的必备技能:Servlet、JSP、Cookie、Session、EL、JSTL详解 ~~~~B站老杜--Servlet-JSP-课堂笔记(一)
对于一个动态的web应用来说,一个请求和响应的过程有多少个角色参与,角色和角色之间有多少个协议
82 0
|
存储 数据可视化 Java
JavaBean和JSP六大标签的使用《笔记内容一》
JavaBean和JSP六大标签的使用《笔记内容一》
89 0
|
Java 数据库
JSP第十八课让你体验不一样的代码世界《笔记内容三》(二)
JSP第十八课让你体验不一样的代码世界《笔记内容三》(二)
74 0
YI
|
存储 XML SQL
Jsp-Servlet笔记
Jsp-Servlet笔记
YI
95 0
|
JSON 前端开发 JavaScript
JAVA-JSP/Servlet 笔记(九)
JAVA-JSP/Servlet 笔记(九)
|
缓存 前端开发 JavaScript
JAVA-JSP/Servlet 笔记(八)
JAVA-JSP/Servlet 笔记(八)
IDEA写jsp代码报错,但是正常运行解决
首先说明,jsp是一个很老的技术了,用的比较少了,但是难免会接触到。
335 0
|
Java 应用服务中间件
jsp代码没有错,但是总是有红叉(一招解决)
不知道原因jsp一直红 很多人都说把它剪切啦,再粘贴啦,但他还会出现红叉或者自己写jsp的时候没写错也会出现出现红叉 怎么办呢 ??? 怎么办呢??? 如图: 我的项目没错也能运行没错就是没错他就是报红叉 安排解决!!! 如果遇到上述问题来到这里算是找对地方了!!!
jsp代码没有错,但是总是有红叉(一招解决)