链接:https://pan.baidu.com/s/1ZdKFZyx1wMYUsiO4wbnhrQ 提取码:b6bw
0.数据库

一:目录

一:配置Pom文件
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>org.example</groupId>
<artifactId>mu</artifactId>
<version>1.0-SNAPSHOT</version>
<properties>
<maven.compiler.source>8</maven.compiler.source>
<maven.compiler.target>8</maven.compiler.target>
</properties>
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.3.6.RELEASE</version> <!-- 1.5.1-->
</parent>
<dependencies>
<!--hibernate的核心-->
<dependency>
<groupId>org.hibernate</groupId>
<artifactId>hibernate-core</artifactId>
<version>5.5.3.Final</version>
</dependency>
<!--用于hibernate整合spring的支持-->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-orm</artifactId>
<version>5.2.12.RELEASE</version>
</dependency>
<!--使用阿里的连接池-->
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>druid-spring-boot-starter</artifactId>
<version>1.2.6</version>
</dependency>
<!--用于ID生成-->
<dependency>
<groupId>cn.hutool</groupId>
<artifactId>hutool-core</artifactId>
<version>5.7.3</version>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<scope>runtime</scope>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-test</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-test</artifactId>
</dependency>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
</dependency>
</dependencies>
</project>
二:application.properties
# ????
spring.application.name=springboot-hibernate
# ??????
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
# ?????
spring.datasource.name=defaultDataSource
# ???????
spring.datasource.url=jdbc:mysql://localhost:3306/hibernates?serverTimezone=UTC
# ??????&???
spring.datasource.username=root
spring.datasource.password=root
# ???? WEB ????
server.port=8080
三:配置文件
DataSourceConfig
package bj.sh.gy.config;
import com.alibaba.druid.pool.DruidDataSource;
import org.springframework.beans.factory.annotation.Configurable;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.context.annotation.Bean;
import javax.sql.DataSource;
/**
* @author LXY
* @desc
* @time 2022-10-16 0:55
*/
@Configurable
public class DataSourceConfig {
@Bean
@ConfigurationProperties("spring.datasource")
public DataSource dataSource() {
DruidDataSource source = new DruidDataSource();
//source.setDriverClassName("com.mysql.cj.jdbc.Driver");
source.setName("test");
source.setInitialSize(1);
//最大活动
source.setMaxActive(10);
source.setMaxWait(60000);
//配置间隔多久才进行一次检测,检测需要关闭的空闲连接,单位是毫秒
source.setTimeBetweenEvictionRunsMillis(60000);
//配置一个连接在池中最小生存的时间,单位是毫秒
source.setMinEvictableIdleTimeMillis(300000);
//每分钟打印一次连接状态日志
//source.setTimeBetweenLogStatsMillis(60000);
return source;
}
}
HibernateToConfig
package bj.sh.gy.config;
import com.alibaba.druid.pool.DruidDataSource;
import org.springframework.context.annotation.Bean;
import org.springframework.orm.hibernate5.LocalSessionFactoryBean;
import org.springframework.stereotype.Component;
import javax.annotation.Resource;
import javax.sql.DataSource;
import java.util.Properties;
/**
* @author LXY
* @desc
* @time 2022-10-16 0:57
*/
@Component
public class HibernateToConfig {
@Resource
private DataSource dataSource;
@Bean
public LocalSessionFactoryBean sessionFactory() {
LocalSessionFactoryBean bean = new LocalSessionFactoryBean();
bean.setDataSource(dataSource);
// 扫描实体类
bean.setPackagesToScan("bj.sh.gy.enity");
Properties properties = new Properties();
properties.setProperty("current_session_context_class", "thread");
DruidDataSource druidDataSource = (DruidDataSource) dataSource;
properties.setProperty("connection.pool_size", String.valueOf(druidDataSource.getMaxActive()));
// 配置方言 mysql 5.7.34
properties.setProperty("hibernate.dialect", "org.hibernate.dialect.MySQL57Dialect");
// <!-- 控制台打印SQL -->
properties.setProperty("hibernate.show_sql", "true");
// 制台打印SQL格式化
//properties.setProperty("hibernate.format_sql", "true");
/**
* create:表示启动的时候先drop,再create
* create-drop: 也表示创建,只不过再系统关闭前执行一下drop
* update: 这个操作启动的时候会去检查schema是否一致,如果不一致会做scheme更新
* validate: 启动时验证现有schema与你配置的hibernate是否一致,如果不一致就抛出异常,并不做更新
*/
// 首次启动使用 create 让bean自动生成表,之后使用 update模式即可
// properties.setProperty("hibernate.hbm2ddl.auto", "create");
bean.setHibernateProperties(properties);
return bean;
}
}
四:实体类
package bj.sh.gy.enity;
import org.hibernate.annotations.GenericGenerator;
import javax.persistence.*;
import java.util.Date;
/**
* @author LXY
* @desc
* @time 2022-10-16 0:59
*/
@Table(name = "user")
@Entity
public class User {
@Id
@Column(name = "id")
private int id;
@Column(name = "name")
private String name;
@Column(name = "age")
private int age;
@Column(name = "t_version")
private int t_version;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
public int getT_version() {
return t_version;
}
public void setT_version(int t_version) {
this.t_version = t_version;
}
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
}
五:Dao
dao
package bj.sh.gy.Dao;
import bj.sh.gy.enity.User;
import java.util.List;
/**
* @author LXY
* @desc
* @time 2022-10-16 10:06
*/
public interface UserDao {
List<User>queyrall();
int savauser(User user);
}
daoImple
package bj.sh.gy.Dao;
import bj.sh.gy.enity.User;
import org.hibernate.SessionFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Repository;
import java.util.List;
/**
* @author LXY
* @desc
* @time 2022-10-16 10:07
*/
@Repository
public class DaoImple implements UserDao{
@Autowired
private SessionFactory sessionFactory;
@Override
public List<User> queyrall() {
return sessionFactory.getCurrentSession().createQuery("from User ").list();
}
@Override
public int savauser(User user) {
return (int) sessionFactory.getCurrentSession().save(user);
}
}
六 Service
service
package bj.sh.gy.Service;
import bj.sh.gy.enity.User;
import java.util.List;
/**
* @author LXY
* @desc
* @time 2022-10-16 10:11
*/
public interface UserService {
List<User>queryUser();
int savauser(User user);
}
ServiceImple
package bj.sh.gy.Service;
import bj.sh.gy.Dao.UserDao;
import bj.sh.gy.enity.User;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import java.util.List;
/**
* @author LXY
* @desc
* @time 2022-10-16 10:12
*/
@Service
public class UserServiceImple implements UserService{
@Autowired
UserDao userDao;
@Override
@Transactional
public List<User> queryUser() {
return userDao.queyrall();
}
@Override@Transactional
public int savauser(User user) {
return userDao.savauser(user);
}
}
七:connction
package bj.sh.gy.connction;
import bj.sh.gy.Service.UserService;
import bj.sh.gy.enity.User;
import org.hibernate.SessionFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;
import java.util.List;
import java.util.UUID;
/**
* @author LXY
* @desc
* @time 2022-10-16 1:02
*/
@RestController
public class connction {
@Autowired
UserService service;
@GetMapping("/getqueryuser")
private List<User> qeryUser(){
return service.queryUser();
}
@GetMapping("/savauser")
private int savauser(){
User user=new User();
user.setId(2);
user.setName("李四");
user.setAge(16);
user.setT_version(1);
return service.savauser(user);
}
}
八:启动类
package bj.sh.gy;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
/**
* @author LXY
* @desc
* @time 2022-10-16 1:04
*/
@SpringBootApplication
public class App {
public static void main(String[] args) {
SpringApplication.run(App.class,args);
}
}
九:效果展示

|