IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 大数据 -> JDBC获取数据库中的记录,配置Properties文件,DBUtil框架使用 -> 正文阅读

[大数据]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<String, Object> SelectById2(Long idd) throws Exception {//用Map装一条数据
		   Connection conn=null;
		   Statement st=null;
		   ResultSet rs=null;
		   Map<String, Object> aMap=new HashMap<String, Object>();
		 //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<Student> SelectById3() throws Exception {//用List装多条对象记录
		   Connection conn=null;
		   Statement st=null;
		   ResultSet rs=null;
		   Student stu1=null;
		   List<Student> stulist=new ArrayList<Student>();
		 //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<Map<String, Object>> SelectById4() throws Exception {//用List装多条Map记录
		   Connection conn=null;
		   Statement st=null;
		   ResultSet rs=null;
		   
		   List<Map<String, Object>> StuMap=new ArrayList<Map<String,Object>>();
		 //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<String, Object> hMap=new HashMap<String, Object>();
				   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>(User.class));
		System.out.println(user);
	}
    @Test
    public void getUserById2() throws Exception {   //用Mao封装一条记录
    	Map<String, Object> 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<User> userList=qr.query(jdbcUtil.getConn(), "SELECT * FROM sorce", new BeanListHandler<User>(User.class));
		for(User user:userList)
			System.out.println(user);
	}
    @Test
    public void getUserById4() throws Exception {   //用ListMap封装多条记录
    	List<Map<String, Object>> stuMap=qr.query(jdbcUtil.getConn(), "SELECT * FROM sorce", new MapListHandler());
		for(Map<String, Object> hMap:stuMap)
			System.out.println(hMap);
	}

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

  大数据 最新文章
实现Kafka至少消费一次
亚马逊云科技:还在苦于ETL?Zero ETL的时代
初探MapReduce
【SpringBoot框架篇】32.基于注解+redis实现
Elasticsearch:如何减少 Elasticsearch 集
Go redis操作
Redis面试题
专题五 Redis高并发场景
基于GBase8s和Calcite的多数据源查询
Redis——底层数据结构原理
上一篇文章      下一篇文章      查看所有文章
加:2022-01-03 16:10:38  更:2022-01-03 16:12:26 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/24 13:38:03-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码