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

相关内容

热门资讯

大神推荐!aapoker可以设... 大神推荐!aapoker可以设置抽水,推荐开挂辅助透视安装-从前存在有挂是一款可以让一直输的玩家,快...
透视辅助!wepoker透视脚... 透视辅助!wepoker透视脚本免费使用视频,(WePoKer价格)一贯真的是有挂,微扑克教程(有挂...
科技通报!微信途游四川小程序脚... 科技通报!微信途游四川小程序脚本,哥哥打大a微信小程序作弊,技巧教程(确实有挂);1、让任何用户在无...
教程辅助“四海茶馆游戏辅助”科... 教程辅助“四海茶馆游戏辅助”科普开挂作弊辅助助手(原先是有挂);人气非常高,ai更新快且高清可以动的...
记者揭秘!wepoker辅助是... 记者揭秘!wepoker辅助是真的,曝光开挂辅助透视黑科技-其实真的有挂;亲真的是有正版授权,小编(...
透视数据!we-poker辅助... 透视数据!we-poker辅助,(HHpoker作弊)确实真的是有挂,AI教程(有挂猫腻);HHpo...
2024教程!天天爱消除辅助教... 您好,天天爱消除辅助教程这款游戏可以开挂的,确实是有挂的,需要了解加微【136704302】很多玩家...
信息共享“雀姬辅助”解密开挂作... 信息共享“雀姬辅助”解密开挂作弊辅助软件(都是有挂);雀姬辅助软件透明挂作为一款雀姬辅助辅助挂手游,...
透视透视!微扑克微乐辅助,(W... 透视透视!微扑克微乐辅助,(WePoKer智能)确实真的是有挂,揭秘攻略(有挂工具)是一款可以让一直...
盘点几款!佛手在线大菠萝有挂都... 盘点几款!佛手在线大菠萝有挂都输,关于开挂辅助透视app-果然存在有挂;详细佛手在线大菠萝有挂都输攻...