Hibernate通过createSQLQuery( )方法实现增删改查
Hibernate通过createSQLQuery( )方法实现增删改查
Hibernate的三种实现方式之一:createSQLQuery( )
一、项目结构
二、hibernate核心配置文件: hibernate.cfg.xml
- <?xml version="1.0" encoding="UTF-8"?>
- <!DOCTYPE hibernate-configuration PUBLIC
- "-//Hibernate/Hibernate Configuration DTD 3.0//EN"
- "http://www.hibernate.org/dtd/hibernate-configuration-3.0.dtd">
- <!-- 配置hibernate核心配置文件 -->
- <hibernate-configuration>
- <!-- 配置hibernate数据源连接 -->
- <session-factory>
- <property name="hibernate.connection.driver_class">oracle.jdbc.driver.OracleDriver</property>
- <property name="hibernate.connection.url">jdbc:oracle:thin:@localhost:1521:orcl</property>
- <property name="hibernate.connection.username">wzf</property>
- <property name="hibernate.connection.password">1234</property>
- <!-- 配置数据库方言 -->
- <property name="hibernate.dialect">org.hibernate.dialect.Oracle10gDialect</property>
- <!-- 配置sql打印、格式化 -->
- <property name="hibernate.show_sql">true</property>
- <property name="hibernate.format_sql">true</property>
- <!-- 配置hibernate映射文件位置 -->
- <mapping resource="com/gomai/pojo/student.hbm.xml"/>
- </session-factory>
- </hibernate-configuration>
三、hrbernate的映射文件
- <?xml version="1.0" encoding="UTF-8"?>
- <!DOCTYPE hibernate-mapping PUBLIC
- "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
- "http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd">
- <!-- 配置hibernate映射文件 -->
- <hibernate-mapping>
- <class name="com.gomai.pojo.Student" table="student">
- <!-- 配置主键生成策略 -->
- <id name="student_id" column="STUID">
- <generator class="sequence">
- <param name="sequence">SQ_STUDENT</param>
- </generator>
- </id>
- <!-- 配置表与属性 -->
- <property name="student_name" column="stuname"></property>
- <property name="student_age" column="stuage"></property>
- <property name="student_sex" column="stusex"></property>
- <property name="student_no" column="stuno"></property>
- </class>
- </hibernate-mapping>
四、测试类(该类包括增删改查四个方法的实现,下面依次介绍)
新增:
- /**
- * 添加:通过序列生成主键自增
- */
- @Test
- public void insertStu(){
- Configuration configure = new Configuration().configure("hibernate.cfg.xml");
- SessionFactory sessionFactory = configure.buildSessionFactory();
- Session session = sessionFactory.openSession();
- //开启事务
- Transaction tr = session.beginTransaction();
- int i = session.createSQLQuery("insert into student values(SQ_STUDENT.nextval,?,?,?,?)")
- .setParameter(0, 2)
- .setParameter(1, "露娜")
- .setParameter(2, 23)
- .setParameter(3, "女")
- .setParameter(4, 1003)
- .executeUpdate();
- System.out.println(i);
- try {
- tr.commit();
- } catch (HibernateException e) {
- tr.rollback();
- e.printStackTrace();
- }finally{
- session.close();
- }
- }
删除:
- /**
- * 删除
- */
- @Test
- public void deleteStu(){
- Configuration configure = new Configuration().configure("hibernate.cfg.xml");
- SessionFactory sessionFactory = configure.buildSessionFactory();
- Session session = sessionFactory.openSession();
- //开启事务
- Transaction tr = session.beginTransaction();
- int i = session.createSQLQuery("delete from student where stuid = ?")
- .setParameter(0, 100)
- .executeUpdate();
- System.out.println("TestSQL.deleteStu()" + i);
- //事务回滚、关流
- try {
- tr.commit();
- } catch (Exception e) {
- tr.rollback();
- e.printStackTrace();
- }finally{
- session.close();
- }
- }
更新:
- /**
- * 更新
- */
- @Test
- public void updateStu(){
- Configuration configure = new Configuration().configure("hibernate.cfg.xml");
- SessionFactory sessionFactory = configure.buildSessionFactory();
- Session session = sessionFactory.openSession();
- Transaction tr = session.beginTransaction();
- int i = session.createSQLQuery("update student set stuname = ?,stusex = ? where stuid = ? ")
- .setParameter(0, "公孙离")
- .setParameter(1, "女")
- .setParameter(2, 9)
- .executeUpdate();
- System.out.println(i);
- //事务回滚、关流
- try {
- tr.commit();
- } catch (Exception e) {
- tr.rollback();
- e.printStackTrace();
- }finally{
- session.close();
- }
- }
查询:
- /**
- * 查询
- */
- @Test
- public void searchStu(){
- Configuration configure = new Configuration().configure("hibernate.cfg.xml");
- SessionFactory sessionFactory = configure.buildSessionFactory();
- Session session = sessionFactory.openSession();
- List<Student> list = session.createSQLQuery("select * from student")
- <span style="color:#FF0000;">.addEntity(Student.class)</span>
- .list();
- for (Student student : list) {
- System.out.println(student);
- }
- session.close();
- }
好了,以上就是hibernate中通过createSQLQuery( )方法实现增删改查,本人目前刚开始接触hibernate,为了学习所以才记录到博客中。说的不对的地方麻烦各位朋友指出。
低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
- 上一篇
如何使用区块链开发一个落地项目?这位实战大牛手把手教会你
区块链是目前一个比较热门的新概念,蕴含了技术与金融两层概念。本文以联盟链为例,简单描述了实践一个联盟链的基本过程。 作者 |陈浩,维优区块链CTO 首先要确定这个区块链的类型,是公证型区块链还是价值型? 公证型区块链是指仅限一些关键数据自证、披露、防篡改等功能的区块链,通常是在价值型区块链中附带的功能,也可以单独扩展,用于公示公开等。价值型区块链是指可以进行资产所有权转移的一种记账账本。 如果确定是价值型区块链,我们又需要确定目标区块链的总体定位:到底是一个普适的价值传输区块链,还是特定场景下的区块链?如果是特定场景下的区块链,我们通常推荐超级账本作为技术原型,如果是比较通用的价值区块链,我们推荐以太坊的思路。 业务场景的构建与初步分析 首先要明确的观点是,区块链不是万能的。很多场景其实是不需要区块链技术也能解决的。像跨境支付领域,区块链能很
- 下一篇
C# defualt关键字默认值用法
原文: C# defualt关键字默认值用法 默认值表达式生成类型的默认值。默认值表达式在泛型类和泛型方法中非常有用。使用泛型类和泛型方法时出现的一个问题是,如何在无法提前知道以下内容的情况下将默认值赋值给参数化类型T: T是引用类型还是值类型。 如果T是值类型,它是数值还是用户定义的结构。 已知参数化类型T的变量t,仅当T为引用类型时,语句t = null才有效。赋值t = 0仅对数值类型有效,对结构无效。解决方案是使用默认值表达式,该表达式对引用类型(类类型和接口类型)返回null,对数值类型返回零。对于用户定义的结构,返回初始化为零位模式的结构,该结构根据成员是值还是引用类型,为每个成员生成 0 或null。对于可为 NULL 的值类型,default返回像任何结构一样初始化的System.Nullable<T>。 default(T)表达式不限于泛型类和泛型方法。默认值表达式可用于任何托管类型 以上内容来自MSDN。 示例代码: int iValue = default(int); float fValue = default(float); decimal dV...
相关文章
文章评论
共有0条评论来说两句吧...
文章二维码
点击排行
推荐阅读
最新文章
- Springboot2将连接池hikari替换为druid,体验最强大的数据库连接池
- CentOS7编译安装Cmake3.16.3,解决mysql等软件编译问题
- SpringBoot2整合Thymeleaf,官方推荐html解决方案
- Docker快速安装Oracle11G,搭建oracle11g学习环境
- CentOS7,8上快速安装Gitea,搭建Git服务器
- CentOS8编译安装MySQL8.0.19
- SpringBoot2全家桶,快速入门学习开发网站教程
- Hadoop3单机部署,实现最简伪集群
- Docker安装Oracle12C,快速搭建Oracle学习环境
- CentOS7,CentOS8安装Elasticsearch6.8.6