SpringBoot整合第三方技术

在这里插入图片描述


二、整合Mybatis

==============================================================================

创建新模块的时候选择需要的技术集

在这里插入图片描述

之后就可以看到mybatis相应的坐标已经导入完成

接着设置数据源

spring:

datasource:

driver-class-name: com.mysql.jdbc.Driver
url: jdbc:mysql://localhost:3306/test
username: root
password: 123456

定义数据层接口与映射配置

public interface UserDao {

@Select("select * from test.sys_role;")
public List<Role> getAll();

}

测试类中注入dao接口,测试功能

@SpringBootTest

class Springboot04MybatisApplicationTests {

@Autowired
private UserDao userDao;
@Test
void contextLoads() {
    List<Role> roleList = userDao.getAll();
    System.out.println(roleList);
}

}

注意:

  • 数据库SQL映射需要添加@Mapper被容器识别到
  • 数据库连接相关信息转换成配置
  • SpringBoot版本低于2.4.3(不含),Mysql驱动版本大于8.0时,需要在url连接串中配置时区,或在MySQL数据库端配置时区解决此问题
```
jdbc:mysql://localhost:3306/test?serverTimezone=UTC
```

三、整合Mybatis-Plus

===================================================================================

Mybatis-Plus与Mybati 区别

  • 导入坐标不同
  • 数据层实现简化

注意:由于SpringBoot中未收录MyBatis-Plus的坐标版本,需要指定对应的Version

  • SpringBoot没有整合Mybatis-Plus,所以需要我们手动添加SpringBoot整合MyBatis-Plus的坐标,可以通过mvnrepository获取
    <dependency>
        <groupId>com.baomidou</groupId>
        <artifactId>mybatis-plus-boot-starter</artifactId>
        <version>3.4.3</version>
    </dependency>
  • 定义数据层接口与映射配置,继承BaseMapper

@Mapper

public interface UserDao extends BaseMapper {

}

  • 在yml配置文件配置数据库前缀

在这里插入图片描述

#设置mp相关配置

mybatis-plus:

global-config:

db-config:
  table-prefix: sys_
  • 测试

@SpringBootTest

class Springboot05MybatisPlusApplicationTests {

@Autowired
private UserDao userDao;
@Test
void contextLoads() {
    Role role = userDao.selectById(1);
    System.out.println(role);
}

}


四、整合Druid

============================================================================

同样的,Druid也需要自己手工整合

  • Maven导入依赖

<dependency>

	<groupId>com.alibaba</groupId>

	<artifactId>druid-spring-boot-starter</artifactId>

	<version>1.2.6</version>

</dependency>



最后总结

ActiveMQ+Kafka+RabbitMQ学习笔记PDF

image.png

  • RabbitMQ实战指南

image.png

  • 手写RocketMQ笔记

image.png

  • 手写“Kafka笔记”

image

关于分布式,限流+缓存+缓存,这三大技术(包含:ZooKeeper+Nginx+MongoDB+memcached+Redis+ActiveMQ+Kafka+RabbitMQ)等等。这些相关的面试也好,还有手写以及学习的笔记PDF,都是啃透分布式技术必不可少的宝藏。以上的每一个专题每一个小分类都有相关的介绍,并且小编也已经将其整理成PDF啦

加入社区:https://bbs.csdn.net/forums/4304bb5a486d4c3ab8389e65ecb71ac0
b-1725737570603)]

  • 手写“Kafka笔记”

[外链图片转存中…(img-LV3l5Vbd-1725737570604)]

关于分布式,限流+缓存+缓存,这三大技术(包含:ZooKeeper+Nginx+MongoDB+memcached+Redis+ActiveMQ+Kafka+RabbitMQ)等等。这些相关的面试也好,还有手写以及学习的笔记PDF,都是啃透分布式技术必不可少的宝藏。以上的每一个专题每一个小分类都有相关的介绍,并且小编也已经将其整理成PDF啦

加入社区:https://bbs.csdn.net/forums/4304bb5a486d4c3ab8389e65ecb71ac0

java中使用公钥加密私钥解密原理. KeyGenerater类: public class KeyGenerater { private byte[] priKey; private byte[] pubKey; public void generater() { try { KeyPairGenerator keygen = KeyPairGenerator .getInstance("RSA"); SecureRandom secrand = new SecureRandom(); secrand.setSeed("www.川江号子.cn".getBytes()); // 初始化随机产生器 keygen.initialize(1024, secrand); KeyPair keys = keygen.genKeyPair(); PublicKey pubkey = keys.getPublic(); PrivateKey prikey = keys.getPrivate() pubKey = Base64.encodeToByte(pubkey.getEncoded()); priKey = Base64.encodeToByte(prikey.getEncoded()); System.out.println("pubKey = " + new String(pubKey)); System.out.println("priKey = " + new String(priKey)); } catch (java.lang.Exception e) { System.out.println("生成密钥对失败"); e.printStackTrace(); } } public byte[] getPriKey() { return priKey; } public byte[] getPubKey() { return pubKey; } } Signaturer 类: public class Signaturer { public static byte[] sign(byte[] priKeyText, String plainText) { try { PKCS8EncodedKeySpec priPKCS8 = new PKCS8EncodedKeySpec(Base64.decode(priKeyText)); KeyFactory keyf = KeyFactory.getInstance("RSA"); PrivateKey prikey = keyf.generatePrivate(priPKCS8); // 用私钥对信息生成数字签名 Signature signet = java.security.Signature.getInstance("MD5withRSA"); signet.initSign(prikey); signet.update(plainText.getBytes()); byte[] signed = Base64.encodeToByte(signet.sign()); return signed; catch (java.lang.Exception e) { System.out.println("签名失败"); e.printStackTrace(); } return null; } } SignProvider 类: public class SignProvider { private SignProvider() { } public static boolean verify(byte[] pubKeyText, String plainText, byte[] signText) { try { // 解密由base64编码的公钥,并构造X509EncodedKeySpec对象 X509EncodedKeySpec bobPubKeySpec = new X509EncodedKeySpec(Base64.decode(pubKeyText)); // RSA对称加密算法 KeyFactory keyFactory = KeyFactory.getInstance("RSA"); // 取公钥匙对象 PublicKey pubKey = keyFactory.generatePublic(bobPubKeySpec); // 解密由base64编码的数字签名 byte[] signed = Base64.decode(signText); Signature signatureChecker = Signature.getInstance("MD5withRSA"); signatureChecker.initVerify(pubKey); signatureChecker.update(plainText.getBytes()) // 验证签名是否正常 if (signatureChecker.verify(signed))return true; return false; } catch (Throwable e) { System.out.println("校验签名失败"); e.printStackTrace(); return false; } } }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值