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 MapSelectById2(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 ListSelectById3() 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
运行结果为
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语句对数据库进行 *** 作。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)