---
前言
这是一篇水文,非常非常的水。
提示:以下是本篇文章正文内容,下面案例可供参考
一、示例代码总集
1.DeptWei
package com.hp.controller;
import com.hp.pojo.Dept;
import com.hp.service.IDeptService;
import com.hp.service.impl.DeptServiceImpl;
import org.junit.Test;
import java.util.List;
//部门控制类
public class DeptCWei {
//1.引入业务层
private IDeptService deptService=new DeptServiceImpl();
//测试查询一行,参数由前端给
@Test
public void testRow(){
int did=8;//did来自前端
Dept dept =deptService.selectRow(did);
System.out.println(dept);
}
@Test
public void list(){
List<Dept> list= deptService.list();
System.out.println(list);
}
}
2.DeptDaoImpl
package com.hp.dao.impl;
import com.hp.dao.IDeptDao;
import com.hp.pojo.Dept;
import com.hp.ulits.jdbcUtilsPlus;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.Statement;
import java.util.ArrayList;
import java.util.List;
//impl表示实现类
public class DeptDaoImpl implements IDeptDao {
@Override
public List<Dept> list() {
return null;
}
@Override
public Dept selectRow(int did) {
return jdbcUtilsPlus.selectRow("select*from t_dept where did="+did,Dept.class);
}
}
3.User
package com.hp.pojo;
public class User {
private int id;
private String username;
private String password;
@Override
public String toString() {
return "User{" +
"id=" + id +
", username='" + username + '\'' +
", password='" + password + '\'' +
'}';
}
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getUsername() {
return username;
}
public void setUsername(String username) {
this.username = username;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
}
4.DeptServiceImpl
package com.hp.service.impl;
import com.hp.dao.IDeptDao;
import com.hp.dao.impl.DeptDaoImpl;
import com.hp.pojo.Dept;
import com.hp.service.IDeptService;
import java.util.List;
public class DeptServiceImpl implements IDeptService {
private IDeptDao deptDao=new DeptDaoImpl();
@Override
public int add() {
return 0;
}
@Override
public List<Dept> list() {
return deptDao.list();
}
@Override
public Dept selectRow(int did) {
return deptDao.selectRow(did);
}
}
5.jdbcUtilsPlus
package com.hp.ulits;
import com.hp.pojo.User;
import org.junit.Test;
import java.lang.reflect.Field;
import java.sql.*;
import java.util.ArrayList;
import java.util.List;
//jdbc工具类 升级版
/*
*Statement 父类
* PreparedStatement 子类
* 1.提前传入sql,执行的时候,不传入sql
* 2.支持传入sql中的参数
* 4.提高执行效率
* Object ... params 可变形参数组
* 在调用函数时,可以传入任意个任意类型的参数
* */
public class jdbcUtilsPlus {
/*@Test
public void testRow(){
Dept dept=selectRow("select*from t_Dept where did=1",Dept.class);
System.out.println(dept);
}
@Test
public void testColumn(){
List<Integer> list = selectColumn("select did from t_Dept", Integer.class);
System.out.println(list);
}
@Test
public void testOne(){
Double sumSalary = selectOne("SELECT SUM(salary) FROM t_emps", double.class);
System.out.println(sumSalary);
}
@Test
public void testUpdate(){
int j = Update("insert into t_dept values (null,'a','b','c')");
System.out.println(j);
}*/
@Test//测试登录
public void testLogin(){
String username="aa";
String password="aa";
User user = selectRow("select*from t_users where username= ? and password= ? ", User.class,username,password);
System.out.println(user !=null ? "登录成功":"登录失败");
}
//查询多行多列
public static<T> List<T> list(String sql,Class<T> c,Object ... params) {
//创建一个集合,存放所有的对象
List<T>tList=new ArrayList<>();
try{
//1.注册驱动-反击去加载jar包中的com.mysql.jdbc.Driver这个类中的DriverManager.registerDriver(new Driver());
Class.forName("com.mysql.jdbc.Driver");
//2.获取连接对象
Connection con= DriverManager.getConnection("jdbc:mysql://localhost:3306/summer-camp2023?characterEncoding=utf8","root","root");
//3.定义sql
//4.需要创建statement
PreparedStatement PreState=con.prepareStatement(sql);
for (int i = 0; i < params.length; i++) {
PreState.setObject(i+1,params[i]);
}
//5.statement执行sql,返回 结果集
ResultSet rs=PreState.executeQuery();
//结果集rs得到结果集元数据
ResultSetMetaData md=rs.getMetaData();
//获取结果集的总列数
int columnCount=md.getColumnCount();
//6.解析rs
while (rs.next()){//读取结果集的光标向下移动一行,光标默认在哪一行,列名所在的那一行
//根据每一行数据,封装成一个实体对象
T t=c.newInstance();
//1.取出某一行的每列数据,封装到对象t的属性中
for (int i = 0; i <=columnCount ; i++) {
//通过列的序号,获取每一列的值
Object value = rs.getObject(i);
if (value!=null){
//使用反射,把value给到对象t的属性中
String columnName=md.getCatalogName(i);
//因为列明和实体类一致,为每个属性构造一个反射中的set方法
Field f = c.getDeclaredField(columnName);
//赋予私有属性的赋值权限
f.setAccessible(true);
//使用反射,把value给到对象t的属性中
f.set(t,value);//理解为:把value赋值给对象t的columnName属性,相当于set方法
}
}
//把对象存入集合中
tList.add(t);
}
//7,关闭资源
PreState.close();
con.close();
}catch ( Exception e){
e.printStackTrace();
}
return tList;
//查询一行
//查询单个
//增删改
}
//查询一行
public static<T> T selectRow(String sql,Class<T> c,Object ...params) {
try{
//1.注册驱动-反击去加载jar包中的com.mysql.jdbc.Driver这个类中的DriverManager.registerDriver(new Driver());
Class.forName("com.mysql.jdbc.Driver");
//2.获取连接对象
Connection con= DriverManager.getConnection("jdbc:mysql://localhost:3306/summer-camp2023?characterEncoding=utf8","root","root");
//3.定义sql
//4.需要创建statement
PreparedStatement preState = con.prepareStatement(sql);
//在执行前,给sql传递参数
for (int i = 0; i < params.length; i++) {
preState.setObject(i+1,params[i]);
}
//5.statement执行sql,返回 结果集
ResultSet rs=preState.executeQuery();
//结果集rs得到结果集元数据
ResultSetMetaData md=rs.getMetaData();
//获取结果集的总列数
int columnCount=md.getColumnCount();
//6.解析rs
// 根据每一行数据,封装成一个实体对象
T t=null;
if (rs.next()){//读取结果集的光标向下移动一行,光标默认在哪一行,列名所在的那一行
t=c.newInstance();
//1.取出某一行的每列数据,封装到对象t的属性中
for (int i = 1; i <=columnCount ; i++) {
//通过列的序号,获取每一列的值
Object value = rs.getObject(i);
if (value!=null){
//使用反射,把value给到对象t的属性中
String columnName=md.getColumnName(i);
//因为列明和实体类一致,为每个属性构造一个反射中的set方法
Field f = c.getDeclaredField(columnName);
//赋予私有属性的赋值权限
f.setAccessible(true);
//使用反射,把value给到对象t的属性中
f.set(t,value);//理解为:把value赋值给对象t的columnName属性,相当于set方法
}
}
}
//7,关闭资源
preState.close();
con.close();
return t;
}catch ( Exception e){
e.printStackTrace();
}
return null;
//查询一行
//查询单个
//增删改
}
//查询一列
public static<T> List<T> selectColumn(String sql,Class<T> c, Object ... params) {
//创建一个集合,存放所有的对象
List<T>tList=new ArrayList<>();
try{
//1.注册驱动-反击去加载jar包中的com.mysql.jdbc.Driver这个类中的DriverManager.registerDriver(new Driver());
Class.forName("com.mysql.jdbc.Driver");
//2.获取连接对象
Connection con= DriverManager.getConnection("jdbc:mysql://localhost:3306/summer-camp2023?characterEncoding=utf8","root","root");
//3.定义sql
//4.需要创建statement
PreparedStatement statement=con.prepareStatement(sql);
//在执行前,给sql传递参数
for (int i = 0; i < params.length; i++) {
statement.setObject(i+1,params[i]);
}
//5.statement执行sql,返回 结果集
ResultSet rs=statement.executeQuery();
//结果集rs得到结果集元数据
ResultSetMetaData md=rs.getMetaData();
//获取结果集的总列数
int columnCount=md.getColumnCount();
//6.解析rs
while (rs.next()){//读取结果集的光标向下移动一行,光标默认在哪一行,列名所在的那一行
//通过列的序号,获取每一列的值
T t=(T) rs.getObject(1);
//把对象存入集合中
tList.add(t);
}
//7,关闭资源
statement.close();
con.close();
}catch ( Exception e){
e.printStackTrace();
}
return tList;
//查询一行
//查询单个
//增删改
}
//查询单个
public static<T> T selectOne(String sql,Class<T> c,Object ... params) {
try{
//1.注册驱动-反击去加载jar包中的com.mysql.jdbc.Driver这个类中的DriverManager.registerDriver(new Driver());
Class.forName("com.mysql.jdbc.Driver");
//2.获取连接对象
Connection con= DriverManager.getConnection("jdbc:mysql://localhost:3306/summer-camp2023?characterEncoding=utf8","root","root");
//3.定义sql
//4.需要创建statement
PreparedStatement statement = con.prepareStatement(sql);
//在执行前,给sql传递参数
for (int i = 0; i < params.length; i++) {
statement.setObject(i+1,params[i]);
}
//5.statement执行sql,返回 结果集
ResultSet rs=statement.executeQuery();
//结果集rs得到结果集元数据
ResultSetMetaData md=rs.getMetaData();
//获取结果集的总列数
int columnCount=md.getColumnCount();
//6.解析rs
T t=null;
if (rs.next()){
t=(T) rs.getObject(1);
}
//7,关闭资源
statement.close();
con.close();
return t;
}catch ( Exception e){
e.printStackTrace();
}
return null;
//查询一行
//查询单个
//增删改
}
//增 删 改
public static int Update(String sql,Object ... params) {
try{
//1.注册驱动-反击去加载jar包中的com.mysql.jdbc.Driver这个类中的DriverManager.registerDriver(new Driver());
Class.forName("com.mysql.jdbc.Driver");
//2.获取连接对象
Connection con= DriverManager.getConnection("jdbc:mysql://localhost:3306/summer-camp2023?characterEncoding=utf8","root","root");
//3.定义sql
//4.需要创建statement
PreparedStatement statement = con.prepareStatement(sql);
//在执行前,给sql传递参数
for (int i = 0; i < params.length; i++) {
statement.setObject(i+1,params[i]);
}
//5.statement执行sql,返回 结果集
int i = statement.executeUpdate(sql);
//7,关闭资源
statement.close();
con.close();
return i;
}catch ( Exception e){
e.printStackTrace();
}
return 0;
//查询一行
//查询单个
//增删改
}}
二、执行结果
1.DeptWei
2.jdbcUtilsPlus
总结
以上代码和结果仅供参考。
不便之处敬请见谅。。