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还是达梦数据库,都可以使用相同的代码进行访问和管理。这样可以提高开发效率并减少代码量。

相关内容

热门资讯

今日百科!wepoke管理系统... 今日百科!wepoke管理系统(黑科技)外挂透明黑科技辅助黑科技(有挂方略)-哔哩哔哩是一款可以让一...
黑科技规律!cloudpoke... 黑科技规律!cloudpoker云扑克辅助(透视)教你攻略(2021已更新)(哔哩哔哩)1、很好的工...
揭秘一下!德州之星辅助器怎么用... 揭秘一下!德州之星辅助器怎么用(黑科技)外挂ai代打辅助器(有挂功能)-哔哩哔哩1、下载好德州之星辅...
黑科技总结!wepoke计算辅... 黑科技总结!wepoke计算辅助(透视)2025新版技巧(2021已更新)(哔哩哔哩)1、超多福利:...
重大通报!!微扑克透牌(黑科技... 重大通报!!微扑克透牌(黑科技)外挂透明挂辅助神器(有挂实锤)-哔哩哔哩1、每个玩家都可以进行使用,...
黑科技黑科技!微扑克辅助工具(... 黑科技黑科技!微扑克辅助工具(透视)总结教程(2025已更新)(哔哩哔哩)微扑克辅助工具辅助器中分为...
玩家攻略!微扑克专用辅助器(黑... 玩家攻略!微扑克专用辅助器(黑科技)外挂透明黑科技辅助黑科技(有挂规律)-哔哩哔哩;微扑克专用辅助器...
黑科技辅助!微扑克有保险吗(透... 黑科技辅助!微扑克有保险吗(透视)透牌教程(2025已更新)(哔哩哔哩)微扑克有保险吗辅助器中分为三...
我来分享!wpk到底有没有外挂... 我来分享!wpk到底有没有外挂(黑科技)外挂辅助挂辅助神器(有挂工具)-哔哩哔哩1、每个玩家都可以进...
黑科技辅助!wpk ai(透视... 黑科技辅助!wpk ai(透视)必胜教程(2026已更新)(哔哩哔哩)1、玩家可以在wpk ai软件...