欢迎来到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> <!-- 连接数据库的地址 & 与连接符--> <property name="jdbcUrl">jdbc:mysql://localhost:3306/studentdb?useUnicode=true&characterEncoding=utf-8 &zeroDateTimeBechavior=convertToNull&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&characterEncoding=utf-8 &zeroDateTimeBechavior=convertToNull&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> <!-- 连接数据库的地址 & 与连接符--> <property name="jdbcUrl">jdbc:mysql://localhost:3306/studentdb?useUnicode=true&characterEncoding=utf-8 &zeroDateTimeBechavior=convertToNull&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>