Hibernate七部曲(二)简单的增删改查
来源:互联网 发布:振动数据采集器 编辑:程序博客网 时间:2024/06/07 07:00
hibernate是将实体类与数据库对应起来的一种orm技术,它可以使我们更专注与对实体类对象的操作,对数据库只需要简单了解就可以了(但实际开发中不推荐只简单了解,哈哈)。
本文涉及到的hibernate的jar包下载地址:http://download.csdn.net/detail/marvel__dead/9777642,另外我还手动加入了junit的jar包进行测试,这个eclipse可自动添加
项目结构如图:
那么首先我们得建立一个实体类对象User.java
package cn.com.lt.entity;public class User { private int id; private String username; private String password; 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; }}
配置hibernate.cfg.xml
<?xml version='1.0' encoding='utf-8'?><!DOCTYPE hibernate-configuration PUBLIC "-//Hibernate/Hibernate Configuration DTD 3.0//EN" "http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd"><hibernate-configuration> <session-factory> <!-- Database connection settings --> <!-- 表示使用 oracle 数据库驱动类 下面都是我的相应的数据库信息,你可以改成你的--> <property name="connection.driver_class">oracle.jdbc.OracleDriver</property> <!-- jdbc 的连接 url 和数据库(使用我们之前新建的 hibernate)--> <property name="connection.url">jdbc:oracle:thin:@172.18.1.252:1521:ora9is</property> <!-- 数据库用户名 --> <property name="connection.username">test</property> <!-- 密码(这里为空) --> <property name="connection.password">test</property> <!-- 数据库使用的方言 --> <property name="dialect">org.hibernate.dialect.MySQLDialect</property> <!-- Echo all executed SQL to stdout --> <!-- 设置 控制台输出 sql 语句 为真 --> <property name="show_sql">true</property> <!-- 设置格式为 sql --> <property name="format_sql">true</property> <!-- 第一次加载 hibernate 时根据实体类自动建立表结构,以后自动更新表结构 --> <property name="hbm2ddl.auto">update</property> <!-- 映射文件 --> <mapping resource="cn/com/lt/entity/User.hbm.xml"/> </session-factory></hibernate-configuration>
将实体类映射到数据库中,配置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"><!-- 映射对应的 package --><hibernate-mapping package="cn.com.lt.entity"> <!-- class 和数据库中 table 对应(如果没有这个表则新建) --> <class name="User" table="user_table_new"> <!-- id 主键,设为自增 --> <id name="id" column="user_id"> </id> <property name="username" column="user_username"></property> <property name="password" column="user_password"></property> </class></hibernate-mapping>
ok,主要就这三个就完成了hibernate的功能了,来测试一下:
package cn.com.lt.test;import java.util.List;import org.hibernate.Query;import org.hibernate.Session;import org.hibernate.SessionFactory;import org.hibernate.cfg.Configuration;import org.junit.Test;import cn.com.lt.entity.User;public class TestHibernate { private static Configuration cfg = new Configuration().configure(); @SuppressWarnings("deprecation") private static SessionFactory sf = cfg.buildSessionFactory(); private static Session session = sf.openSession(); User user = new User(); @Test public void testAdd(){ //开启事务 session.beginTransaction(); user.setId(1); user.setUsername("Javaer"); user.setPassword("520"); session.save(user); session.getTransaction().commit(); session.close(); sf.close(); } @Test public void testSelect(){ session.beginTransaction(); //用StringBuilder连接查询语句 StringBuilder hql = new StringBuilder(); // 从 User 里面查找(注意 from 后有空格) // 相当于 "select * from user_info;" hql.append("from ").append( User.class.getName() ); //利用session建立query Query query = session.createQuery(hql.toString()); // 序列化 query 的结果为一个 list 集合 List<User> users = query.list(); // 打印每一个 User 信息(这里只打印了名字,你也可以打印其他信息) for (User user : users) { System.out.println( user.getUsername() ); } session.getTransaction().commit(); session.close(); sf.close(); } //改,思路就是根据条件查询出来后,再去对实体类重新赋值然后update到数据库 @Test public void testUpdate(){ session.beginTransaction(); StringBuilder hq = new StringBuilder(); // 对比查找的操作来看,因为我们需要修改指定 name 的用户密码,后面需要再添加查询条件 // 注意 from、where 的空格,":name" 表示一个参数 hq.append("from ").append(User.class.getName()).append(" where user_username=:name"); Query query = session.createQuery(hq.toString()); // 这里就设定参数 name 的值为"user1" query.setString("name","Javaer" ); List<User> users = query.list(); for (User user : users) { // 修改 user1 的密码 user.setPassword("520java"); // 注意这里是 update session.update(user); } session.getTransaction().commit(); session.close(); sf.close(); } //删,思路和改差不多 @Test public void testDelete(){ session.beginTransaction(); StringBuilder hq = new StringBuilder(); // 对比查找时候的操作来看,因为我们需要修改指定 name 的用户密码,后面需要再添加查询条件 // 注意 from、where 的空格,":name" 表示一个参数 hq.append("from ").append(User.class.getName()).append(" where user_username=:name"); Query query = session.createQuery(hq.toString()); // 这里就设定参数 name 的值为"user1" query.setString("name","Javaer" ); List<User> users = query.list(); for (User user : users) { // 注意这里是 delete session.delete(user); } session.getTransaction().commit(); session.close(); sf.close(); }}
增加,控制台输出结果:
查询,控制台输出结果:
更新,控制台输出结果:
删除,控制台输出结果:
“`
0 0
- Hibernate七部曲(二)简单的增删改查
- Hibernate 简单的增删改查 示例
- Hibernate的简单增删改查例子
- Hibernate实现简单的增删改查
- Hibernate 简单 的 增删改查 实例
- Hibernate简单增删改查
- Hibernate简单增删改查
- Springboot基础篇(二) 简单的增删改查
- 【Hibernate】Hibernate入门2-简单的增删改查源码
- Hibernate的增删改查
- Hibernate的增删改查
- Hibernate的增删查改
- Hibernate的增删改查
- Hibernate 的增删改查
- Hibernate的增删改查
- hibernate的增删改查
- Hibernate的增删改查
- Hibernate的增删改查
- js的call和this指向系列
- Application uses Wi-Fi
- Rikka with Sequence II
- eclipse Java项目转化成web项目
- QT 5.8 Raspbian 移植
- Hibernate七部曲(二)简单的增删改查
- JavaScript事件
- 【MySQL】MySQL学习之-设计高性能SQL语句需要注意事项
- Myesclipse 2017ci3版Tomcat配置方式
- 读书笔记 《算法导论》 C15
- 自适应模糊阈值分割
- while 循环读入txt出现的跳读问题
- Linux的进程/线程间通信方式总结
- 关于windows新版Chrome无法正常使用第三方扩展程序的解决方案