不使用预编译对数据库的操作代码

页面一:
package com.oracle.util;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;

/**
 * 
 * DBTools: database 数据库 工具类 
 * 
 * @author Administrator
 * 
 * 理解封装的好处
 * 
 */
public class DBTools {
	//将 三个参数 提取出去 作为全局 静态 常量  变量
	private static final String URL = "jdbc:mysql://localhost:3306/java18?characterEncoding=utf8&useSSL=false&serverTimezone=UTC";
	private static final String USERNAME = "root";
	private static final String PASSWORD = "root";
	
	
	//java中静态块儿只执行一次
	static{ 
		try {
			//类 加载时 只运行 一次
			Class.forName("com.mysql.jdbc.Driver");
		} catch (Exception e) {
			e.printStackTrace();
		}
	}
	
	//最终的目的就是 获取 Connection  设计 个方法 来 获取 连接 
	
	//封装 通过这个 方法 获取 Connection 对象
	public static Connection getConnection(){
		Connection	conn = null;//初始化一个 Connection
		try {
		conn = DriverManager.getConnection(URL, USERNAME, PASSWORD);
		} catch (SQLException e) {
			e.printStackTrace();
		}
		return conn;
	}
	
	//资源的关闭    关闭 资源 不需要 返回值
	// 关闭 什么呢 ? Connection , Statement , ResultSet 所以 要当作 入参传入进来
	public static void close(Connection conn,Statement stat,ResultSet rs){
		
		//在方法入参 的地方  定义 形参 ,
		
			try {
				if(null != rs){ // 这样写 不会出现 空指针异常 
				  rs.close();
				}
				if(null != stat){
				 stat.close();	
				}
				if(null != conn){
					conn.close();
				}
			} catch (Exception e) {
				e.printStackTrace();
			}
		}
}
页面二:
package com.oracle.entity;
/**
 * 类名 尽量不要使用 t_user 
 *  导致 你的数据库表 名 要规范 user
 * 
 * @author Administrator
 *
 * 1.将数据库表 和 java 实体进行 映射 User
 * 2.数据库表中的字段 和  java实体中的 属性 一致
 */
public class User {
	//数据库表中的字段 和  java实体中的 属性 一致
	private Integer id;
	private String uname;
	private String password;
	
	//无参数
	public User(){}
	
	//也可以添加 构造方法  / 构造函数  看你心情
	public User(Integer id, String uname, String password) {
		this.id = id;
		this.uname = uname;
		this.password = password;
	}
	
	//私有属性 必须 添加getter setter方法 (属性的访问器)  
	public Integer getId() {
		return id;
	}

	public void setId(Integer id) {
		this.id = id;
	}

	public String getUname() {
		return uname;
	}

	public void setUname(String uname) {
		this.uname = uname;
	}

	public String getPassword() {
		return password;
	}

	public void setPassword(String password) {
		this.password = password;
	}

	//添加toString 方法  用来打印 对象的基本信息
	@Override
	public String toString() {
		return "User [id=" + id + ", uname=" + uname + ", password=" + password
				+ "]";
	}

}
页面三:
package com.oracle.daoImpl;

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

import com.oracle.entity.User;
import com.oracle.util.DBTools;

/**
 * crud 增删改查
 * 
 * 4个 ,5个 参数 以上 都会 被封装成 一个 实体
 * 
 * @author Administrator
 */
public class UserDaoImpl {

	private Connection conn = null;// 全局变量
	private Statement stat = null;// 全局变量
	private ResultSet rs = null;// 全局变量
	
	
	/**
	 * 添加新用户
	 */
	public void addUser(User user) {

		String sql = "insert into user(id,uname,password) values(null,'"
				+ user.getUname() + "','" + user.getPassword() + "')";

		conn = DBTools.getConnection();

		try {
			stat = conn.createStatement();

			stat.executeUpdate(sql);



		} catch (SQLException e) {
			e.printStackTrace();
		}finally {
			
			// 关闭资源
			DBTools.close(conn, stat, rs);
		}
	}

	/**
	 * 刪除用户信息
	 */
	public void deleteById(int id) {

		String sql = "delete from user where id = " + id;

		conn = DBTools.getConnection();

		try {
			stat = conn.createStatement();

			stat.executeUpdate(sql);

			// 资源关闭

		} catch (SQLException e) {
			e.printStackTrace();
		}finally {
			
			DBTools.close(conn, stat, rs);
		}
	}

	/**
	 * 修改用户信息
	 * 
	 * 
	 */
	public void udpateUser(User user) {

		String sql = "update user set uname = '" + user.getUname()
				+ "', password = '" + user.getPassword() + "' where id = "
				+ user.getId();

		conn = DBTools.getConnection();

		try {
			stat = conn.createStatement();

			stat.executeUpdate(sql);
			

		} catch (SQLException e) {
			e.printStackTrace();
		}finally {
			
			DBTools.close(conn, stat, rs);
		}

	}

	/**
	 * 查询所有 无条件查询 没有入参 ,必须有返回值
	 */
	public List<User> getAllUser() {
		List<User> list = new ArrayList<>();
		User user = null;

		String sql = "select * from user";

		conn = DBTools.getConnection();

		try {
			stat = conn.createStatement();

			rs = stat.executeQuery(sql);

			while (rs.next()) {
				user = new User();

				user.setId(rs.getInt("id"));
				user.setUname(rs.getString("uname"));
				user.setPassword(rs.getString("password"));

				// 将结果集中的 所有记录 添加到 集合中
				list.add(user);
			}
		} catch (SQLException e) {
			e.printStackTrace();
		}finally {
			DBTools.close(conn, stat, rs);
		}
		return list;
	}

	/**
	 * 有条件确切查询用户信息
	 */
	public User getUserByNameAndPwd(String uname, String password) {
		User user = null;
		String sql = "select * from user where uname = '" + uname
				+ "' and password = '" + password + "'";

		conn = DBTools.getConnection();

		try {
			stat = conn.createStatement();

			rs = stat.executeQuery(sql);

			while (rs.next()) {
				user = new User();
				user.setId(rs.getInt("id"));
				user.setUname(rs.getString("uname"));
				user.setPassword(rs.getString("password"));
			}
		} catch (SQLException e) {
			e.printStackTrace();
		}finally {
			DBTools.close(conn, stat, rs);			
		}
		return user;
	}

	/**
	 * 有条件模糊查询用户信息
	 * 
	 * select * from user where uname like '%小%'
	 * 
	 */

	public List<User> getUserByLike(String a) {
		List<User> list = new ArrayList<>();
		User user = null;
		String sql =  "select * from user where uname like '%" + a + "%'";

		conn = DBTools.getConnection();

		try {

			stat = conn.createStatement();

			rs = stat.executeQuery(sql);

			while (rs.next()) {
				user = new User();
				user.setId(rs.getInt("id"));
				user.setUname(rs.getString("uname"));
				user.setPassword(rs.getString("password"));

				// 向集合中添加user
				list.add(user);
			}
		} catch (Exception e) {
			e.printStackTrace();
		}finally {
			DBTools.close(conn, stat, rs);
		}
		return list;
	}

	/**
	 * 分页查询用户信息:返回值 是 集合 List<User> 入参 开始行 ,页大小 如何 计算   开始行:(pageNo-1)*pageSize
	 * 
	 * 
	 * select * from user limit 开始行 , 页大小;
	 */

	public List<User> getUserByLimit(int startRow, int pageSize) {
		List<User> list = new ArrayList<>();
		User user = null;
		String sql = "select * from user limit " + startRow + "," + pageSize;
		conn = DBTools.getConnection();
		try {
			stat = conn.createStatement();
			rs = stat.executeQuery(sql);
			while (rs.next()) {
				user = new User();
				user.setId(rs.getInt("id"));
				user.setUname(rs.getString("uname"));
				user.setPassword(rs.getString("password"));
				// 向集合中添加user
				list.add(user);
			}
		} catch (Exception e) {
			e.printStackTrace();
		}finally {
			DBTools.close(conn, stat, rs);
		}
		return list;
	}

	/**
	 * 分页查询和模糊查询放在一起查询用户信息 返回值 一定是集合 , 入参 3 个
	 * 
	 * select * from user where uname like ? limit startRow,pageSize;
	 */

	public List<User> getUserByLikeWithLimit(String a, int startRow,
			int pageSize) {
		List<User> list = new ArrayList<>();
		User user = null;
		String sql = "select * from user where uname like '%" + a
				+ "%' limit " + startRow + "," + pageSize;
		
		conn = DBTools.getConnection();
		try {
			stat = conn.createStatement();
			rs = stat.executeQuery(sql);
			while (rs.next()) {
				user = new User();
				user.setId(rs.getInt("id"));
				user.setUname(rs.getString("uname"));
				user.setPassword(rs.getString("password"));
				// 向集合中添加user
				list.add(user);
			}
		} catch (SQLException e) {
			e.printStackTrace();
		}finally {
			DBTools.close(conn, stat, rs);
		}
		return list;
	}

}
页面四:
package com.oracle.test;

import java.util.List;

import org.junit.Test;

import com.oracle.daoImpl.UserDaoImpl;
import com.oracle.entity.User;

public class MyTest {

	/**
	 * 新的测试方法  : 单元测试   
	 *  junit 使用到一个 注解       @Test注解  用来修饰方法的
	 *  单元测试 必须在类中   这个类 没有main 函数 也就是  主方法
	 * 
	 *  语法结构 :方法 必须是 void 无返回值 方法名 随便起 必须有 @Test注解修饰
	 * @param args
	 * 
	 * 访问修饰符 有几个? 
	 * private, protected ,什么也不写 ,public
	 * 
	 */
	/**登录用户信息
	  * junit 单元测试
	  */
	UserDaoImpl userDaoImpl = new UserDaoImpl(); //全局变量 
	@Test
	public void login(){
		try {
			User user = userDaoImpl.getUserByNameAndPwd("Mike","127");
			if(null != user){
				System.out.println("登录成功");
			}else{
				System.out.println("登录失败");
			}
		} catch (Exception e) {
			e.printStackTrace();
		}
	}
	
	/*
	 * 添加用户信息
	 */
	@Test
	public void testAdd(){
		
		User user = new User();
		//给属性赋值
		user.setUname("浩维");
		user.setPassword("123123");
		//添加
		userDaoImpl.addUser(user);
		System.out.println("执行完毕");
	}
	
	/**
	 * 删除用户信息
	 */
	@Test
	public void testDelete(){
		
		userDaoImpl.deleteById(9);
		
		System.out.println("删除成功");
	}
	/**
	 * 修改用户信息
	 */
	@Test
	public void testUpdate(){
		User user = new User();
		//不给name 赋值为什么是 null
		user.setId(4);
		user.setPassword("780");
		user.setUname("许航");
		userDaoImpl.udpateUser(user);
	}
	
	/**
	 *查询所有的用户信息 
	 */
	@Test
	public void getUsers(){
		List<User> list = userDaoImpl.getAllUser();
		for (User user : list) {
			System.out.println(user);
		}
	}
	
	/**
	 * 通过名字和密码查询
	 */
	@Test
	public void getUserByNameAndPwd(){
		
		User user = userDaoImpl.getUserByNameAndPwd("Jhon", "129");
		
		System.out.println(user);
		
	}
	
	
	/**
	 * 模糊查询代码
	 */
	@Test
	public void getUserByLike(){//模糊查询
		List<User> list = userDaoImpl.getUserByLike("o");
		for (User user : list) {
			System.out.println(user);
		}
	}
	
	/**
	 * 分页查询用户信息
	 */
	@Test
	public void getUserByLimit(){//分页查询
		
		int pageNo = 1;
		int pageSize = 4;
		
		int startRow = (pageNo - 1)*pageSize;
		
		List<User> list = userDaoImpl.getUserByLimit(startRow, pageSize);
		
		for (User user : list) {
			System.out.println(user);
		}
	}
	
	/**
	 * 模糊及分页查询
	 */
	@Test
	public void getUserByLikeWithLimit(){
		String a = "o";
		
		int pageNo = 2;
		int pageSize = 1;
		
		int startRow = (pageNo - 1)*pageSize;
		
		List<User> list = userDaoImpl.getUserByLikeWithLimit(a, startRow, pageSize);
		
		for (User user : list) {
			System.out.println(user);
		}
	}
	
}

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值