JDBC获取数据库中的记录,配置Properties文件,DBUtil框架使用

JDBC获取数据库中的记录,配置Properties文件,DBUtil框架使用,第1张

JDBC获取数据库中的记录,配置Properties文件,DBUtil框架使用

1.用JavaBean封装一条记录

首先要创建一个类,用来存储数据库中的记录,一条记录中有多个变量,所以该类中也应该有多个变量,该函数的返回值是一个类的对象。

	   @Test
	   public static Student SelectById(Long idd) throws Exception {//用对象装一条记录
		   Connection conn=null;
		   Statement st=null;
		   ResultSet rs=null;
		   Student stu1=null;
		 //1导入驱动包
		   try {
			 //2加载驱动
			   Class.forName("com.mysql.jdbc.Driver");
			 //3铺管道,简历Java到MySQL链接
			   conn=DriverManager.getConnection("jdbc:mysql://localhost:3306/login?useSSL=false", "root", "root");
			 //4创建车
			   st=conn.createStatement();
			 //5将sql装车发送到mysql数据库中去
			   String sql="SELECT * FROM sorce where id="+ idd +"";
			    rs=st.executeQuery(sql);//结果集
			   while(rs.next())
			   {
				   long id=rs.getLong("id");
				   String stuname=rs.getString("stuname");
				   Float javaSorce=rs.getFloat("javaSorce");
				   //System.out.println(id+" "+stuname+" "+javaSorce);
				   stu1=new Student(id,stuname,javaSorce);
			   }
			   
			   
		} catch (Exception e) {
			// TODO: handle exception
			System.out.println("发生错误了");
			e.printStackTrace();
		}
	      finally {
	    	//6释放资源
			     rs.close();
		    	 st.close();
		    	 conn.close();
		}
		   
		   return stu1;
		   
		
	}

Student类定义为

package cn.java.entity;

public class Student {
    @Override
	public String toString() {
		// TODO Auto-generated method stub
		return "Student[id="+id+",stuName="+name+",javaSorce="+javaSorce+"]";
	}
	private Long id;
    private String name;
    private Float javaSorce;
   public Student() {
	   super();
	// TODO Auto-generated constructor stub
}
   public Student(Long id,String stuname,Float javaSorce) {
	   this.id=id;
	   this.name=stuname;
	   this.javaSorce=javaSorce;
	// TODO Auto-generated constructor stub
}


}

运行结果

 2.用Map封装一条记录。

	   @Test
	   public static Map SelectById2(Long idd) throws Exception {//用Map装一条数据
		   Connection conn=null;
		   Statement st=null;
		   ResultSet rs=null;
		   Map aMap=new HashMap();
		 //1导入驱动包
		   try {
			 //2加载驱动
			   Class.forName("com.mysql.jdbc.Driver");
			 //3铺管道,简历Java到MySQL链接
			   conn=DriverManager.getConnection("jdbc:mysql://localhost:3306/login?useSSL=false", "root", "root");
			 //4创建车
			   st=conn.createStatement();
			 //5将sql装车发送到mysql数据库中去
			   String sql="SELECT * FROM sorce where id="+ idd +"";
			    rs=st.executeQuery(sql);//结果集
			    
			   while(rs.next())
			   {
				   long id=rs.getLong("id");
				   String stuname=rs.getString("stuname");
				   Float javaSorce=rs.getFloat("javaSorce");
				   //System.out.println(id+" "+stuname+" "+javaSorce);
				   aMap.put("id", id);
				   aMap.put("stuname", stuname);
				   aMap.put("javaSorce", javaSorce);
			   }
			   
			   
		} catch (Exception e) {
			// TODO: handle exception
			System.out.println("发生错误了");
			e.printStackTrace();
		}
	      finally {
	    	//6释放资源
			     rs.close();
		    	 st.close();
		    	 conn.close();
		}
		return aMap;   
		   
		   
		
	}

打印结果为

 可以通过两种方法对Map中的每一个键值对进行遍历,第一种方法利用Entry,每一次循环需要取出其中的Key和Value;

第二种方法要在JDK1.8以上才可以使用,利用forEach函数。

 3.用List封装多条对象记录,其实就只把多个Student对象封装到List集合中

	   @Test
	   public static List SelectById3() throws Exception {//用List装多条对象记录
		   Connection conn=null;
		   Statement st=null;
		   ResultSet rs=null;
		   Student stu1=null;
		   List stulist=new ArrayList();
		 //1导入驱动包
		   try {
			 //2加载驱动
			   Class.forName("com.mysql.jdbc.Driver");
			 //3铺管道,简历Java到MySQL链接
			   conn=DriverManager.getConnection("jdbc:mysql://localhost:3306/login?useSSL=false", "root", "root");
			 //4创建车
			   st=conn.createStatement();
			 //5将sql装车发送到mysql数据库中去
			   String sql="SELECT * FROM sorce";
			    rs=st.executeQuery(sql);//结果集
			    
			   while(rs.next())
			   {
				   long id=rs.getLong("id");
				   String stuname=rs.getString("stuname");
				   Float javaSorce=rs.getFloat("javaSorce");
				   //System.out.println(id+" "+stuname+" "+javaSorce);
				   stu1=new Student(id,stuname,javaSorce);
				   stulist.add(stu1);
			   }
			   
			   
		} catch (Exception e) {
			// TODO: handle exception
			System.out.println("发生错误了");
			e.printStackTrace();
		}
	      finally {
	    	//6释放资源
			     rs.close();
		    	 st.close();
		    	 conn.close();
		}
		   
		   return stulist;
		   
		
	}

运行结果为

4. 用List集合封装Map,可以装多条记录,返回值为List集合

	   @Test
	   public static List> SelectById4() throws Exception {//用List装多条Map记录
		   Connection conn=null;
		   Statement st=null;
		   ResultSet rs=null;
		   
		   List> StuMap=new ArrayList>();
		 //1导入驱动包
		   try {
			 //2加载驱动
			  // Class.forName("com.mysql.jdbc.Driver");
			 //3铺管道,简历Java到MySQL链接
			   conn=jdbcUtil.getConn();
			 //4创建车
			   st=conn.createStatement();
			 //5将sql装车发送到mysql数据库中去
			   String sql="SELECT * FROM sorce";
			    rs=st.executeQuery(sql);//结果集
			    
			   while(rs.next())
			   {
				   long id=rs.getLong("id");
				   String stuname=rs.getString("stuname");
				   Float javaSorce=rs.getFloat("javaSorce");
				   //System.out.println(id+" "+stuname+" "+javaSorce);
				   Map hMap=new HashMap();
				   hMap.put("id", id);
				   hMap.put("stuname", stuname);
				   hMap.put("javaSorce", javaSorce);
				   StuMap.add(hMap);
			   }
			   
			   
		} catch (Exception e) {
			// TODO: handle exception
			System.out.println("发生错误了");
			e.printStackTrace();
		}
	      finally {
	    	//6释放资源
             jdbcUtil.close(rs, st, conn);
		}
		   
		   return StuMap;
		   
		
	}

运行结果为

 5.配置数据库链接的Properties文件,这样的话如果修改数据库,修改配置文件即可,不用在代码中修改。

配置文件

 读取文件中的数据,需要先创建一个Properties对象,在写代码过程中,可以简化一些步骤,创建JdbcUtil工具类,再存到eclipse模板中,这样就可以随时方便调用了,可以简化许多过程。

package cn.java.utils;

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




public class jdbcUtil {
    private static String driver=null;
    private static String url=null;
    private static String username=null;
    private static String password=null;
    static {
    	
		// TODO Auto-generated method stub
    	//读取properties文件
    			//1.创建一个properties对象
    			Properties prop=new Properties();
    			//将prop对象与jdbc与Properties产生关联
    		   InputStream ins = jdbcUtil.class.getClassLoader().getResourceAsStream("jdbc.properties");
    			try {
					prop.load(ins);
					//读取数据
					 driver= prop.getProperty("driver");
					 url= prop.getProperty("url");
					 username= prop.getProperty("username");
					 password= prop.getProperty("password");
					//System.out.println(driver+url+username+password);
					Class.forName(driver);
					
				} catch (Exception e) {
					// TODO Auto-generated catch block
					e.printStackTrace();
				}

	}
    public static Connection getConn() throws Exception {
		
		return DriverManager.getConnection(url,username,password);
	}
    public static void close(ResultSet rs,Statement st,Connection conn) throws Exception {
		if(rs!=null)
			rs.close();
		if(st!=null)
			st.close();
		if(conn!=null)
			conn.close();
	}
	

}

如在创建连接时可以 conn=jdbcUtil.getConn();

在释放连接时可以   jdbcUtil.close(rs, st, conn);

6.使用DBUtil框架可以简化很多流程,数据库的增删改查都只需要一行,首先需要导入jar包。

然后就是一下命名规范:

cn.java.dao.Impl:存放 *** 作数据库的代码

cn.java.entity:存放实体类

cn.java.utils:存放工具类

resource:存放配置文件,而且新建文件夹是Source Folder

 

 首先是添加数据,第一种是写死的,第二种可以传递参数,参数用问号代替。

public void Insert() throws Exception { //添加数据
		int flag=qr.update(jdbcUtil.getConn(),"INSERT INTO sorce SET id=4,stuname='zqf',javaSorce=80");
		System.out.println(flag);
	}
    public static void Insert2(Long id,String stuname,Float javaSorce) throws Exception//添加数据
    {
    	int flag=qr.update(jdbcUtil.getConn(), "INSERT INTO sorce SET id=?,stuname=?,javaSorce=?", new Object[] {id,stuname,javaSorce});
        System.out.println(flag);
    }

接下来是使用框架查询数据库记录的四种情况:

 @Test
    public void getUserById1() throws Exception {   //用javabean装一条记录
    	User user=qr.query(jdbcUtil.getConn(), "SELECT * FROM sorce WHERe id=1", new BeanHandler(User.class));
		System.out.println(user);
	}
    @Test
    public void getUserById2() throws Exception {   //用Mao封装一条记录
    	Map hmap=qr.query(jdbcUtil.getConn(), "SELECt * FROM sorce WHERe id=2", new MapHandler());
		System.out.println(hmap);
	}
    @Test
    public void getUserById3() throws Exception {   //用javabean封装多条记录
    	List userList=qr.query(jdbcUtil.getConn(), "SELECt * FROM sorce", new BeanListHandler(User.class));
		for(User user:userList)
			System.out.println(user);
	}
    @Test
    public void getUserById4() throws Exception {   //用ListMap封装多条记录
    	List> stuMap=qr.query(jdbcUtil.getConn(), "SELECt * FROM sorce", new MapListHandler());
		for(Map hMap:stuMap)
			System.out.println(hMap);
	}

使用框架之后省略了很多步骤,配置好文件之后可以直接使用Sql语句对数据库进行 *** 作。

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/zaji/5694163.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-12-17
下一篇 2022-12-17

发表评论

登录后才能评论

评论列表(0条)

保存