spring boot整合JPA兼容MySQL8和达梦数据库8
创始人
2024-11-14 17:35:03
0

前言

Spring Boot是一个基于Spring框架的快速开发框架,它可以简化Spring应用的配置和部署过程。JPA(Java Persistence API)是Java持久化规范的一种实现,它提供了一种统一的方式来访问和管理数据库。MySQL和达梦数据库都是常用的关系型数据库,在Spring Boot中兼容这两种数据库可以让我们根据实际需求选择合适的数据库进行开发。

一、添加依赖

在pom.xml文件中添加Spring Boot和JPA的依赖项。同时,根据需要添加MySQL和达梦数据库的驱动依赖。

                                                mysql             mysql-connector-java                                com.dameng             DmJdbcDriver18                               com.dameng             DmDialect-for-hibernate5.3                                             org.hibernate             hibernate-core                                org.springframework.boot             spring-boot-starter-jdbc                                        org.springframework.boot             spring-boot-starter-data-jpa                                                   hibernate-core                     org.hibernate                                        

二、配置数据库连接

在application.properties或application.yml文件中配置数据库连接信息,包括URL、用户名和密码等。
根据active随意切换MySQL和达梦数据库。

1.application.yaml

server:   port: 8678   shutdown: graceful  spring:   profiles:     active: mysql #    active: dm 

2.application-dm.yaml

spring:   datasource:     driver-class-name: dm.jdbc.driver.DmDriver     url: jdbc:dm://127.0.0.1:5236/P_API?zeroDateTimeBehavior=convertToNull&useUnicode=true&characterEncoding=utf-8     username: p_api     password: p_api     open-in-view: false     properties:       hibernate:         dialect: org.hibernate.dialect.DmDialect     dbcp2:       test-on-borrow: true       validation-query: SELECT 1   jpa:     #    database: mysql     database-platform: org.hibernate.dialect.DmDialect     properties:       hibernate:         #模式名称         default_schema: PROCESSON_API         dialect: org.hibernate.dialect.DmDialect         #        hbm2ddl:         #          #和上面spring.jpa.hibernate.ddl-auto类似         #          auto: update         #        #和上面spring.jpa.show-sql类似         #        show_sql: true         temp:           use_jdbc_metadata_defaults: false 

3.application-mysql.yaml

spring:   datasource:     driver-class-name: com.mysql.cj.jdbc.Driver     url: jdbc:mysql://192.168.10.136:3306/p_api?useSSL=false&useUnicode=true&characterEncoding=utf-8&serverTimezone=Asia/Shanghai&allowMultiQueries=true     username: root     password: 123456   jpa:     database: mysql     database-platform: org.hibernate.dialect.MySQL8Dialect     properties:       hibernate:         #模式名称         default_schema: p_api         dialect: org.hibernate.dialect.MySQL8Dialect         #        hbm2ddl:         #          #和上面spring.jpa.hibernate.ddl-auto类似         #          auto: update         #        #和上面spring.jpa.show-sql类似         #        show_sql: true         temp:           use_jdbc_metadata_defaults: false 

三、创建实体类

使用JPA的注解在Java类中定义实体类,定义表名和字段的映射关系。

@Entity @Table(name = "sys_user") @Data @AllArgsConstructor @NoArgsConstructor public class User implements Serializable {     @Id     @GeneratedValue(strategy = GenerationType.IDENTITY)     private Long id;      @Column(name = "user_name", length = 64)     private String userName;      @Column(length = 64)     private String account;      @Column(length = 64)     private String mobile;      @Column(length = 64)     private String email;      @Column(length = 16)     private String role;      @Column(length = 128)     private String salt;      @Column(length = 128)     private String passwordMd5;  } 

四、创建Repository接口

创建一个继承自JpaRepository的接口,用于定义数据库操作方法。

@Repository public interface UserRepository extends JpaRepository {     Optional findByAccount(String account); } 

五、编写业务逻辑

在Service中编写业务逻辑,并调用Repository接口中定义的方法进行数据库操作。

@Service @Slf4j public class LoginServiceImpl implements LoginService {      @Resource     private UserRepository userRepository;      @Transactional(rollbackFor = Exception.class)     @Override     public R login(HttpServletResponse response, String account, String password) {         Subject subject = SecurityUtils.getSubject();         UsernamePasswordToken token = new UsernamePasswordToken(account, password);          try         {             subject.login(token);         } catch (UnknownAccountException uae)         {             return R.error(GlobalErrorCodeConstants.ERROR_CODE_ACCOUNT_NOT_EXIST);         } catch (AuthenticationException ae)         {             return R.error(GlobalErrorCodeConstants.ERROR_CODE_PASSWORD_INCORRECT);         }          if (subject.isAuthenticated())         {             long timeout = subject.getSession().getTimeout();             log.info("Login success {}", timeout);         } else         {             token.clear();             return R.error(GlobalErrorCodeConstants.ERROR_CODE_PASSWORD_INCORRECT);         }          Object sessionId = subject.getSession().getId(); //        response.setHeader("authToken", sessionId.toString());          Map map = Maps.newConcurrentMap();         map.put("authToken", sessionId.toString());         return R.success(map);     } }  

总结

通过以上步骤,我们可以实现在Spring Boot中同时兼容MySQL和达梦数据库的JPA开发。在运行应用时,可以根据配置文件中的数据库连接信息自动连接到对应的数据库。同时,使用JPA可以提供一种统一的方式来进行数据库操作,无论是MySQL还是达梦数据库,都可以使用相同的代码进行访问和管理。这样可以提高开发效率并减少代码量。

相关内容

热门资讯

妙计f辅助!wepoker新号... 妙计f辅助!wepoker新号好一点吗,hhpoker软件靠谱吗,详情教程(有挂分析)1、每一步都需...
模板f辅助!wepoker怎么... 模板f辅助!wepoker怎么挂底牌,hhpoker到底可以作弊吗,辅助教程(有挂技巧)hhpoke...
教材f辅助!We poker辅... 教材f辅助!We poker辅助器下载,wepoker有辅助吗,必备教程(有人有挂)1、下载好We ...
指南f辅助!wepokerh5... 指南f辅助!wepokerh5破解,大菠萝免费辅助,普及教程(有挂辅助)在进入大菠萝免费辅助软件靠谱...
举措f辅助!菠萝辅助器免费版的... 举措f辅助!菠萝辅助器免费版的特点,德普之星私人局辅助免费,开挂教程(有挂神器)1、这是跨平台的菠萝...
机巧f辅助!pokermast... 机巧f辅助!pokermaster破解版,aapoker怎么控制牌,关于教程(有挂讲解)1、aapo...
法门f辅助!wepoker好友... 法门f辅助!wepoker好友局透视,哈糖大菠萝破解器,教你教程(确实有挂)1、这是跨平台的哈糖大菠...
讲义f辅助!wpk官网下载链接... 讲义f辅助!wpk官网下载链接,xpoker辅助器,解迷教程(有挂实锤)wpk官网下载链接能透视中分...
总结f辅助!HH平台挂,wpk... 总结f辅助!HH平台挂,wpk是真的还是假的,有挂教程(有人有挂)1、很好的工具软件,可以解锁游戏的...
手段f辅助!sohoopoke... 手段f辅助!sohoopoker辅助,菠萝德州透视脚本,揭露教程(有挂方法)1、实时菠萝德州透视脚本...