首页 > Web开发 > 详细

hibernate模拟(转载)

时间:2018-07-21 11:24:56      阅读:171      评论:0      收藏:0      [点我收藏+]
package simulation;
/**
 * 
 * @author Administrator
 *
 */
public class User {
    private int id;
    private String username;
    private String pwd;
    public int getId() {
        return id;
    }
    public void setId(int id) {
        this.id = id;
    }
    public String getUsername() {
        return username;
    }
    public void setUsername(String username) {
        this.username = username;
    }
    public String getPwd() {
        return pwd;
    }
    public void setPwd(String pwd) {
        this.pwd = pwd;
    }
    
    
}
package simulation;

import java.lang.reflect.Method;
import java.sql.Connection;
import java.sql.DriverManager;
import java.util.Arrays;
import java.util.HashMap;
import java.util.Map;

import com.mysql.jdbc.PreparedStatement;

public class Session {
    
    private String table="user";
    private Map<String, String> params=new HashMap<String, String>();
    //装入方法名的容器
    String [] methodName;
    
    public Session() {
        //模拟配置文件 key为属性 value为数据列
        params.put("id", "_id");
        params.put("pwd", "_pwd");
        params.put("username", "_username");
        methodName=new String[params.size()];
    }
    
    public void save(User user){
        
        String sql = creatSQL();
        System.out.println(sql);
        //数据库操作
        try {
            Class.forName("com.mysql.jdbc.Driver");
            Connection con = DriverManager.getConnection("jdbc:mysql://localhost:3306/hibernate","root","123456");
            PreparedStatement state =  (PreparedStatement) con.prepareStatement(sql);
            //为占位符设值
            for (int i = 0; i < methodName.length; i++) {
                //反射取值
                Method method = user.getClass().getMethod(methodName[i]);
                Class<?> clazz = method.getReturnType();
                if (clazz.getName().equals("java.lang.String")) {
                    state.setString(i+1, (String) method.invoke(user));
                }
                if (clazz.getName().equals("int")) {
                    state.setInt(i+1, (Integer) method.invoke(user));
                }
                System.out.println(method.getName()+":"+method.getReturnType());
            }
            state.executeUpdate();
            state.close();
            con.close();
        } catch (Exception e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
        
        
    }

    public  String creatSQL() {
        String parameters="";
        String values="";
        int index=0;
        //拼接属性字符串和值字符串
        for (String  key: params.keySet()) {
//            System.out.println(key);
            parameters+=params.get(key)+",";
            String v="get"+Character.toUpperCase(key.charAt(0))+key.substring(1);
//            System.out.println(methodName.length);
            methodName[index]=v;
            index++;
        }
        parameters=parameters.substring(0,parameters.length()-1);
        System.out.println(Arrays.toString(methodName));
        for (int i = 0; i < params.size(); i++) {
            values+="?,";
        }
        values=values.substring(0,values.length()-1);
        String sql="insert into "+table+"("+parameters+") values ("+values+")";
        return sql;
    }
    
    

}
package simulation;

public class HibernateTest {
    
    public static void main(String[] args) {
        
        User user=new User();
        user.setId(1);
        user.setPwd("123456");
        user.setUsername("a");
        Session session=new Session();
        session.save(user);
        
    }

}

技术分享图片

 

hibernate模拟(转载)

原文:https://www.cnblogs.com/Danial7777777/p/9344771.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!