Hibernate的简单入门使用

什么是Hibernate

Hibernate是一个开放源代码的对象关系映射框架,它对JDBC进行了非常轻量级的对象封装,它将POJO与数据库表建立映射关系,是一个全自动的orm框架,hibernate可以自动生成SQL语句,自动执行,使得Java程序员可以随心所欲的使用对象编程思维来操纵数据库。 Hibernate可以应用在任何使用JDBC的场合,既可以在Java的客户端程序使用,也可以在Servlet/JSP的Web应用中使用,最具革命意义的是,Hibernate可以在应用EJB的JavaEE架构中取代CMP,完成数据持久化的重任。

Hibernate的简单使用(Springboot项目)

pom文件引入jar包

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-data-jpa</artifactId>
</dependency>

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-devtools</artifactId>
    <scope>runtime</scope>
    <optional>true</optional>
</dependency>
<dependency>
    <groupId>mysql</groupId>
    <artifactId>mysql-connector-java</artifactId>
    <scope>runtime</scope>
</dependency>
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-test</artifactId>
    <scope>test</scope>
</dependency>

Springboot配置数据库信息

spring.datasource.url=jdbc:mysql://localhost:3306/webapp1901
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
spring.datasource.username=admin
spring.datasource.password=123456

spring.jpa.hibernate.naming.physical-strategy=org.hibernate.boot.model.naming.PhysicalNamingStrategyStandardImpl

idea连接Mysql数据库

配置方法请参考百度教程(点此前往),配置成功后,可以在右侧工具栏查看自己的数据库

配置Hibernate

打开idea项目结构,添加Hibernate

添加xml配置文件

生成实体类

打开工具栏配置,找到生成持久层映射这一项

如图配置实体类生成规则

选择实体类生成位置

Hibernate为我们生成了实体类,要注意的是,你可能会碰到生成的实体类报红的问题,它将表中int(11)的字段生成为了Long类型,需要手动更正一下

创建Dao文件

继承Hibernate提供的CrudRepository类就可实现基本的增删改查

package cn.com.scitc.webapp3.dao;

import cn.com.scitc.webapp3.pojo.Manager;
import org.springframework.data.repository.CrudRepository;
import org.springframework.stereotype.Repository;

@Repository
public interface ManagerDao extends CrudRepository<Manager,Integer> {
// CrudRepository泛型第一个值为实体类,第二个值为你的表的主键类型
}

编写测试类

package cn.com.scitc.webapp3.dao;

import cn.com.scitc.webapp3.pojo.Manager;
import org.junit.jupiter.api.Assertions;
import org.junit.jupiter.api.Test;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;

import java.util.ArrayList;
import java.util.List;
import java.util.Optional;

@SpringBootTest
class ManagerDaoTest {
    @Autowired
    private ManagerDao managerDao;

    private Logger logger = LoggerFactory.getLogger(getClass());

    @Test
    public void findById() {
        Optional<Manager> obj = managerDao.findById(1);
        Manager manager = obj.get();
        logger.info(manager.getLoginId());
        Assertions.assertEquals("JohnCena",manager.getLoginId());
    }

    @Test
    public void findAll() {
        Iterable<Manager> list = managerDao.findAll();
        for (Manager manager : list) {
            System.out.println(manager.getRealName());
        }
    }

    // Hibernate中将insert和update合并成了一个save方法,它会根据主键自动判断是增加还是修改操作

    @Test
    public void update() {
        Manager manager = new Manager();
        manager.setId(2);
        manager.setLoginId("Admin");
        manager.setRealName("李四");
        manager.setPwd("123456");
        manager.setLoginCount(88);
        manager.setLastLoginDt(null);

       managerDao.save(manager);
        Manager manager1 = managerDao.findById(2).get();
        logger.info(manager1.getRealName());
    }

    @Test
    public void delete() {
        Manager manager = new Manager();
        manager.setId(2);

        managerDao.delete(manager);
    }

    @Test
    public void insert() {
        Manager manager = new Manager();
        manager.setId(2);
        manager.setLoginId("Admin");
        manager.setRealName("李四");
        manager.setPwd("123456");
        manager.setLoginCount(88);
        manager.setLastLoginDt(null);
        managerDao.save(manager);
    }

    @Test
    public void deleteByIds() {
        List<Integer> ids = new ArrayList<>();
        ids.add(2);
        ids.add(3);

        managerDao.deleteAllById(ids);
    }

    @Test
    public void findByLoginId() {
        Manager manager = managerDao.findByLoginId("JohnCena");
        Assertions.assertEquals("张三",manager.getRealName());
    }
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值