JDBC查数据

news/2024/5/19 2:10:20 标签: java, jdbc, 数据库, web, 服务器

目录

BaseDao

UserDao

impl


项目目录


BaseDao

java">package com.hz.dao;

import java.io.InputStream;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.Properties;

import com.hz.util.ConfigManager;

/**
 * 公共的数据库连接信息 获得连接信息
 * 
 * @author XXX
 * 
 */
public class BaseDao {

	protected Connection conn = null;
	protected PreparedStatement ps = null;
	protected ResultSet rs = null;
	Properties properties = new Properties();
	
	
	/**
	 * 获得连接信息
	 * 
	 * @return
	 */
	public boolean getConnection() {
		
		String url = ConfigManager.getInstance().getString("jdbc.url");
		String username = ConfigManager.getInstance().getString("jdbc.username");
		String pwd = ConfigManager.getInstance().getString("jdbc.pwd");
		String Driver=ConfigManager.getInstance().getString("jdbc.Driver");
		try {
			Class.forName(Driver);
			// 3.使用DriverManager获得Connection对象
			conn = DriverManager.getConnection(url, username, pwd);
			return true;
		} catch (Exception e) {
			e.printStackTrace();
			return false;
		} 
	}

	/**
	 * 增删改
	 */
	public int executeUpdate(String sql, Object[] objs) {
		int res = 0;//初始化执行结果  失败0
		if (this.getConnection()) {
			try {
				ps = conn.prepareStatement(sql);
				// 填充占位符
				for (int i = 0; i < objs.length; i++) {
					ps.setObject(i + 1, objs[i]);
				}
				res = ps.executeUpdate();
			} catch (SQLException e) {
				e.printStackTrace();
			} 
		}
		return res;
	}

	/**
	 * 查
	 */
	public ResultSet executeSQL(String sql, Object[] objs) {
		ResultSet rs = null;
		try {
			if (getConnection()) {
				ps = conn.prepareStatement(sql);
			    //判断是否有参数
				if (objs != null) {
				    //循环封装参数
					for (int i = 0; i < objs.length; i++) {
						ps.setObject(i + 1, objs[i]);
					}
				}
				rs = ps.executeQuery();
			}

		} catch (Exception e) {
			e.printStackTrace();
		} 
		return rs;
	}

	/**
	 * 释放资源
	 */
	public void closeResources() {
		try {
			if (rs != null)
				rs.close();
			if (ps != null)
				ps.close();
			if (conn != null)
				conn.close();
		} catch (SQLException e) {
			e.printStackTrace();
		}

	}
}

 

UserDao

java">public interface UserDao {
	
	
	
	/**
	 * 一对多
	 * 根据用户id 或的对象信息 并返回获得地址集合
	 * @param id
	 * @return
	 */
	public User findUserAddressById(Long id); 

	/**
	 * 用户登录
	 * @param userCode
	 * @param userPassword
	 * @return
	 */
	public User loginUser(String userCode, String userPassword);
	/**
	 * 新增用户
	 * @param user
	 * @return
	 */
	public int saveUser(User user);
	/**
	 * 根据ID删除用户
	 * @param id
	 * @return
	 */
	public int deleteUserById(Long id);
	
	/**
	 * 获取所有用户信息
	 * @return
	 */
	public List<User> findUserList();
	
	/**
	 * 根据id获得单个用户对象
	 * @return
	 */
	public User finUserById(Long id);
	/**
	 * 根据用户ID 修改用户信息
	 * @param user
	 * @return
	 */
	public int updateUser(User user);

	
}

impl

java">package com.hz.dao.impl;

import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;

import com.hz.dao.AddressDao;
import com.hz.dao.BaseDao;
import com.hz.dao.UserDao;
import com.hz.pojo.Address;
import com.hz.pojo.User;

//用户类
public class UserDaoImpl extends BaseDao implements UserDao, AddressDao {
	
	//一对一    返回集合
	// 获得所有用户下所有收获地址信息集合并显示所属用户名与用户编码
	
	@Override
	public List<Address> findAddressListById1() {
		List<Address> addrList = new ArrayList<Address>();
		Address addr =  new Address();
		try {
			if (getConnection()) {
				//收获地址ID 收货人姓名 详细地址 所有用户编号 所属用户名
				String sql = "SELECT a.id,a.contact,a.addressDesc,b.id uid,b.userName FROM smbms_address a left join smbms_user b on a.userId=b.id";
				rs = executeSQL(sql, new Object[] {});
				while (rs.next()) {
					User user = new User();
					user.setId(rs.getLong("id"));
					user.setUserName(rs.getString("contact"));
					user.setAddress(rs.getString("addressDesc"));
					addr =  new Address();
					addr.setUser(user);
					addr.setId(rs.getLong("uid"));
					addr.setContact(rs.getString("userName"));
					addrList.add(addr);
				}
	
			return addrList;

			}
		} catch (Exception e) {
			e.printStackTrace();
		}

		return null;
	}

	

	@Override
	public User findAddressListById() {
		User user = new User(); 
		List<Address> addrList = new ArrayList<Address>();
		try {
			if (getConnection()) {
				//收获地址ID 收货人姓名 详细地址 所有用户编号 所属用户名
				String sql = "SELECT a.id,a.contact,a.addressDesc,b.id uid,b.userName FROM smbms_address a left join smbms_user b on a.userId=b.id";
				rs = executeSQL(sql, new Object[] {});
				while (rs.next()) {
					User user1 = new User();
					user1.setId(rs.getLong("id"));
					user1.setUserName(rs.getString("contact"));
					user1.setAddress(rs.getString("addressDesc"));
					Address addr =  new Address();
					addr.setUser(user1);
					addr.setId(rs.getLong("uid"));
					addr.setContact(rs.getString("userName"));
					addrList.add(addr);
				}
				user.setAddressList(addrList);
				
			return user;

			}
		} catch (Exception e) {
			e.printStackTrace();
		}

		return null;
	}

	@Override
	//一对多
	public User findUserAddressById(Long id) {
		User user = new User();
		List<Address> addrList = new ArrayList<Address>();
		try {
			if (getConnection()) {
				String sql = "SELECT a.id,a.userName,b.id addrid,b.contact,b.addressDesc FROM smbms_user a left join smbms_address b on a.id=b.userId WHERE a.id=?";
				rs = executeSQL(sql, new Object[] { id });
				while (rs.next()) {
					user.setId(rs.getLong("id"));
					user.setUserName(rs.getString("userName"));

					Address addr = new Address();
					addr.setId(rs.getLong("addrid"));
					addr.setContact(rs.getString("contact"));
					addr.setAddressDesc(rs.getString("addressDesc"));
					addrList.add(addr);

				}
				user.setAddressList(addrList);

				return user;

			}
		} catch (Exception e) {
			e.printStackTrace();
		} finally {
			closeResources();
		}

		return null;
	}

	// 1.-------------------------------------------
	@Override
	public User loginUser(String userCode, String userPassword) {
		try {
			if (getConnection()) {
				String sql = "select * from smbms_user a where a.userCode=? and a.userPassword=?";
				// 4.创建Statementd对象 用于执行SQL语句
				ps = conn.prepareStatement(sql);
				ps.setString(1, userCode);
				ps.setString(2, userPassword);
				// 5.执行sql语句
				rs = ps.executeQuery();
				User user = null;
				while (rs.next()) {
					user = new User();
					user.setId(rs.getLong("id"));
					user.setUserPassword(rs.getString("userPassword"));
					user.setUserName(rs.getString("userName"));
				}
				return user;// 返回用户登录对象
			}
		} catch (Exception e) {
			e.printStackTrace();
		} finally {
			this.closeResources();// 释放资源
		}
		return null;
	}

	// 2.新增用户-------------------------------------------
	@Override
	public int saveUser(User user) {
		int res = 0;
		try {
			String sql = "INSERT into smbms_user(userCode,userName,userPassword) VALUES(?,?,?)";
			Object[] objs = { user.getUserCode(), user.getUserName(), user.getUserPassword() };
			res = this.executeUpdate(sql, objs);
			if (res > 0) {
				System.out.println("添加成功");
			}
		} catch (Exception e) {
			e.printStackTrace();
		}
		return res;
	}

	// 3.根据ID删除用户-------------------------------------------
	@Override
	public int deleteUserById(Long id) {
		int res = 0;
		try {
			String sql = "DELETE from smbms_user WHERE id=?";
			Object[] objs = { id };
			res = this.executeUpdate(sql, objs);
			if (res > 0) {
				System.out.println("删除成功");
			}
		} catch (Exception e) {
			e.printStackTrace();
		}
		return res;
	}

	// 4.获取所有用户信息-------------------------------------------
	@Override
	public List<User> findUserList() {
//		try {
//			String sql = "select * from smbms_user ";
//			Object[] objs = {};
//			ResultSet rs = executeSQL(sql, objs);
//			List<User> userList = new ArrayList<User>();
//			while (rs.next()) {
//				User user = new User(rs.getLong("id"), rs.getString("userCode"), rs.getString("userName"),
//						rs.getString("userPassword"));
//				userList.add(user);
//				System.out.println(user.toString());
//			}
//			return userList;
//		} catch (Exception e) {
//			e.printStackTrace();
//		}
//		return null;
		
		List<User> userList = new ArrayList<User>();
		try {
			if (getConnection()) {
				String sql = "select * from smbms_user ";
				rs = executeSQL(sql, null);
				while (rs.next()) {
				 	User user = new User();
					user.setId(rs.getLong("id"));
					user.setUserName(rs.getString("userName"));
					user.setUserCode(rs.getString("userCode"));
					userList.add(user);
				}
				return userList;
			}

		} catch (Exception e) {
			e.printStackTrace();
		}
		return userList;
		
		
		
		
		
	}

	// 5.根据id获得单个用户对象-------------------------------------------
	@Override
	public User finUserById(Long id) {
		try {
			String sql = "select id,userCode,userName,userPassword  from smbms_user where id=? ";
			Object[] objs = { id };
			ResultSet rs = this.executeSQL(sql, objs);
			User user = null;
			while (rs.next()) {
				user = new User();
				user.setId(rs.getLong("id"));
				user.setUserPassword(rs.getString("userPassword"));
				user.setUserName(rs.getString("userName"));
				user.setUserCode(rs.getString("userCode"));
			}
			return user;

		} catch (Exception e) {
			e.printStackTrace();
		}
		return null;
	}

	// 6.根据用户ID 修改用户信息-------------------------------------------
	@Override
	public int updateUser(User user) {
		int res = 0;
		try {
			String sql = "UPDATE smbms_user SET userPassword = 6666 WHERE userCode = ?";
			Object[] objs = { user.getUserCode() };
			res = this.executeUpdate(sql, objs);
			if (res > 0) {
				System.out.println("修改成功");
			}
		} catch (Exception e) {
			e.printStackTrace();
		}
		return res;
	}



}


http://www.niftyadmin.cn/n/4961543.html

相关文章

【PostgreSQL】导出数据库表(或序列)的结构和数据

导出 PostgreSQL 数据库的结构和数据 要导出 PostgreSQL 数据库的结构和数据&#xff0c;你可以使用 pg_dump 命令行工具。pg_dump 可以生成一个 SQL 脚本文件&#xff0c;其中包含了数据库的结构&#xff08;表、索引、视图等&#xff09;以及数据。下面是如何使用 pg_dump 导…

02ShardingSphere-MySQL主从同步配置

1、MySQL主从同步原理 基本原理&#xff1a; slave会从master读取binlog来进行数据同步 具体步骤&#xff1a; step1&#xff1a;master将数据改变记录到二进制日志&#xff08;binary log&#xff09;中。step2&#xff1a; 当slave上执行 start slave 命令之后&#xff0c…

vue插入重复的html内容

vue添加重复的html内容是通过绑定一个数组来v-for循环实现的。 效果展示&#xff1a; 首先创建数组&#xff0c;里面为重复内容的数量&#xff0c;里面默认存在一个初始值。 然后通过v-for来绑定这个数组&#xff0c;循环数据。 通过添加点击事件&#xff0c;来增加或删除数组…

C 语言学习

数组的指针 在c中&#xff0c;几乎所以使用数组名的表达式中&#xff0c;数组名的值是一个指针常量&#xff0c;也就是数组 第 一个元素的地址。注意这个值是指针常量&#xff0c;不是变量。 int a[10]{ ….....}; int *q; q&a[0] ; <>…

carla中lka实现(二)

前言&#xff1a; 首先计算之前检测出来的车道线的中线与输入图像的中线进行计算距离&#xff0c;&#xff0c;并设置不同的阈值对于不同的方向进行相关的调整。 一、车辆中心线 一般而言将摄像头架设在车辆的正中心轴上&#xff0c;所获得的图像的中间线极为车辆的中心。 …

excel文本函数篇2

本期主要介绍LEN、FIND、SEARCH以及后面加B的情况&#xff1a; &#xff08;1&#xff09;后缀没有B&#xff1a;一个字节代表一个中文字符 &#xff08;2&#xff09;后缀有B&#xff1a;两个字节代表一个中文字符 1、LEN(text)&#xff1a;返回文本字符串中的字符个数 2、…

从陌生到熟练使用string类

&#x1f388;个人主页:&#x1f388; :✨✨✨初阶牛✨✨✨ &#x1f43b;推荐专栏1: &#x1f354;&#x1f35f;&#x1f32f;C语言初阶 &#x1f43b;推荐专栏2: &#x1f354;&#x1f35f;&#x1f32f;C语言进阶 &#x1f511;个人信条: &#x1f335;知行合一 &#x1f…

基于ECharts+flask的爬虫可视化

项目效果。 本案例基于python的flask框架&#xff0c;通过爬虫程序将数据存储在csv文件中&#xff0c;在项目运行时会通过render_template映射出对应的页面&#xff0c;并且触发一个函数&#xff0c;该函数会读取csv文件的数据将之交给echarts渲染 &#xff0c;echarts将之渲染…