初学者易上手的SSH,Spring的连接数据库以及JDBC模板

Spring03、Spring的连接数据库以及JDBC模板,spring03jdbc

本人是SUSE10.3新手,今天才弄了一个
EVGA e-GeForce 6200LE 256MB,于是想在suse10.3
下实验一下3D效果。在网上查找了一下,好像没有找到。有个ATI的很麻烦,当然,好像ATI的本来就麻烦。因为从这里看到很多东西,也想贡献一点。不过不知道是不是因为Nvidia太简单了,大家都知道。所以没有帖子专门说这个东西,如果这样就当我是火星人好了。

初学者易上手的SSH-hibernate02 三种查询方式,

在上一章中已经搭建好了一个hibernate的环境,那么这一章我们就使用这个环境来进行基本CRUD。在这之前我们先了解一个东西:主键生成策略。就是当向数据库表中插入记录的时候,这个记录的主键该如何生成.用法:将hbm.xml文件中<id>节点下的
<generator/>节点中的class
改成以下关键字即可。以下是简介版。推荐使用uuid

01 assigned
主键由外部程序负责生成,在 save()
之前必须指定一个,Hibernate不负责维护主键生成。也就是可以每次指定主键。该方式不推荐

02 increment
这种方式在每次插入前,需要通过“select max(主键) from 表名
”这种方式先查询最大ID,然后通过ID+1来作为新的主键值。这种方式也不推荐,因为这样会出现线程安全问题。

03 identity
identity由底层数据库生成标识符。identity是由数据库自己生成的,但这个主键必须设置为自增长,使用identity的前提条件是底层数据库支持自动增长字段类型,如DB2、SQL
Server、MySQL、Sybase和HypersonicSQL等,Oracle这类没有自增字段的则不支持。

04 sequence
采用数据库提供的sequence机制生成主键,需要数据库支持sequence。如oralce、DB、SAP
DB、PostgerSQL、McKoi中的sequence。MySQL这种不支持sequence的数据库则不行

05 hilo
hilo(高低位方式high
low)是hibernate中最常用的一种生成方式,需要一张额外的表保存hi的值。保存hi值的表至少有一条记录(只与第一条记录有关),否则会出现错误。可以跨数据库。

06 native
native由hibernate根据使用的数据库自行判断采用identity、hilo、sequence其中一种作为主键生成方式,灵活性很强。如果能支持identity则使用identity,如果支持sequence则使用sequence。

07 uuid
UUID:Universally Unique
Identifier,是指在一台机器上生成的数字,它保证对在同一时空中的所有机器都是唯一的。按照开放软件基金会(OSF)制定的标准计算,用到了以太网卡地址、纳秒级时间、芯片ID码和许多可能的数字,标准的UUID格式为:xxxxxxxx-xxxx-xxxx-xxxxxx-xxxxxxxxxx
(8-4-4-4-12)

好了,接下来开始这章的主要内容。hibernate的三种方式实现CRUD。首先在src/test/java文件夹下新建package(com.test),新建类
Test.类中写一个方法叫做temp,加上@Test标记

@Test
    public void temp() {

    }

我们可以在cfg.xml中的<session-factory>节点中添加如下代码,以便在控制台来查看我们提交的sql语句。方便修改错误。

      <!--显示sql语句 -->
        <property name="show_sql">true</property>
        <!--格式化Hibernate的SQL输出语句。 -->
        <property name="format_sql">true</property>

 

在temp方法中写上如下代码:代码写完后选择项目鼠标右键Run As ->Junit
Test 运行

第一种:Hibernate提供的Query By Criteria API来查询对象 即QBC。

增加:

        //添加一条数据
        // 获取配置信息
        Configuration configuration = new Configuration().configure();
        // 得到Session工厂
        SessionFactory factory = configuration.buildSessionFactory();
        // 得到Session
        Session session = factory.openSession();
        // 开启事物
        Transaction transaction = session.beginTransaction();
        // 实例化对象
        Student st = new Student();
        st.setName("王五");
        st.setSex("男");
        st.setAddress("长沙");
        //提交数据
        session.save(st);
        // 提交事物
        transaction.commit();
        // 关闭seeion
        session.close();
        // 关闭SessionFactory
        factory.close();

查询单个:

        // 获取配置信息
        Configuration configuration = new Configuration().configure();
        // 得到Session工厂
        SessionFactory factory = configuration.buildSessionFactory();
        // 得到Session
        Session session = factory.openSession();
        // 开启事物
        //Transaction transaction = session.beginTransaction();
        // 根据主键得到对象(查询单个记录)
        Student st = session.get(Student.class, 2);
        System.out.println(st);
        // 提交数据
        // session.save(st);
        // 提交事物
        // transaction.commit();
        // 关闭seeion
        session.close();
        // 关闭SessionFactory
        factory.close();

修改:

      // 获取配置信息
        Configuration configuration = new Configuration().configure();
        // 得到Session工厂
        SessionFactory factory = configuration.buildSessionFactory();
        // 得到Session
        Session session = factory.openSession();
        // 开启事物
        Transaction transaction = session.beginTransaction();
        // 根据主键得到对象(查询单个记录)
        Student st = session.get(Student.class, 2);
        // 设置修改值
        st.setName("李四");
        // 提交数据 saveOrUpdate意为:存在修改,不存在增加 修改也可以用Update
        session.saveOrUpdate(st);
        System.out.println(st);
        // 提交事物
        transaction.commit();
        // 关闭seeion
        session.close();
        // 关闭SessionFactory
        factory.close();

查询所有:

    // 获取配置信息
        Configuration configuration = new Configuration().configure();
        // 得到Session工厂
        SessionFactory factory = configuration.buildSessionFactory();
        // 得到Session
        Session session = factory.openSession();
        // 开启事物
        // Transaction transaction = session.beginTransaction();
        // 查询所有记录
        List<Student> ls = session.createCriteria(Student.class).list();
        for (Student student : ls) {
            System.out.println(student);
        }
        // 提交数据 saveOrUpdate意为:存在修改,不存在增加 修改也可以用Update
        // session.saveOrUpdate(st);
        // 提交事物
        // transaction.commit();
        // 关闭seeion
        session.close();
        // 关闭SessionFactory
        factory.close();

删除:

    // 获取配置信息
        Configuration configuration = new Configuration().configure();
        // 得到Session工厂
        SessionFactory factory = configuration.buildSessionFactory();
        // 得到Session
        Session session = factory.openSession();
        // 开启事物
        Transaction transaction = session.beginTransaction();
        // 根据主键得到对象(查询单个记录)
        Student st = session.get(Student.class, 2);
        // 提交数据
        session.delete(st);
        // 提交事物
         transaction.commit();
        // 关闭seeion
        session.close();
        // 关闭SessionFactory
        factory.close();

 

第二种:Hibernate官方推荐的标准查询Hibernate Query Language 即HQl查询

查询所有:** 注意:用HQL查询from后面接的是实体类名**

 

    // 获取配置信息
        Configuration configuration = new Configuration().configure();
        // 得到Session工厂
        SessionFactory factory = configuration.buildSessionFactory();
        // 得到Session
        Session session = factory.openSession();

        List<Student> ls = session.createQuery(“from
Student”).list();
         for (Student student : ls) {
         System.out.println(student);
          }

// 关闭seeion
        session.close();
        // 关闭SessionFactory
        factory.close();

 

查询单个属性:

// 获取配置信息
        Configuration configuration = new Configuration().configure();
        // 得到Session工厂
        SessionFactory factory = configuration.buildSessionFactory();
        // 得到Session
        Session session = factory.openSession();
List<String> ls = session.createQuery("select name from Student").list();
        for (String student : ls) {
            System.out.println(student);
        }

    // 关闭seeion
        session.close();
        // 关闭SessionFactory
        factory.close();

查询多个属性:object[]实现

// 获取配置信息
        Configuration configuration = new Configuration().configure();
        // 得到Session工厂
        SessionFactory factory = configuration.buildSessionFactory();
        // 得到Session
        Session session = factory.openSession();



    List<Object[]> ls = session.createQuery("select name,sex,age from Student").list();
        for (Object[] student : ls) {
            System.out.println(student[0] + "----" + student[1] + "----" + student[2]);
        }

    // 关闭seeion
        session.close();
        // 关闭SessionFactory
        factory.close();

 

 

查询多个属性:构造方法实现(先要在实体类中重载构造方法)

// 获取配置信息
        Configuration configuration = new Configuration().configure();
        // 得到Session工厂
        SessionFactory factory = configuration.buildSessionFactory();
        // 得到Session
        Session session = factory.openSession();
List<Student> ls = session.createQuery("select new Student(name,sex) from Student").list();
        for (Student student : ls) {
            System.out.println(student);
        }

// 关闭seeion
        session.close();
        // 关闭SessionFactory
        factory.close();

条件查询:

// 获取配置信息
        Configuration configuration = new Configuration().configure();
        // 得到Session工厂
        SessionFactory factory = configuration.buildSessionFactory();
        // 得到Session
        Session session = factory.openSession();
// List<Student> ls = session.createQuery("from Student where age
        // between ? and ?").setInteger(0, 10).setInteger(1, 50).list();
        List<Student> ls = session.createQuery("from Student where age between :begin and :end")
                .setParameter("begin", 10).setParameter("end", 50).list();
        for (Student student : ls) {
            System.out.println(student);
        }
        // 关闭seeion
        session.close();
        // 关闭SessionFactory
        factory.close();

聚合函数:

// 获取配置信息
        Configuration configuration = new Configuration().configure();
        // 得到Session工厂
        SessionFactory factory = configuration.buildSessionFactory();
        // 得到Session
        Session session = factory.openSession();
        String parm = session.createQuery("select max(age) from Student").uniqueResult().toString();
        System.out.println(parm);
        // 关闭seeion
        session.close();
        // 关闭SessionFactory
        factory.close();

排序:

// 获取配置信息
        Configuration configuration = new Configuration().configure();
        // 得到Session工厂
        SessionFactory factory = configuration.buildSessionFactory();
        // 得到Session
        Session session = factory.openSession();
    List<Student> ls = session.createQuery("from Student order by age desc").list();
        for (Student student : ls) {
            System.out.println(student);
        }
        // 关闭seeion
        session.close();
        // 关闭SessionFactory
        factory.close();

分组:构造方法实现(先要在实体类中重载构造方法)

// 获取配置信息
        Configuration configuration = new Configuration().configure();
        // 得到Session工厂
        SessionFactory factory = configuration.buildSessionFactory();
        // 得到Session
        Session session = factory.openSession();
        // List<Student> ls = session.createQuery("select new
        // Student(sex,max(age)) from Student group by sex").list();
        List<Object[]> ls = session.createQuery("select sex,max(age) from Student group by sex").list();
        for (Object[] student : ls) {
            System.out.println(student[0] + "--" + student[1]);
        }
        // 关闭seeion
        session.close();
        // 关闭SessionFactory
        factory.close();

Like:

// 获取配置信息
        Configuration configuration = new Configuration().configure();
        // 得到Session工厂
        SessionFactory factory = configuration.buildSessionFactory();
        // 得到Session
        Session session = factory.openSession();
    List<Student> ls = session.createQuery("from Student where name like ?").setParameter(0, "%1%").list();
        for (Student student : ls) {
            System.out.println(student);
        }
        // 关闭seeion
        session.close();
        // 关闭SessionFactory
        factory.close();

分页:

// 获取配置信息
        Configuration configuration = new Configuration().configure();
        // 得到Session工厂
        SessionFactory factory = configuration.buildSessionFactory();
        // 得到Session
        Session session = factory.openSession();
    List<Student> ls = session.createQuery("from Student").setFirstResult(10).setMaxResults(100).list();
        for (Student student : ls) {
            System.out.println(student);
        }
        // 关闭seeion
        session.close();
        // 关闭SessionFactory
        factory.close();

 

修改:

// 获取配置信息
        Configuration configuration = new Configuration().configure();
        // 得到Session工厂
        SessionFactory factory = configuration.buildSessionFactory();
        // 得到Session
        Session session = factory.openSession();
        // 开启事物
        Transaction transaction = session.beginTransaction();
        session.createQuery("update Student set name = :name where age=10").setParameter("name", "哈哈").executeUpdate();

        // 提交事物
        transaction.commit();
        // 关闭seeion
        session.close();
        // 关闭SessionFactory
        factory.close();

 

删除:

// 获取配置信息
        Configuration configuration = new Configuration().configure();
        // 得到Session工厂
        SessionFactory factory = configuration.buildSessionFactory();
        // 得到Session
        Session session = factory.openSession();
        // 开启事物
        Transaction transaction = session.beginTransaction();
        session.createQuery("delete Student where age=?").setParameter(0, 10).executeUpdate();
        // 提交事物
        transaction.commit();
        // 关闭seeion
        session.close();
        // 关闭SessionFactory
        factory.close();

 

第三种:原生态sql

这种方式基本不常用,所以就简单介绍下,具体的自己百度吧

//获取所有查询结果
session.createSQLQuery("select * from note").list();
//仅获取第一条结果
session.createSQLQuery("select * from note where id = 1").uniqueResult();

 

三种查询方式,
在上一章中已经搭建好了一个hibernate的环境,那么这一章我们就使用这个环境来进行基本CRUD。…

前言

今天介绍的是关于Spring的数据库连接以及Jdbc模板的相关API方法,虽然在学习了hibernate之后,会知道实现数据库连接一般都是使用hibernate等持久化框架来实现的。但是,很多时候一些涉及到事务的东西使用这些框架并不能够实现,所以我们还需要结合spring来实现相关的需要。

在下面这个地方看到的方法,只用3步就在suse10.3下实现3D效果,觉得实在是简单容易。

一、创建工程、导包

要想使用Spring的jdbc模板前,还需要导入相关的jar包:

图片 1

于是简单翻译过来,让和我一样的新人可以在10分钟之内实现3D功能。

二、进行相关的bean的创建以及工具类的编写

翻译如下:

2.1在数据库中创建了两张表,使用spring的jdbcTemplate中的API方法对这两张表进行操作

CREATE TABLE `t_dept` (
  `deptid` int(11) NOT NULL,
  `deptname` varchar(20) CHARACTER SET utf8 DEFAULT NULL,
  `remark` varchar(30) CHARACTER SET utf8 DEFAULT NULL,
  PRIMARY KEY (`deptid`)
) ENGINE=InnoDB DEFAULT CHARSET=gbk COLLATE=gbk_bin;

CREATE TABLE `user` (
  `USER_ID` int(11) NOT NULL,
  `USER_NAME` varchar(11) DEFAULT NULL,
  `USER_PASSWORD` varchar(11) DEFAULT NULL,
  `USER_ADDRESS` varchar(25) DEFAULT NULL,
  PRIMARY KEY (`USER_ID`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

第一步:一键安装

发表评论

电子邮件地址不会被公开。 必填项已用*标注

标签:
网站地图xml地图