模拟hibernate(反射+sql拼接)
来源:互联网 发布:淘宝华佗大药房旗舰店 编辑:程序博客网 时间:2024/05/29 04:28
Session.java
package com.wxh;import java.lang.reflect.InvocationTargetException;import java.lang.reflect.Method;import java.sql.Connection;import java.sql.DriverManager;import java.sql.PreparedStatement;import java.sql.SQLException;import java.util.HashMap;import java.util.Map;public class Session {String tableName="_student";Map<String,String> cfs=new HashMap<String, String>();String[] methodNames;public Session(){cfs.put("_id", "id");cfs.put("_name", "name");cfs.put("_age", "age");methodNames = new String[cfs.size()];}public void save(Student s) throws Exception{String sql=createSQL();Class.forName("com.mysql.jdbc.Driver");Connection conn=DriverManager.getConnection("jdbc:mysql://localhost/db_test","root","111");PreparedStatement psta=conn.prepareStatement(sql);for(int i=0;i<methodNames.length;i++){Method m=s.getClass().getMethod(methodNames[i]);Class r=m.getReturnType();if(r.getName().equals("java.lang.String")){String returnValue=(String)m.invoke(s);psta.setString(i+1, returnValue);}if(r.getName().equals("int")){Integer returnValue=(Integer)m.invoke(s);psta.setInt(i+1, returnValue);}System.out.println(m);}psta.executeUpdate();psta.close();conn.close();}private String createSQL() {String str1="";int index=0;for(String s:cfs.keySet()){String v=cfs.get(s);v=Character.toUpperCase(v.charAt(0))+v.substring(1);methodNames[index]="get"+v;str1+=s+",";index++;}str1=str1.substring(0,str1.length()-1);System.out.println(str1);String str2="";for(int i=0;i<cfs.size();i++){str2+="?,";}str2=str2.substring(0,str2.length()-1);System.out.println(str2);String sql="insert into "+tableName+"("+str1+")"+"values("+str2+")";System.out.println(sql);return sql;}}
Test.java
package com.wxh;public class Test {public static void main(String[] args) throws Exception {Student s=new Student();s.setId(2);s.setName("s2");s.setAge(2);Session session=new Session();session.save(s);}}
Student.java
package com.wxh;public class Student {private int id;private String name;private int age;public int getId() {return id;}public void setId(int id) {this.id = id;}public String getName() {return name;}public void setName(String name) {this.name = name;}public int getAge() {return age;}public void setAge(int age) {this.age = age;}}
0 0
- 模拟hibernate(反射+sql拼接)
- 反射+自定义属性拼接sql
- 利用反射拼接sql语句
- 模拟Hibernate底层生成SQL语句(反射机制)
- 使用反射模拟实现hibernate
- 利用java的反射机制模拟hibernate
- hibernate 多条件组合查询 之 sql 拼接
- hibernate 多条件组合查询之sql拼接
- hibernate 多条件组合查询之sql拼接
- hibernate 多条件组合查询之sql拼接
- 拼接sql
- SQL 拼接
- SQL拼接
- SQL拼接
- sql 拼接
- SQL拼接
- Hibernate 原生SQL查询反射到POJO
- 讲反射的 和 Hibernate SQL
- |洛谷|并查集|P1525 关押罪犯
- POJ 3984---迷宫问题
- chromium for linux 编译
- Linux下搭建tomcat集群全记录
- notepad++运行python
- 模拟hibernate(反射+sql拼接)
- Open CV学习记录(十三)——HcVision码流
- 第十周项目三-利用二叉树遍历思想解决问题
- 分布式系统的特点及设计理念
- 带你去看——WRC 2016 世界机器人博览会
- UGUI 如何判断鼠标停在UI上
- 【leetcode】441. Arranging Coins【E】
- 右左法则----复杂指针解析
- 多维数组