20160506-hibernate入门
public static void query(String name){
Session s=null;
try{
s=HibernateUntils.getSession();
String hql="from User as user where user.username=?";//from Object,查找的是对象
Query query=s.createQuery(hql);
query.setString(0, name);
List<User> list=query.list();
for(User user:list){
System.out.println(user.getBirthday());
}
}finally{
if(s!=null){
s.close();
}
}
}
/**
* 确定查询结果只有一条时
* @param name
*/
public static void uniqueQuery(String name){
Session s=null;
try{
s=HibernateUntils.getSession();
String hql="from User as user where user.username=?";//from Object,查找的是对象
Query query=s.createQuery(hql);
query.setString(0, name);
User u=(User) query.uniqueResult();
System.out.println(u.getBirthday());
}finally{
if(s!=null){
s.close();
}
}
}
/**
* 分页查询
* @param name
*/
public static void queryPage(String name){
Session s=null;
try{
s=HibernateUntils.getSession();
String hql="from User as user where user.username=:name";//from Object,查找的是对象
Query query=s.createQuery(hql);
query.setString("name", name);
query.setFirstResult(0);//第一条记录从哪一条开始去
query.setMaxResults(10);//取多少条
List<User> list=query.list();
for(User user:list){
System.out.println(user.getBirthday());
}
}finally{
if(s!=null){
s.close();
}
}
}
/**
* 条件查询
* @param name
*/
public static void cri(String name){
Session s=null;
try{
s=HibernateUntils.getSession();
Criteria c=s.createCriteria(User.class);
c.add(Restrictions.eq("username", name));//加入约束条件
List<User> list=c.list();
for(User user:list){
System.out.println(user.getBirthday());
}
}finally{
if(s!=null){
s.close();
}
}
}
小练习:
package com.dzq.domain; import java.io.Serializable;
import java.util.Date; public class User implements Serializable{
private int id;
private String username;
private String password;
private String mobile;
private Date regdate; 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 getPassword() {
return password;
} public void setPassword(String password) {
this.password = password;
} public String getMobile() {
return mobile;
} public void setMobile(String mobile) {
this.mobile = mobile;
} public Date getRegdate() {
return regdate;
} public void setRegdate(Date regdate) {
this.regdate = regdate;
} }
UserDao.java 接口
package com.dzq.dao; import com.dzq.domain.User; public interface UserDao { /**
* 添加用户
*
* @param user
*/
void addUser(User user); /**
* 修改用户
*
* @param user
*/
void updateUser(User user); /**
* 删除用户
*
* @param user
*/
void deleteUser(User user); /**
* 根据id查找用户
*
* @param id
*/
User findUserByID(int id); /**
* 根据id删除用户
*
* @param id
*/
void deleteUserByID(int id); /**
* 根据用户名查找用户
* @param username
*/
User findUserByUN(String username); }
User.hbm.xml 实体配置
<?xml version="1.0"?>
<!DOCTYPE hibernate-mapping PUBLIC
"-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
<hibernate-mapping package="com.dzq.domain"> <class name="User" table="user">
<id name="id" column="id">
<generator class="native" />
</id>
<property name="username" column="username" />
<property name="password" column="password" />
<property name="mobile" column="mobile" />
<property name="regdate" column="regdate"/>
</class> </hibernate-mapping>
hibernate.cfg.xml 全局配置文件
<!DOCTYPE hibernate-configuration PUBLIC
"-//Hibernate/Hibernate Configuration DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd"> <hibernate-configuration>
<session-factory>
<property name="hibernate.connection.driver_class">com.mysql.jdbc.Driver</property>
<property name="hibernate.connection.url">jdbc:mysql:///test1</property>
<property name="hibernate.connection.username">root</property>
<property name="hibernate.connection.password"></property>
<property name="hibernate.dialect">org.hibernate.dialect.MySQLDialect</property>
<property name="hibernate.show_sql">true</property>
<mapping resource="com/dzq/domain/User.hbm.xml"/>
</session-factory> </hibernate-configuration>
HibernateUtils.java 工具类
package com.dzq.utils; import java.io.Serializable; import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.Transaction;
import org.hibernate.cfg.Configuration; public class HibernateUntils {
private static SessionFactory sessionFactory; private HibernateUntils() { } static {
Configuration cfg = new Configuration();
cfg.configure();//如果不是hibernate.cfg.xml这个文件名,需要加上文件名
sessionFactory = cfg.buildSessionFactory();
}
public static SessionFactory getSessionFactory(){
return sessionFactory;
}
public static Session getSession(){
return sessionFactory.openSession();
} /**
* 添加
* @param entity
*/
public static void add(Object entity) {
Session s = null;
Transaction tx = null;
try {
s = HibernateUntils.getSession();
tx = s.beginTransaction();
s.save(entity);
tx.commit();
} catch (Exception e) {
if (tx != null)
tx.rollback();
throw new RuntimeException(e);
} finally {
if (s != null) {
s.close();
}
}
}
/**
* 修改
* @param entity
*/
public static void update(Object entity) {
Session s = null;
Transaction tx = null;
try {
s = HibernateUntils.getSession();
tx = s.beginTransaction();
s.update(entity);
tx.commit();
} catch (Exception e) {
if (tx != null)
tx.rollback();
throw new RuntimeException(e);
} finally {
if (s != null) {
s.close();
}
}
} /**
* 删除
* @param entity
*/
public static void delete(Object entity) {
Session s = null;
Transaction tx = null;
try {
s = HibernateUntils.getSession();
tx = s.beginTransaction();
s.delete(entity);
tx.commit();
} catch (Exception e) {
if (tx != null)
tx.rollback();
throw new RuntimeException(e);
} finally {
if (s != null) {
s.close();
}
}
} /**
* 根据主键id查询
* @param clazz
* @param id
* @return
*/
public static Object get(Class clazz,Serializable id) {
Session s = null;
try {
s = HibernateUntils.getSession();
Object obj=s.get(clazz, id);
return obj;
} finally {
if (s != null) {
s.close();
}
}
}
}
UserDaoImpl.java 接口实现
package com.dzq.dao.impl; import org.hibernate.Query;
import org.hibernate.Session;
import org.hibernate.Transaction; import com.dzq.dao.UserDao;
import com.dzq.domain.User;
import com.dzq.utils.HibernateUntils; public class UserDaoImpl implements UserDao { @Override
public void addUser(User user) {
HibernateUntils.add(user);
} @Override
public void updateUser(User user) {
HibernateUntils.update(user);
} @Override
public void deleteUser(User user) {
HibernateUntils.delete(user);
} @Override
public User findUserByID(int id) {
return (User) HibernateUntils.get(User.class, id);
} @Override
public void deleteUserByID(int id) {
Session s = null;
Transaction tx = null;
try {
s = HibernateUntils.getSession();
tx = s.beginTransaction();
String hql="delete User user where user.id=:id";
Query query=s.createQuery(hql);
query.setInteger("id", id);
query.executeUpdate();
tx.commit();
} catch (Exception e) {
if (tx != null)
tx.rollback();
throw new RuntimeException(e);
} finally {
if (s != null) {
s.close();
}
}
} @Override
public User findUserByUN(String username) {
Session s=null;
try{
s=HibernateUntils.getSession();
String hql="from User as user where user.username=:username";//from Object,查找的是对象
Query query=s.createQuery(hql);
query.setString("username", username);
User user=(User) query.uniqueResult();
return user;
}finally{
if(s!=null){
s.close();
}
}
} }
ProjectTest.java 下面为junit测试
package com.dzq.test; import java.util.Date; import org.junit.Test; import com.dzq.dao.impl.UserDaoImpl;
import com.dzq.domain.User; public class ProjectTest {
@Test
public void testAdd() {
UserDaoImpl dao = new UserDaoImpl();
User user = new User();
user.setUsername("xiaodu");
user.setPassword("hello");
user.setRegdate(new Date());
user.setMobile("15820090820");
dao.addUser(user);
} @Test
public void testUpdate() {
UserDaoImpl dao = new UserDaoImpl();
User user = new User();
user = dao.findUserByID(2);
user.setUsername("xiaohong");
dao.updateUser(user);
} @Test
public void testDelete(){
UserDaoImpl dao = new UserDaoImpl();
User user = new User();
user = dao.findUserByID(3);
dao.deleteUser(user);
}
@Test
public void testFindUser(){
UserDaoImpl dao = new UserDaoImpl();
User user = new User();
user=dao.findUserByUN("xiaohong");
System.out.println(user.getRegdate());
}
@Test
public void testDeleteByID(){
UserDaoImpl dao = new UserDaoImpl();
dao.deleteUserByID(2);
} }
20160506-hibernate入门的更多相关文章
- 三大框架之hibernate入门
hibernate入门 1.orm hibernate是一个经典的开源的orm[数据访问中间件]框架 ORM( Object Relation Mapping)对象关 ...
- Hibernate入门案例及增删改查
一.Hibernate入门案例剖析: ①创建实体类Student 并重写toString方法 public class Student { private Integer sid; private I ...
- Hibernate入门案例 增删改
一.Hibernate入门案例剖析: ①创建实体类Student 并重写toString方法 public class Student { private Integer sid; private I ...
- Hibernate入门6.Hibernate检索方式
Hibernate入门6.Hibernate检索方式 20131128 代码下载 链接: http://pan.baidu.com/s/1Ccuup 密码: vqlv Hibernate的整体框架已经 ...
- Hibernate入门5持久化对象关系和批量处理技术
Hibernate入门5持久化对象关系和批量处理技术 20131128 代码下载 链接: http://pan.baidu.com/s/1Ccuup 密码: vqlv 前言: 前面学习了Hiberna ...
- Hibernate入门4.核心技能
Hibernate入门4.核心技能 20131128 代码下载 链接: http://pan.baidu.com/s/1Ccuup 密码: vqlv 前言: 前面学习了Hibernate3的基本知识, ...
- Hibernate入门3.配置映射文件深入
Hibernate入门3.配置映射文件深入 2013.11.27 前言: 之前的两节是在Java项目中如何使用hibernate,并且通过一个简单地项目实践,期间有很多的错误,一般都是因为配置包的问题 ...
- 简单的Hibernate入门简介
其实Hibernate本身是个独立的框架,它不需要任何web server或application server的支持.然而,大多数的Hibernate入门介绍都加入了很多非Hibernate的东西, ...
- Hibernate入门(1)-第一个Hibernate程序
Hibernate入门(1)-第一个Hibernate程序 Hibernate是最著名的ORM工具之一,本系列文章主要学习Hibernate的用法,不涉及Hibernate的原理.本文介绍第一个Hib ...
- hibernate入门之person表
下面的hibernate入门person表指的是:根据mysql数据库中的test表和其中的元素-->建立映射表==>进而创建持久化类的顺序来操作了,下面为步骤 1.配置MySQL驱动程序 ...
随机推荐
- Java for循环的几种用法详解
本文非常适合初学Java的程序员,主要是来了解一下Java中的几种for循环用法,分析得十分详细,一起来看看. J2SE 1.5提供了另一种形式的for循环.借助这种形式的for循环,可以用更简单地方 ...
- 现代程序设计——homework-01
1.我的GitHub用户 首先,接触到现代程序设计这门课之后我才正式开始使用GitHub和它的客户端,以前都是去网站看代码.扒样例.我注册的账户名为:hennande.目前该账户中有我的第一份关于ho ...
- VisualStudio2010中创建ASP.Net WebService
相关资料:http://blog.csdn.net/yapingxin/article/details/7331375 具体操作:1.打开“Microsoft Visual Studio 2010”- ...
- [OC Foundation框架 - 7] NSArray的创建与遍历
NSArray是不可变的,不能先创建再添加元素 NSArray可以放入任何OC对象,但不能放入基本数据类型.结构体.枚举等非OC对象 不能存储nil A.常用方法1 创建 返回用量 是否含有某元素 ...
- uml 在需求分析阶段的应用
上一篇博客写了uml在软件开发过程中的应用,这以篇要详细介绍一下UML在需求分析过程中的应用. 以机房收费系统为例进行讲解,先介绍一个该系统. 首先该系统的用户分为三个等级,一般用户,操作员,管理员, ...
- Python中如何把一个UTC时间转换为本地时间
需求: 将20141126010101格式UTC时间转换为本地时间. 在网上搜了好长时间都没有找到完美的解决方案.有的引用了第三方库,这就需要在现网安装第三方的软件.这个是万万不可的.因为真实环境不一 ...
- CentOS6.5配置MySQL主从同步
原文地址:http://www.cnblogs.com/zhongshengzhen/ 修改主MySQL的配置 [root@localhost etc] vi /etc/my.cnf 添加以下配置 ...
- httpClient模拟浏览器发请求
一.介绍 httpClient是Apache公司的一个子项目, 用来提高高效的.最新的.功能丰富的支持http协议的客户端编程工具包.完成可以模拟浏览器发起请求行为. 二.简单使用例子 : 模拟浏览器 ...
- Gitbook 使用入门
GitBook 是一个基于 Node.js 的命令行工具,可使用 Github/Git 和 Markdown 来制作精美的电子书. 本书将简单介绍如何安装.编写.生成.发布一本在线图书. http:/ ...
- 提高你的Java代码质量吧:少用静态导入
一.分析 从Java 5开始引入静态导入语法(import static),其目的是为了减少字符输入量,提高代码的可阅读性,以便更好地理解程序. 但是,滥用静态导入会使程序更难阅读,更难维护.静态导 ...