首页 > 其他分享 >Mybatis-Plus学习

Mybatis-Plus学习

时间:2023-03-02 10:34:42浏览次数:47  
标签:name spring 学习 Plus org Mybatis 注解 属性 注入

mybatis-plus 学习

系统环境

jdk8+mysql5.7+springBoot+mybatis最新版本+系统编码UTF-8

文件配置

application.properties

# 应用名称
spring.application.name=mybatisplusLearn
# 数据库驱动:
spring.datasource.driver-class-name=com.mysql.jdbc.Driver
# 数据源名称
spring.datasource.name=defaultDataSource
# 数据库连接地址
spring.datasource.url=jdbc:mysql://localhost:3306/demoMybatisPlus?serverTimezone=UTC&characterEncoding=UTF-8
# 数据库用户名&密码:
spring.datasource.username=root
spring.datasource.password=root
# 应用服务 WEB 访问端口
server.port=8086
#mybatis的日志
mybatis-plus.configuration.log-impl=org.apache.ibatis.logging.stdout.StdOutImpl

pom.xml

<dependencies>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-web</artifactId>
    </dependency>

    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-devtools</artifactId>
        <scope>runtime</scope>
        <optional>true</optional>
    </dependency>
    <dependency>
        <groupId>mysql</groupId>
        <artifactId>mysql-connector-java</artifactId>
        <version>5.1.47</version>
        <scope>runtime</scope>
    </dependency>
    <dependency>
        <groupId>org.projectlombok</groupId>
        <artifactId>lombok</artifactId>
        <optional>true</optional>
    </dependency>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-test</artifactId>
        <scope>test</scope>
    </dependency>
    <dependency>
        <groupId>com.baomidou</groupId>
        <artifactId>mybatis-plus-boot-starter</artifactId>
        <version>3.3.0</version>
    </dependency>
    <dependency>
        <groupId>com.alibaba</groupId>
        <artifactId>druid</artifactId>
        <version>1.2.5</version>
    </dependency>
    <dependency>
        <groupId>org.mybatis</groupId>
        <artifactId>mybatis-spring</artifactId>
        <version>2.0.4</version>
    </dependency>
</dependencies>

springBootTest类文件

package com.albert.test;

import com.albert.dao.UserDao;
import com.albert.pojo.User;
import org.junit.jupiter.api.Test;
import org.springframework.boot.test.context.SpringBootTest;

import javax.annotation.Resource;
import java.util.List;

/**
 * @author by ALBERT
 */
@SpringBootTest
public class UserTest {
    
    // 如果使用 Autowired 不成功,可使用Resource代替
    @Resource
    private UserDao userDao;
    @Test
    public void findAll(){
        List<User> users = userDao.selectList(null);
        users.forEach(item-> System.out.println("user:"+item));
    }
}

引申问题

Autowired与Resource的区别

参考链接1

参考链接2

相同点:

1.作用都一样,都是在做bean的注入,在使用过程中
2.一个业务接口只对应一个业务实现类的场景下两个注解可以替换使用

不同点

区别 Autowired Resource
1 Spring的注解 Java自身的注解
2 只根据type进行注入,不会去匹配name.但是如果只根据type无法辨别注入对象时,就需要配合使用@Qualifier注解或者@Primary注解使用. 有两个重要的属性,分别是name和type,如果name属性有值,则使用byName的自动注入策略,将值作为需要注入bean的名字,如果type有值,则使用byType自动注入策略,将值作为需要注入bean的类型.如果既不指定name也不指定type属性,这时将通过反射机制使用byName自动注入策略。即@Resource注解默认按照名称进行匹配,名称可以通过name属性进行指定,如果没有指定name属性,当注解写在字段上时,默认取字段名,按照名称查找,当找不到与名称匹配的bean时才按照类型进行装配。但是需要注意的是,如果name属性一旦指定,就只会按照名称进行装配

使用要点:

Autowired 配合Qualifier;qualifier(“serviceImpl上的@service中指定的名称”)

image-20230302095827996

直接使用Resource时;配合名称使用;

image-20230302095942230

最佳实践:

参考链接3

lombock中的注解RequiredArgsConstructor

Spring 建议我们在Bean中使用构造注入

Spring常用的注入方式有: 简单类型注入, 集合类型注入, 域属性自动注入, 自动注入的类别, 空值注入, 构造注入
可以简化为: 属性注入, 构造方法注入, set 方法注入

推荐使用构造方法注入

@RestController
public class TestController {

    final TestService testService;

    public TestController(TestService testService) {
        this.testService = testService;
    }
}

问题是要写很多代码

这个时候,你可能想到了Lombok的AllArgsConstructor注解。但它是针对于全部的属性的,如果类中有一些非Bean的属性,Spring就会晕菜。这个时候,就可以使用RequiredArgsConstructor了。

把需要注入的属性,修改成final类型的(或者使用@NotNull注解,不推荐),这些属性将构成默认的构造器。Java要求final类型的属性必须要初始化,如果没有构造方法代码就会变红。

image-20230302101448301

标签:name,spring,学习,Plus,org,Mybatis,注解,属性,注入
From: https://www.cnblogs.com/SunAlbert/p/17170908.html

相关文章

  • MyBatis基础
    概念      快速入门创建user表,添加数据CREATEDATABASEmybatis;USEmybatis;DROPTABLEIFEXISTStb_user;CREATETABLEtb_user(idINTPRIM......
  • 九、MybatisPlus的多数据源
    场景适用于多种场景:纯粹多库、读写分离、一主多从、混合模式等目前我们就来模拟一个纯粹多库的一个场景,其他场景类似场景说明:我们创建两个库,分别为:mybatis_plus(以前......
  • Markdown学习
    Markdown学习标题一级标题:#+空格+标题名N级标题:N个#+空格+标题名字体字体两边+*=斜体这是斜体字体两边+**=粗体这是粗体字体两边+~~=删除......
  • ABP微服务系列学习-使用Tye启动微服务
    Tye是微软开源的一款开发人员工具,能够用于简化微服务以及分布式应用程序的开发、测试以及部署过程。Tye的首要目标是简化微服务的开发,具体方式包括仅用一行命令执行多项......
  • 八、MybatisPlus的代码生成器示例
    引入依赖<dependency> <groupId>com.baomidou</groupId> <artifactId>mybatis-plus-generator</artifactId> <version>3.5.1</version></dependency><dependency> <......
  • 机器学习python环境搭建
    目的:跑通下面代码相关代码fromtorchimportnnimporttorchimportjiebaimportnumpyasnpraw_text="""越努力就越幸运"""words=list(jieba.cut(raw_text))......
  • 汇编语言学习_5_包含外部文件
    第五节包含外部文件翻译自:https://asmtutor.com/外部包含文件允许我们从我们的程序中移动代码并将其放入单独的文件中。这种技术对于编写干净、易于维护的程序很有用。......
  • 学习前端遇到的问题以及解决办法
      图中的abc和123相隔很远,按道理来说应该是上下紧贴着的两层的,原因是因为上面的像素高超了一点点导致它下移动了,我们可以用overflow:hidden;放在上面那个盒子里面解决......
  • 《渗透测试》学习随笔 day5
    1常规化原理:源码数据都在同服务器影响:无,常规安全测试手法 2站库分离:原理:源码数据库不在同服务器存储:其他服务器上数据库&云数据库产品影响:数据被单独存放,能连接才......
  • 【Mybatis】【数据源】【一】Mybatis源码解析-内置数据源
    1 前言这节我们要看一下数据源的东西了。比如我们以前在XML配置的什么驱动、url、账号密码啥的以及现在我们在SpringBoot下配置的其实都是为了创建我们的数据源,那么这节......