hibernate初入门3--hibernate的简易实现
来源:互联网 发布:xalhar哈萨克音乐软件 编辑:程序博客网 时间:2024/05/01 06:56
对hibernate的几天学习大概了解了hibernate的工作原理,本着作为程序员的严谨(为了记忆而已),在此就重现hibernate简易实现的全过程!!
首先,我们知道hibernate是符合ORM对象关系映射的!!所以我们从测试类出发,默认简易的hibernate已实现;
代码如下
1 package com.hibernate.Exp150705; 2 3 import org.junit.Test; 4 5 public class TestDemo { 6 7 8 @Test 9 public void test() throws Exception{10 11 Children child = new Children();12 child.setId(1);13 child.setName("小元");14 child.setHeight(176);15 //基于hibernate的工作原理,自己创建一个MySession,用于完成实体类到数据库的映射16 MySession ms = new MySession();17 //创建的Mysession 具有save方法完成映射;18 ms.save(child);19 }20 21 }
实体类children类也已经实现,代码如下:
1 package com.hibernate.Exp150705; 2 3 public class Children { 4 5 private int id; 6 private String name; 7 private int height; 8 9 10 public int getId() {11 return id;12 }13 public void setId(int id) {14 this.id = id;15 }16 public String getName() {17 return name;18 }19 public void setName(String name) {20 this.name = name;21 }22 public int getHeight() {23 return height;24 }25 public void setHeight(int height) {26 this.height = height;27 }28 29 30 }
hibernate的简易实现类 MySession ,代码如下
1 package com.hibernate.Exp150705; 2 3 import java.lang.reflect.Method; 4 import java.sql.Connection; 5 import java.sql.DriverManager; 6 import java.sql.PreparedStatement; 7 import java.util.HashMap; 8 import java.util.Map; 9 10 11 public class MySession {12 13 private String table = "children"; //表示需要插入数据的表14 Map<String,String> map = new HashMap<String,String>();//用于保存表列名与实体类属性 (列名,类属性)15 String [] mn;//children类方法名16 17 public MySession(){18 19 map.put("id", "id");20 map.put("name", "name");21 map.put("height", "height");22 23 mn = new String[map.size()];24 }25 26 public void save(Children child) throws Exception {27 // TODO Auto-generated method stub28 String sql = createSql(table);//创建插入语句29 System.out.println(sql);30 Class.forName("com.mysql.jdbc.Driver");31 Connection conn = DriverManager.getConnection("jdbc:mysql://localhost/hibernate","root","TAN19911104");32 PreparedStatement ps = (PreparedStatement) conn.prepareStatement(sql);33 for(int i = 0 ; i < mn.length ; i++){34 35 Method method = child.getClass().getMethod(mn[i]); //利用反射机制获取children类中的指定名称的方法36 String returnTypeName = method.getReturnType().getName();//获取该方法的返回值37 38 if(returnTypeName.equals("java.lang.String")){39 40 String returnValue = (String) method.invoke(child); //获取返回值41 ps.setString(i+1, returnValue);42 43 }44 45 if(returnTypeName.equals("int")){46 Integer returnValue = (Integer)method.invoke(child);47 ps.setInt(i+1, returnValue);48 }49 50 }51 52 ps.executeUpdate();53 ps.close();54 55 }56 57 private String createSql(String table) {58 // TODO Auto-generated method stub59 String str1 = "";60 int index = 0;61 for(String m : map.keySet()){//获取方法名并以getId()形式存入mn数组中62 63 mn[index] = "get"+ Character.toUpperCase(m.charAt(0)) + m.substring(1);64 str1 += m+",";65 index++;66 }67 str1 = str1.substring(0, str1.length()-1);68 69 String str2 = "";70 for(int i=0 ; i<map.size() ; i++){ //map.size() 即等于表属性个数71 str2+="?,";72 }73 str2 = str2.substring(0, str2.length()-1); //去掉末尾逗号74 75 String sql = "insert into "+table +"( " + str1 +" ) values ( " +str2 +" )";//insert into table (id,name....) values (?,?,?....)格式类型76 System.out.println(sql);77 return sql;78 79 }80 81 }
0 0
- hibernate初入门3--hibernate的简易实现
- 简易模拟Hibernate实现
- JavaEE--------> Hibernate入门 -->使用Hibernate实现数据的删改
- Hibernate --Hibernate的入门体验
- hibernate入门--实现简单的数据查询
- hibernate的入门实例
- hibernate框架的入门
- hibernate的入门
- Hibernate的基础入门
- 【1】Hibernate的入门
- hibernate的基础入门
- Hibernate的入门
- hibernate的入门学习
- Hibernate的入门
- hibernate的基础入门
- Hibernate的入门
- [hibernate的原理]简易说明(转贴)
- [hibernate的原理]简易说明(转贴)
- asp.net 学习之路之gridView控件之修改数据
- css3动画2种区分
- Redhat Linux RPM包安装软件及其管理
- 题目1195:最长&最短文本
- 软件安装/程序编译过程
- hibernate初入门3--hibernate的简易实现
- Linux下C语言调试(3)
- 一步步制作RPM包
- ice编译文件不能使用中文路径
- 使用CALayer或者drawRect方法来绘制自定义View
- linux下文件夹的创建、复制、剪切、重命名、清空和删除命令
- [leetCode] Power of Two
- java学习11--语句:for循环嵌套、转义字符的使用
- 机器学习 之 LDA主题模型