我的定位:中高级人才(框架熟练、Java语法精通、数据库会用、Linux会用、中间件会用、有大数据经验!)
开始,我以为自己什么都知道。后来发现,其实我什么都不知道。

hibernate01ORM的引入

package cn.bdqn.bean;

public class Dept {
    
    private  Integer deptno;
    private  String dname;
    private  String loc;
    public Dept(Integer deptNo, String dname, String loc) {
        super();
        this.deptno = deptNo;
        this.dname = dname;
        this.loc = loc;
    }
    public Dept() {
        super();
    }
    public Integer getDeptno() {
        return deptno;
    }
    public void setDeptno(Integer deptNo) {
        this.deptno = deptNo;
    }
    public String getDname() {
        return dname;
    }
    public void setDname(String dname) {
        this.dname = dname;
    }
    public String getLoc() {
        return loc;
    }
    public void setLoc(String loc) {
        this.loc = loc;
    }
    @Override
    public String toString() {
        return "Dept [deptNo=" + deptno + ", dname=" + dname + ", loc=" + loc
                + "]";
    }
    
    
    

}
package cn.bdqn.test;

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

import cn.bdqn.bean.Dept;

public class JDBCTest {

    public static void main(String[] args) {
        
        /**
         * 获取数据库连接的4要素
         * 01.url
         * 02.driverClass
         * 03.userName
         * 04.password
         */
        String   driver="oracle.jdbc.driver.OracleDriver";
        String   url="jdbc:oracle:thin:@127.0.0.1:1521:orcl";
        String   userName="t10";
        String   password="t10";
        /**
         * 创建jdbc需要的API
         */
        Connection connection=null;
        PreparedStatement ps=null;
        ResultSet  rs=null;
        
        
        try {
            Class.forName(driver);  //加载驱动
            connection=    DriverManager.getConnection(url, userName, password);//获取连接
            String  sql="select *  from dept  where  deptno=?";  //书写sql语句
            ps=connection.prepareStatement(sql);  //实例化ps对象
            ps.setInt(1, 30);//给参数赋值
            rs=ps.executeQuery();  //获取查询的结果集
            
            while(rs.next()){
                int  deptno=rs.getInt("deptno");
                String dName=rs.getString("dname");
                String loc=rs.getString("loc");
                Dept  dept=new Dept(deptno, dName, loc);
                System.out.println(dept);
            }
        } catch (ClassNotFoundException e) {
            e.printStackTrace();
        } catch (SQLException e) {
            e.printStackTrace();
        }finally{
            try {
                //释放资源
                rs.close();
                ps.close();
                connection.close();
            } catch (SQLException e) {
                e.printStackTrace();
            }
            
        }
        
        
        
        
        

    }

}

 

 

 

 

package cn.bdqn.test;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.ResultSetMetaData;
import java.sql.SQLException;

import cn.bdqn.bean.Dept;

public class ORMTest {
    

    /**
     *  元数据:
     *   Student
     *      age
     *      name
     *      address
     *  这些属性都是用来描述Student对象特征的!   描述数据的数据就是元数据! 
     *      
     */

    public static void main(String[] args) throws Exception, IllegalAccessException, ClassNotFoundException {
        
        //我们所写的实体类
        String  className="cn.bdqn.bean.Dept";
        //通过反射获取这个类的实例
        Object object=Class.forName(className).newInstance();
        
        
        
        String   driver="oracle.jdbc.driver.OracleDriver";
        String   url="jdbc:oracle:thin:@127.0.0.1:1521:orcl";
        String   userName="t10";
        String   password="t10";
        /**
         * 创建jdbc需要的API
         */
        Connection connection=null;
        PreparedStatement ps=null;
        ResultSet  rs=null;
        
        try {
            Class.forName(driver);  //加载驱动
            connection=    DriverManager.getConnection(url, userName, password);//获取连接
            String  sql="select *  from dept  where  deptno=?";  //书写sql语句
            ps=connection.prepareStatement(sql);  //实例化ps对象
            ps.setInt(1, 20);//给参数赋值
            rs=ps.executeQuery();  //获取查询的结果集
            while(rs.next()){
                 //01.获取元数据的结果集
                ResultSetMetaData data = rs.getMetaData();
                 //02.获取数据库中有多少字段
                 int  count = data.getColumnCount();
                 //03.循环获取字段的名称和类型
                for (int i = 1; i <=count; i++) {
                    String name= data.getColumnName(i); //字段名称
                    String type= data.getColumnTypeName(i); //字段类型     System.out.println(name+"====》"+type);
                    //给我一个字段名称 ,我给你返回一个set字段名  给类中的属性 赋值
                    String method=getMethod(name);
                    //04.判断  数据库中的字段类型 要和java中的数据类型相互匹配
                    if (type.equals("NUMBER")) {
                        object.getClass().getMethod(method, Integer.class)
                        .invoke(object, rs.getInt(name));
                    }else if(type.equals("VARCHAR2")){
                        object.getClass().getMethod(method, String.class)
                        .invoke(object, rs.getString(name));
                    }
                }
               Dept dept=(Dept) object;
                System.out.println(dept);
                
                
            }
        } catch (ClassNotFoundException e) {
            e.printStackTrace();
        } catch (SQLException e) {
            e.printStackTrace();
        }finally{
            try {
                //释放资源
                rs.close();
                ps.close();
                connection.close();
            } catch (SQLException e) {
                e.printStackTrace();
            }
            
        }
        
        
        
        
        

    }

    
    
    
    /**
     *给我一个字段名称 ,我给你返回一个set字段名  给类中的属性 赋值
     * @param name  字段名称
     * @return   setName()
     */
    private static String getMethod(String name) {
        return "set"+name.substring(0, 1).toUpperCase()+name.substring(1).toLowerCase();
    }

}

 

posted @ 2017-06-29 11:15  想太多先森  阅读(134)  评论(0编辑  收藏  举报