欢迎来到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
druid数据库连接池插件 AND c3p0数据库连接池插件。
采用三个构架包编写增删改查。
com.mysql.jdbc.Driver
jdbc:mysql://localhost:3306/studentdb?useUnicode=true&characterEncoding=utf-8 &zeroDateTimeBechavior=convertToNull&serverTimeZone=UTC";
root
123456
5
10
3000
com.mysql.jdbc.Driver
jdbc:mysql://localhost:3306/book?useUnicode=true&characterEncoding=utf-8 &zeroDateTimeBechavior=convertToNull&serverTimeZone=UTC";
root
123456
5
8
3000
你会发现这个构架包代替了下面的几行代码,
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文件说明:
com.mysql.jdbc.Driver jdbc:mysql://localhost:3306/studentdb?useUnicode=true&characterEncoding=utf-8 &zeroDateTimeBechavior=convertToNull&serverTimeZone=UTC"; root 123456 5 10 3000
请看这个包的配置文件
driverClassName=com.mysql.cj.jdbc.Driver url=jdbc:mysql://localhost:3306/studentdb?useUnicode=true&characterEncoding=utf-8&zeroDateTimeBechavior=convertToNull&serverTimeZone=UTC"; username=root password=123456 initialSize=5 maxActive=10 maxWait=3000
package com.db.text;
import java.io.IOException;
import java.io.InputStream;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.util.Properties;
import javax.sql.DataSource;
import org.junit.Test;
import com.alibaba.druid.pool.DruidDataSourceFactory;
/**
* druid框架:用于创建指定数量的连接池
* 加快cpu性能
* @author MZFAITHDREAM
*
*/
public class DruidDemo {
@Test
public void test1() {
//需要输入流 用文件用/ 号开始
InputStream is=DruidDemo.class
.getClassLoader().getResourceAsStream("com/db/text/druid.properties");
//创建一个 Properties对象 将输入流的内容》》prProperties
Properties properties =new Properties();
try {
properties.load(is);
DataSource ds=DruidDataSourceFactory.createDataSource(properties);
Connection con=ds.getConnection();
if(con!=null) {
String sql="insert into tb_students(name,age) VALUES(?,?)";
PreparedStatement ps=con.prepareStatement(sql);
ps.setString(1, "你好 DruidDemo");
ps.setInt(2, 42);
int count=ps.executeUpdate();
if (count>0) {
System.out.println("添加成功");
}
}
//并不是断开连接,而是将用完的对象放入连接池
con.close();
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
第四个构架包:JDBCTemplate数据库插件。
使用了四个架构包呢?
请看下面的代码。
static {
//建立连接
InputStream is=DruidDemo.class
.getClassLoader().getResourceAsStream("com/db/text/druid.properties");
Properties properties =new Properties();
try {
properties.load(is);
DataSource ds=DruidDataSourceFactory.createDataSource(properties);
jt=new JdbcTemplate(ds);
//并不是断开连接,而是将用完的对象放入连接池
} catch (Exception e) {
e.printStackTrace();
}
}
@Test
public void test1() {
//增加语句
String sql="insert into tb_students(name,age) VALUES(?,?)";
int i= jt.update(sql,"黄小年",45);
if(i>0) {
System.out.println("数据增加成功");
}
@Test
public void text3() {
String sql="DELETE FROM `studentdb`.`tb_student` WHERE ` id` = ?";
int i=jt.update(sql ,1);
if(i>0) {
System.out.println("数据删除成功");
}
@Test
public void text2() {
String sql="UPDATE `studentdb`.`tb_students` SET `name` = ?WHERE `id` = ?";
int i=jt.update(sql ,"你好二货",1001);
if(i>0) {
System.out.println("数据修改成功");
}
@Test
public void text4() {
String sql="select *from tb_students where id=?";
Map map = (Map) jt.queryForMap(sql, 2);
System.out.println(map);
}
@Test
public void test5() {
String sql="select *from tb_students";
List> olList =jt.queryForList(sql);
olList.forEach(map->System.out.println(map));
}
package com.db.text;
import java.io.InputStream;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.util.List;
import java.util.Properties;
import javax.sql.DataSource;
import org.junit.Test;
import org.springframework.jdbc.core.JdbcTemplate;
import com.alibaba.druid.pool.DruidDataSourceFactory;
import com.sun.javafx.collections.MappingChange.Map;
public class JDBCTemplateDemo {
public static JdbcTemplate jt =null;
/**
* sping框架
*/
static {
//建立连接
InputStream is=DruidDemo.class
.getClassLoader().getResourceAsStream("com/db/text/druid.properties");
Properties properties =new Properties();
try {
properties.load(is);
DataSource ds=DruidDataSourceFactory.createDataSource(properties);
jt=new JdbcTemplate(ds);
//并不是断开连接,而是将用完的对象放入连接池
} catch (Exception e) {
e.printStackTrace();
}
}
@Test
public void test1() {
//增加语句
String sql="insert into tb_students(name,age) VALUES(?,?)";
int i= jt.update(sql,"黄小年",45);
if(i>0) {
System.out.println("数据增加成功");
}
}
//修改数据
@Test
public void text2() {
String sql="update tb_students set age=? where id=?";
int i=jt.update(sql ,24,23);
if(i>0) {
System.out.println("数据修改成功");
}
}
@Test
public void text3() {
String sql="DELETE FROM `studentdb`.`tb_student` WHERE ` id` = ?";
int i=jt.update(sql ,1);
if(i>0) {
System.out.println("数据删除成功");
}
}
@Test
public void text4() {
String sql="select *from tb_students where id=?";
Map map = (Map) jt.queryForMap(sql, 2);
System.out.println(map);
}
@Test
public void test5() {
String sql="select *from tb_students";
List> olList =jt.queryForList(sql);
olList.forEach(map->System.out.println(map));
}
}
总结:框架的使用让开发人员使用起来方便