Hibernate搭建成功!(源码)
虽然两天还不会连接数据库,昨就把那么帅的东西搞出来了。
感觉很爽,Java真的很好,很强大。我学习Java才一个月左右,我还有许多需要学习的。
这次发的这个框架是Hibernate连接mysql。(所有代码均实际运行)
搭建环境:MyEclipse
下面是操作步骤:
1.在mysql中建立一个名为person的表。
表中数据:id varchar(32) no null primary key;
name varchar(30) no null;
password varchar(30) no null;
sex varchar(2);
email varchar(30);
2.打开MyEclipse,从菜单中选择窗口,选择首选项,选择数据库浏览器。
3.配置数据库驱动(mysql-connector-java-5.1.6-bin.jar)。
4.新建一个webproject,命名为HMWebproject,加入Add Hibernate Capabilities...,选择Hibernate3,Next---Finish
5. 选菜单的窗口,选择显示视图,选择其它,选MyEclipse中的DB Browser。点确定。从新窗口中选择New,连接数据库MySQL。
6.把数据库驱动放入此路径(例)D:\java\work\HMWebproject\WebRoot\WEB-INF\lib中,刷新列表,可以显示出新加入的包。
7.src下新建一个类(POJO类):包名为org.lxh.hibernate.demo,命名为Person,写入代码,最终显示如下:
package org.lxh.hibernate.demo;
//POJO类
public class Person {
private String id;
private String name;
private String password;
private String sex;
private String email;
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
public String getSex() {
return sex;
}
public void setSex(String sex) {
this.sex = sex;
}
public String getEmail() {
return email;
}
public void setEmail(String email) {
this.email = email;
}
}
8.建立映射文件:点表person右键,选择Create Hibernate Mapping,创建在包org.lxh.hibernate.demo下,主键生成方式:assigned,完成。
9.修改映射文件:代码最终为--->
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
<!--
Mapping file autogenerated by MyEclipse Persistence Tools
-->
<hibernate-mapping>
<class name="org.lxh.hibernate.demo.Person" table="person" catalog="scutcs">
<id name="id" type="java.lang.String">
<column name="id" length="32" />
<generator class="assigned" />
</id>
<property name="name" type="java.lang.String">
<column name="name" length="20" not-null="true" />
</property>
<property name="password" type="java.lang.String">
<column name="password" length="20" not-null="true" />
</property>
<property name="sex" type="java.lang.String">
<column name="sex" length="2" />
</property>
<property name="email" type="java.lang.String">
<column name="email" length="30" />
</property>
</class>
</hibernate-mapping>
9.在src下新建一个类:命名为PersonOperate,最终代码为----->
package org.lxh.hibernate.demo;
import java.util.List;
import org.hibernate.Query;
import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.Transaction;
import org.hibernate.cfg.Configuration;
/*
* 具体操作Hibernate的类
* 增删改,按ID查询,模糊查询,查询全部
*/
public class PersonOperate {
//Hibernate中所有操作都通过Session完成
//此Session不同于JSP的Session
private Session session=null;
//构造方法中实现实例化Session对象
public PersonOperate()
{
Configuration config=new Configuration().configure();
//从配置中取得SessionFactory
SessionFactory factory=config.buildSessionFactory();
//SessionFactroy中取出一个Session
this.session=factory.openSession();
}
//所有的操作都是通过Session进行的
//向数据库中增加数据
public void insert(Person p)
{
//开始事务
Transaction tran =this.session.beginTransaction();
//执行语句
this.session.save(p);
//提交事务
tran.commit();
//关闭Session
this.session.close();
}
//修改
public void update(Person p)
{
//开始事务
Transaction tran =this.session.beginTransaction();
//执行语句
this.session.update(p);
//提交事务
tran.commit();
this.session.close();
}
//按ID查询:推荐使用HQL
public Person queryById(String id)
{
Person p=null;
//使用Hibernate查询语言
String hql="FROM Person as p WHERE p.id=?";
//通过Query接口查询
Query q=this.session.createQuery(hql);
q.setString(0, id);
List l=q.list();
java.util.Iterator iter= l.iterator();
if(iter.hasNext())
{
p=(Person)iter.next();
}
return p;
}
//删除数据
//Hibernate2,Hibernate3通用的删除
//使用此方法删除数据之前,必须先查找到数据对象
public void delete(Person p)
{
Transaction tran=this.session.beginTransaction();
//执行语句
this.session.delete(p);
//提交事务
tran.commit();
this.session.close();
}
//在Hibernate 3之中根据HQL中的语句进行了修改,增加了删除指令
public void delete(String id)
{
String hql="DELETE Person WHERE id=?";
Query q=this.session.createQuery(hql);
//把参数设置
q.setString(0, id);
//执行更新语句
q.executeUpdate();
//进行事务处理
this.session.beginTransaction().commit();
this.session.close();
}
//查询全部数据,写HQL
public List queryAll()
{
List l=null;
String hql="FROM Person as p";
Query q =this.session.createQuery(hql);
l=q.list();
return l;
}
//模糊查询
public List queryByLike(String cond)
{
List l=null;
String hql="FROM Person as p WHERE p.name like?";
Query q =this.session.createQuery(hql);
q.setString(0, "%"+cond+"%");
l=q.list();
return l;
}
}
10.在src下新建插入类:命名为:TestPU
新建更新类:命名为:TestPO
新建删除类:命名为:TestPD
新建HQL删除类:命名为:TestPD2
新建按ID查询类:命名为:TestPI
新建查询全部类:命名为:TestPK
新建模糊查询类:命名为:TestPM
最终各类代码为----->
TestPU.java
package org.lxh.hibernate.demo;
public class TestPU {
/**
* @param args
*/
public static void main(String[] args) {
// TODO 自动生成方法存根
//生成POJO类实例化对象
Person p=new Person();
p.setId("SNNN");
p.setName("shiyangxt");
p.setPassword("shiyang");
p.setSex("女");
p.setEmail("shiyangxt@126.com");
PersonOperate po=new PersonOperate();
po.insert(p);
}
}
TestPO.java
package org.lxh.hibernate.demo;
public class TestPO {
/**
* @param args
*/
public static void main(String[] args) {
// TODO 自动生成方法存根
//生成POJO类实例化对象
Person p=new Person();
p.setId("NNNN");
p.setName("shiyangxt");
p.setPassword("shiyang");
p.setSex("女");
p.setEmail("shiyangxt@126.com");
PersonOperate po=new PersonOperate();
po.update(p);
}
}
TestPD.java
package org.lxh.hibernate.demo;
public class TestPD {
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
PersonOperate po=new PersonOperate();
Person p=po.queryById("NNNN");
po.delete(p);
}
}
TestPD2.java
package org.lxh.hibernate.demo;
public class TestPD2 {
/**
* @param args
*/
public static void main(String[] args) {
// TODO 自动生成方法存根
//生成POJO类实例化对象
PersonOperate po=new PersonOperate();
po.delete("SNNN");
}
}
TestPI.java
package org.lxh.hibernate.demo;
public class TestPI {
/**
* @param args
*/
public static void main(String[] args) {
// TODO 自动生成方法存根
//生成POJO类实例化对象
PersonOperate po=new PersonOperate();
Person p=po.queryById("NNNN");
System.out.println(p.getName());
}
}
TestPK.java
package org.lxh.hibernate.demo;
import java.util.Iterator;
import java.util.List;
public class TestPK {
/**
* @param args
*/
public static void main(String[] args) {
// TODO 自动生成方法存根
//生成POJO类实例化对象
PersonOperate po=new PersonOperate();
List l=po.queryAll();
Iterator iter= (Iterator) l.iterator();
while(iter.hasNext())
{
Person p = (Person)iter.next();
System.out.println(p.getName());
}
}
}
TestPM.java
package org.lxh.hibernate.demo;
import java.util.Iterator;
import java.util.List;
public class TestPM {
/**
* @param args
*/
public static void main(String[] args) {
// TODO 自动生成方法存根
//生成POJO类实例化对象
PersonOperate po=new PersonOperate();
List l=po.queryByLike("s");
Iterator iter= (Iterator) l.iterator();
while(iter.hasNext())
{
Person p = (Person)iter.next();
System.out.println(p.getName());
}
}
}
11.搭建完成!!!
施杨出品!!!
Hibernate搭建成功!(源码)相关推荐
- LNMP架构搭建(源码编译)
1. LNMP架构介绍 LNMP代表的就是:Linux系统下Nginx+MySQL+PHP这种网站服务器架构. Linux是一类Unix计算机操作系统的统称,是目前最流行的免费操作系统.代表版本有:d ...
- 《在(虚拟机)ubuntu16.04上进行openwrt环境搭建及源码下载》
广西·河池学院 广西高校重点实验室培训基地 系统控制与信息处理重点实验室 本篇博客来之河池学院:OpenWrt无线路由组 写作时间: 2020年7月30日21:00:51 <在(虚拟机)ubun ...
- Hibernate使用及源码分析(一)
Hibernate使用及源码分析(一) 本篇文章主要通过hibernate初级使用分析一下源码,只是给初学者一点小小的建议,不喜勿喷,谢谢! hibernate环境搭建 简单使用 源码走读 一 hib ...
- 搭建直播源码与软件开发的注意事项
在这个直播行业飞速发展的时代,很多公会会长在掌握了一定的主播资源后,都希望能搭建自己的直播平台,实现利益最大化,但网上打广告的技术公司太多,源码质量却良莠不齐,那么该如何搭建直播源码就成了问题. 直播 ...
- Ubuntu18.04搭建Android源码编译环境
一.前言 使用Ubuntu18.04搭建Android源码的编译,本文是参考Android系统源码编译文章撰写的. 二.步骤 1.下载Android源码.Ubuntu环境搭建.git安装请参考其他文章 ...
- 搭建直播源码与软件开发的注意事项 1
在这个直播行业飞速发展的时代,很多公会会长在掌握了一定的主播资源后,都希望能搭建自己的直播平台,实现利益最大化,但网上打广告的技术公司太多,源码质量却良莠不齐,那么该如何搭建直播源码就成了问题. 直播 ...
- 本地搭建Spring源码环境
本地搭建Spring源码环境 一.安装gradle 第一种方式 第二种方式 二.下载Spring源码 一.下载地址 二.导入idea 三.配置idea 四.新建测试工程 三.最后 附:git地址 声明 ...
- 仙侠手游源码《一剑问情》完整云服务器搭建过程-源码带GM后台+视频教程加文字教程
仙侠手游源码<一剑问情>完整云服务器搭建过程-源码带GM后台+视频教程加文字教程 下载地址:https://www.ldmzy.com/467/ 本人测试用的云服务器2核4G内存 1M 带 ...
- Gitolite + repo 搭建安卓源码开发环境
Gitolite + repo 搭建安卓源码开发环境 转载请注明出处:http://blog.csdn.net/u011479494/article/details/50629669 相比gitosi ...
- 【深入浅出 Yarn 架构与实现】1-2 搭建 Hadoop 源码阅读环境
本文将介绍如何使用 idea 搭建 Hadoop 源码阅读环境.(默认已安装好 Java.Maven 环境) 一.搭建源码阅读环境 一)idea 导入 hadoop 工程 从 github 上拉取代码 ...
最新文章
- 在64位的环境中使用VS建立Web项目进行Oracle连接需要注意WebDev是32位的
- java awt 监视器_java – 停止所有Awt / Swing线程和监视器和东...
- connect time out 获取token失败_Power Query之获取钉钉日志自动刷新Power BI报告
- CentOS linux7 设置开机启动服务
- 20175305张天钰 《java程序设计》第四周课下测试总结
- 将M进制的数转换为N进制的数(java)
- python中sorted函数的作用_Python中排序方法sort、函数sorted的key参数的作用分析
- Marching Cubes
- [翻译]用表单字段加亮的方式为用户提供友好的界面
- Vue2系列教程——vue-pdf插件
- PCIe5.0 协议
- 工业控制系统的体系架构
- python改变图片透明度_Python PIL.Image之修改图片背景为透明
- Keil 保护视力背景颜色设置和代码的颜色设置
- 十万个为什么哪个版本适合小学生阅读
- 2022年 HSC-1th中MISC的汝闻,人言否
- Eclipse WTP
- 11 Animation动画
- 基于JAVA的游戏补丁共享网站实现
- 笔记本电脑能连接WiFi但浏览器无法打开网页的解决办法
热门文章
- C#程序输出信息到调试窗口的几种方式
- (转)Fur Shader
- Fusioncharts图表组件API参考方法(Functions)汇总篇(续)
- 多行文本框限制输入字符长度(两种方法)
- 用枚举来处理java自定义异常
- Jenkins报错‘Gradle build daemon disappeared unexpectedly‘的问题解决
- android 获取视频缩略图终极解决方案(ffmpeg)
- Mac休眠后解决卡死转圈问题
- 解决vue中对象属性改变视图不更新的问题
- 如何使用JavaScript替换字符串中的所有点