什么是Hibernate
Hibernate是一个开放源代码的对象关系映射框架
,它对JDBC进行了非常轻量级的对象封装,它将POJO与数据库表建立映射关系,是一个全自动的orm框架,hibernate可以自动生成SQL语句,自动执行,使得Java程序员可以随心所欲的使用对象编程思维来操纵数据库。 Hibernate可以应用在任何使用JDBC的场合,既可以在Java的客户端程序使用,也可以在Servlet/JSP的Web应用中使用,最具革命意义的是,Hibernate可以在应用EJB的JavaEE架构中取代CMP,完成数据持久化的重任。
Hibernate的简单使用(Springboot项目)
pom文件引入jar包
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21
| <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配置数据库信息
1 2 3 4 5 6
| 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类就可实现基本的增删改查
1 2 3 4 5 6 7 8 9 10
| 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> {
}
|
编写测试类
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89
| 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()); } }
@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()); } }
|