SpringBoo整合

整合

mybatis-plus

<dependency>
    <groupId>com.baomidou</groupId>
    <artifactId>mybatis-plus-boot-starter</artifactId>
    <version>3.4.1</version>
</dependency>
  • MybatisPlusAutoConfiguration配置类,MybatisPlusProperties配置项绑定。

  • SqlSessionFactory自动配置好,底层是容器中默认的数据源。

  • mapperLocations自动配置好的,有默认值classpath*:/mapper/**/*.xml,这表示任意包的类路径下的所有mapper文件夹下任意路径下的所有xml都是sql映射文件。 建议以后sql映射文件放在 mapper下。

  • 容器中也自动配置好了SqlSessionTemplate

  • @Mapper 标注的接口也会被自动扫描,建议直接 @MapperScan("com.lun.boot.mapper")批量扫描。

  • MyBatisPlus优点之一:只需要我们的Mapper继承MyBatisPlus的BaseMapper 就可以拥有CRUD能力,减轻开发工作。

import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.lun.hellomybatisplus.model.User;

public interface UserMapper extends BaseMapper<User> {

}

redis

导入依赖

<!--redis-->
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-data-redis</artifactId>
</dependency>

不需要写配置,默认已经写好,且导入了jedis

使用redis

 @Autowired
StringRedisTemplate redisTemplate;

@Autowired
RedisConnectionFactory redisConnectionFactory;

@Test
public void  test()
{
    ValueOperations<String, String> operations = redisTemplate.opsForValue();

    operations.set("k1","v1");

    String hello = operations.get("hello");
    System.out.println(hello);

    System.out.println(redisConnectionFactory.getClass());

}

事务支持

  1. 能成功写入数据,但会报错,原因貌似为底层代码逻辑问题

// 开启事务支持,在同一个 Connection 中执行命令
  stringRedisTemplate.setEnableTransactionSupport(true);
 
  stringRedisTemplate.multi();
  stringRedisTemplate.opsForValue().set("name", "qinyi");
  stringRedisTemplate.opsForValue().set("gender", "male");
  stringRedisTemplate.opsForValue().set("age", "19");
  System.out.println(stringRedisTemplate.exec());     // [true, true, true]

2.推荐使用,不会报错

SessionCallback<Object> callback = new SessionCallback<Object>() {
    @Override
    public Object execute(RedisOperations operations) {
        operations.multi();
        operations.opsForValue().set("name", "qinyi");
        operations.opsForValue().set("gender", "male");
        operations.opsForValue().set("age", "19");
        return operations.exec();
    }
};
redisTemplate.execute(callback);

邮件发送(QQ邮箱)

引入pom.xml的依赖

        <dependency>         
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-mail</artifactId>
        </dependency>
1234

配置qq邮箱相关信息(application.yml)

spring:
  mail:
    # host: smtp.exmail.qq.com #企业邮箱
    host: smtp.qq.com #个人邮箱
    port: 465
    username: ******@qq.com #邮箱地址,对应host的主机
    password: ****** #此处为邮箱**授权码**,qq独有
    properties:
      mail:
        smtp:
          ssl:
            enable: true

发送java代码

  1. 普通文本发送

@Autowired
private JavaMailSender javaMailSender;

public void sendMail(String address){
    SimpleMailMessage message = new SimpleMailMessage();
    message.setSubject("test");
    message.setFrom("******@qq.com");
    message.setTo(address);
    message.setText("hello world");
    javaMailSender.send(message);
}
  1. 非纯文本格式发送

@Autowired
private JavaMailSender javaMailSender;

public void sendMail(String address){
    MimeMessage message = javaMailSender.createMimeMessage();
    MimeMessageHelper helper = new MimeMessageHelper(message, true);
    //邮件主题
    helper.setSubject("test");
    //附件
    helper.addAttachment("file.png",new File("filePath"));
    //邮件内容,也可以放html的格式
    helper.setText("邮件内容");
    //邮件发送时间
    helper.setSentDate(时间);
    //发件人
    helper.setFrom("******@qq.com");
    //收件人
    helper.setTo(address);
    javaMailSender.send(message);
}

发送邮件时线程阻塞

在发送邮件方法上添加@Aysnc注解

Web Socket

Last updated