JDBC模板
表的列成员:
package com.wschase.jdbc3;
import java.time.LocalDateTime;
/**
* Author:WSChase
* Created:2019/3/25
*/
public class Member {
private Integer id;
private String name;
private LocalDateTime createdTime;
private LocalDateTime modifyTime;
public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public LocalDateTime getCreatedTime() {
return createdTime;
}
public void setCreatedTime(LocalDateTime createdTime) {
this.createdTime = createdTime;
}
public LocalDateTime getModifyTime() {
return modifyTime;
}
public void setModifyTime(LocalDateTime modifyTime) {
this.modifyTime = modifyTime;
}
@Override
public String toString() {
return "Member{" +
"id=" + id +
", name='" + name + '\'' +
", createdTime=" + createdTime +
", modifyTime=" + modifyTime +
'}';
}
}
JDBC的处理:
package com.wschase.jdbc3;
import java.sql.*;
/**
* Author:WSChase
* Created:2019/3/25
*/
public class JdbcTemplete1 {
Connection connection=null;
Statement statement=null;
ResultSet resultSet=null;
public void load(){
try {
Class.forName("com.mysql.jdbc.Driver");
} catch (ClassNotFoundException e) {
e.printStackTrace();
}
}
public void getConnection(){
String url="jdbc:mysql://127.0.0.1:3306/memo";
try {
connection=DriverManager.getConnection(url,"root","1041646364");
} catch (SQLException e) {
e.printStackTrace();
}
}
public void getStatment(){
try {
statement=connection.createStatement();
} catch (SQLException e) {
e.printStackTrace();
}
}
public void closeSource(){
if(resultSet!=null){
try {
resultSet.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
if(statement!=null){
try {
statement.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
if(connection!=null){
try {
connection.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
}
//SQL语句的执行以及结果的处理
//这个是泛型方法
public final <T,R> R execute(String sql,Hanlder<T,R> hanlder){
this.load();
this.getConnection();
this.getStatment();
//接下来是对结果的处理:但是我们还是需要通过分类讨论才能实现不同的功能
if(sql.trim().startsWith("select")||sql.trim().startsWith("SELECT")){
try {
resultSet=statement.executeQuery(sql);
//得到结果以后就直接返回结果:通过传进来的参数调用处理结果的方法
return hanlder.hanlder((T) resultSet);
} catch (SQLException e) {
e.printStackTrace();
}
}else {
try {
Integer effect=statement.executeUpdate(sql);
return hanlder.hanlder((T) effect);
} catch (SQLException e) {
e.printStackTrace();
}
}
//如果都不满足说明这个语句有问题直接返回null
return null;
}
}
interface Hanlder<T,R>{
R hanlder(T t);
}
实现数据库的增删改查功能:
package com.wschase.jdbc3.moban;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.time.LocalDateTime;
import java.util.ArrayList;
import java.util.List;
import java.util.Scanner;
/**实现JDBC:通过java语言操作数据库中的查询语言
* Author:WSChase
* Created:2019/3/25
*/
public class TestUseJdbcTemplete {
//定义这个对象是为了访问它里面的方法
public static JdbcTemplete jdbcTemplete1=new JdbcTemplete();
public static Scanner scanner=new Scanner(System.in);
static String sql=scanner.nextLine();
/*
查询功能
*/
//通过名字进行查找数据
public static void queryByName(String name){
//datas就是经过处理以后的结果
List<Member> datas=jdbcTemplete1.execute(sql,new ResultHandler());
if(datas!=null){
for(Member member:datas){
//member其实是一个对象,里面放的元素就是我们需要展示的表格中的数据
System.out.println(member);
}
}
}
/*
删除/增加/更新功能
*/
public static void change(){
JdbcTemplete jdbcTemplete1=new JdbcTemplete();
Integer effect=jdbcTemplete1.execute(sql, new Hanlder<Integer, Integer>() {
@Override
public Integer hanlder(Integer effect) {
return effect;
}
});
System.out.println("改变的结果是:"+effect);
}
public static void test(){
if(sql.trim().startsWith("select")||sql.trim().startsWith("SELECT")){
System.out.println("请输入你想要查询列的列名:");
String name=scanner.nextLine();
TestUseJdbcTemplete.queryByName(name);
}else {
TestUseJdbcTemplete.change();
}
}
}
/*
结果处理
*/
class ResultHandler implements Hanlder<ResultSet,List<Member>>{
//这个集合就是用来装这个Member对象的
private final List<Member> list=new ArrayList<>();
@Override
public List<Member> hanlder(ResultSet resultSet) {
try {
while (resultSet.next()){
int id=0;
id=resultSet.getInt("id");
String name=resultSet.getString("name");
LocalDateTime createdTime=resultSet.getTimestamp("created_time").toLocalDateTime();
LocalDateTime modifyTime=resultSet.getTimestamp("modify_time").toLocalDateTime();
Member member=new Member();
member.setId(id);
member.setName(name);
member.setCreatedTime(createdTime);
member.setModifyTime(modifyTime);
//将经过修改以后的这个值放进集合里面
list.add(member);
}
} catch (SQLException e) {
e.printStackTrace();
}
return list;
}
}
在IDEA环境中的数据库使用:
package com.wschase.jdbc3.moban;
/**在Java中实现数据库
* Author:WSChase
* Created:2019/3/25
*/
public class ImplementSQL {
public static void main(String[] args) {
System.out.println("请输入SQL语句:");
TestUseJdbcTemplete.test();
}
}
下面是运行的结果:
查询功能:
删除功能:
更新功能:
增加功能:
输入错误: