1.Springboot--mybatisPlus

1.Springboot

1.1什么是springboot,springboot的概述

Spring Boot是由Pivotal团队提供的全新框架,其设计目的是用来简化Spring应用的创建、运行、调试、部署等。使用Spring Boot可以做到专注于Spring应用的开发,而无需过多关注XML的配置。Spring Boot使用“习惯优于配置”的理念,简单来说,它提供了一堆依赖打包,并已经按照使用习惯解决了依赖问题。使用Spring Boot可以不用或者只需要很少的Spring配置就可以让企业项目快速运行起来。

1.2 springboot 的特点

(1)快速开发spring应用的框架
(2)内嵌tomcat和jetty容器,不需要单独安装容器,jar包直接发布一个web应用
(3)简化maven配置,parent这种方式,一站式引入需要的各种依赖
(4)基于注解的零配置思想
(5)和各种流行框架:spring web mvc,mybatis等无缝整合

1.3使用idea搭建springboot工程

(1)搭建环境

1. jdk 1.8
2. idea 2022.2.2
3. win11

(2)打开idea File----->new------>project

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

(3)测试 :想要看是否搭建成功可以创建一个controller层测试一下

  启动主加载类

在这里插入图片描述

浏览器访问刚才controller的路径

在这里插入图片描述

1.4spring常用的配置文件

有properties和yml格式

(1)properties格式

在这里插入图片描述

(2)yml格式

  如果端口号或上下文路径改动,则访问路径也要改动,无论使用properties或者yml格式,名字必须叫做application,不然主加载类扫描不到,且如果两个文件同时存在且里面有相同的配置则会优先使用properties里面的配置yml其次。

1.5 java如何读取配置文件中的内容

(1)使用@ConfigurationProperties获取配置文件

在这里插入图片描述

  application 用等号连接

在这里插入图片描述

  yml 用 ":"然后分级 (属性:后要加一个空格)

在这里插入图片描述

(2)使用@Value读取内容(注意:他只能读取基本类型和String类型。加在属性上)

1.6springboot整合数据源

数据源有很多类型,我用的是druid

(1)引入相关依赖

   <!--mysql的驱动依赖-->
    <dependency>
        <groupId>mysql</groupId>
        <artifactId>mysql-connector-java</artifactId>
    </dependency>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-jdbc</artifactId>
    </dependency>
    <dependency>
        <groupId>com.alibaba</groupId>
        <artifactId>druid-spring-boot-starter</artifactId>
        <version>1.1.21</version>
    </dependency>

(2)配置数据源信息

  driver-class-name=com.mysql.cj.jdbc.Driver( 这里加不加cj看数据库版本)
spring.datasource.druid.driver-class-name=com.mysql.cj.jdbc.Driver
spring.datasource.druid.username=root
spring.datasource.druid.password=
spring.datasource.druid.url=jdbc:mysql:///
  ///后拼接数据库名字 时区看个人idea版本

2.springboot整合mybatis

2.1引入依赖

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
   xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent>
  <groupId>org.springframework.boot</groupId>
  <artifactId>spring-boot-starter-parent</artifactId>
  <version>2.3.12.RELEASE</version>
  <relativePath/> <!-- lookup parent from repository -->
</parent>
<groupId>com.hql</groupId>
<artifactId>qy163-springboot02</artifactId>
<version>0.0.1-SNAPSHOT</version>
<name>qy163-springboot02</name>
<description>qy163-springboot02</description>
<properties>
  <java.version>1.8</java.version>
</properties>
<dependencies>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-web</artifactId>
    </dependency>

    <dependency>
        <groupId>mysql</groupId>
        <artifactId>mysql-connector-java</artifactId>
    </dependency>
 
    <!--mybatis和springboot整合的依赖 启动依赖-->
    <dependency>
        <groupId>org.mybatis.spring.boot</groupId>
        <artifactId>mybatis-spring-boot-starter</artifactId>
        <version>2.1.4</version>
    </dependency>
 
    <dependency>
        <groupId>com.alibaba</groupId>
        <artifactId>druid-spring-boot-starter</artifactId>
        <version>1.1.21</version>
    </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>
</dependencies>
 
<build>
    <plugins>
        <plugin>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-maven-plugin</artifactId>
            <configuration>
                <excludes>
                    <exclude>
                        <groupId>org.projectlombok</groupId>
                        <artifactId>lombok</artifactId>
                    </exclude>
                </excludes>
            </configuration>
        </plugin>
    </plugins>
</build>
       </project>

2.2修改配置文件

#指定映射文件所在的路径–
mybatis.mapper-locations=classpath:mapper/*.xml

#mybatis日志文件
mybatis.configuration.log-impl=org.apache.ibatis.logging.stdout.StdOutImpl

2.3mapper接口

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-A47aJRyP-1681693415386)(C:\Users\zhang\AppData\Roaming\Typora\typora-user-images\image-20230415095119228.png)]

2.4为接口生成给代理类

在这里插入图片描述

2.5测试

在这里插入图片描述

3.Springboot装配原理

3.1springboot包扫描原理

  包建议大家放在主类所在包或者子包。默认包扫描的是主类所在的包以及子包。
  主函数在运行时会加载一个使用@SpringBootApplication标记的类。而该注解是一个复合注解,包含@EnableAutoConfiguration,这个注解开启了自动配置功能。 该注解也是一个复合注解,包含@AutoConfigurationPackage。 该注解中包含@Import({Registrar.class}),这个注解引入Registrar类。该类中存在registerBeanDefinitions,可以获取扫描的包名。
  如果需要人为修改扫描包的名称则需要在主类上@ComponentScan(basepackage={"包名"})

3.2springboot自动装配原理

  主函数在运行会执行一个使用@SpringbootApplication注解的类,该注解是一个复合注解,包含@EnableAutoConfiguration, 该注解开启自动配置功能,该注解也是一个复合注解,包含@Import() 该注解需要导入AutoConfigurationImportSelector类。 该类会加载很多自动装配类,而这些自动装配类完成相应的自动装配原理。

4springboot整合mybatis-plus(mp)

4.1mybatis-plus概述

MyBatis-Plus (opens new window)(简称 MP)是一个 MyBatis (opens new window)的增强工具,在 MyBatis 的基础上只做增强不做改变,为简化开发、提高效率而生。

img

愿景

我们的愿景是成为 MyBatis 最好的搭档,就像 魂斗罗 中的 1P、2P,基友搭配,效率翻倍。

但是不能替代mybatis,单表CRUD可以用mp实现,但是链表操作还是需要mybatis校验

4.2 mybatis-plus的使用

(1)在数据库中创建表user

DELETE FROM user;
INSERT INTO user (id, name, age, email) VALUES
(1, 'Jone', 18, 'test1@baomidou.com'),
(2, 'Jack', 20, 'test2@baomidou.com'),
(3, 'Tom', 28, 'test3@baomidou.com'),
(4, 'Sandy', 21, 'test4@baomidou.com'),
(5, 'Billie', 24, 'test5@baomidou.com');

(2)创建一个springboot工程并引入相关依赖

      <?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>
    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>2.3.12.RELEASE</version>
        <relativePath/> <!-- lookup parent from repository -->
    </parent>
    <groupId>com.sws</groupId>
    <artifactId>qy163-springboot02</artifactId>
    <version>0.0.1-SNAPSHOT</version>
    <name>qy163-springboot02</name>
    <description>Demo project for Spring Boot</description>
    <properties>
        <java.version>1.8</java.version>
    </properties>
    <dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>
        <dependency>
        <groupId>com.mysql</groupId>
        <artifactId>mysql-connector-j</artifactId>
    </dependency>
   <dependency>
        <groupId>com.baomidou</groupId>
   <artifactId>mybatis-plus-boot-starter</artifactId>
        <version>3.5.1</version>
    </dependency>
   <dependency>
        <groupId>org.mybatis.spring.boot</groupId>
        <artifactId>mybatis-spring-boot-starter</artifactId>
        <version>2.1.4</version>
    </dependency>
    <dependency>
        <groupId>com.alibaba</groupId>
        <artifactId>druid-spring-boot-starter</artifactId>
        <version>1.2.16</version>
    </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>
</dependencies>

<build>
    <plugins>
        <plugin>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-maven-plugin</artifactId>
            <configuration>
                <excludes>
                    <exclude>
                        <groupId>org.projectlombok</groupId>
                        <artifactId>lombok</artifactId>
                    </exclude>
                </excludes>
            </configuration>
        </plugin>
    </plugins>
</build>
</project>

4.3配置数据源

spring.datasource.druid.driver-class-name=com.mysql.cj.jdbc.Driver
spring.datasource.druid.username=root
spring.datasource.druid.password=
spring.datasource.druid.url=jdbc:mysql:/// 表名 ?

4.4创建实体类

@Data
@NoArgsConstructor
@AllArgsConstructor
public class User {
 private Long id;
 private String name;
 private Integer age;
 private String email;
}

4.5创建一个mapper接口

public interface UserMapper extends BaseMapper<User> {
}

4.6为接口生成代理实现类

在这里插入图片描述

  或者在mapper上加上注解

在这里插入图片描述

4.7测试

@SpringBootTest
class DemoApplicationTests {
@Autowired
private UserMapper userMapper;
@Test
void test() {
    User user = userMapper.selectById(8);
    System.out.println(user);
	}
}

4.8使用mp完成的CRUD

@SpringBootTest
class DemoApplicationTests {
    @Autowired
    private UserMapper userMapper;

@Test
public void  select(){
    QueryWrapper<User> wrapper=new QueryWrapper<>();
    wrapper.likeRight("name","_男");
    wrapper.or();
    wrapper.between("age",18,24);
    List<User> list = userMapper.selectList(wrapper);
    System.out.println(list);
    }
    @Test
    public void deleteById(){
        int i = userMapper.deleteById(4);
        System.out.println(i);
        }
@Test
public void delete(){
    List<Integer> list=new ArrayList<>();
    list.add(2);
    list.add(3);
    userMapper.deleteBatchIds(list);
    }
    @Test
    public void  insert(){
        User user = new User(9L,"东东",20,"111@qq.com");
        int insert = userMapper.insert(user);
        System.out.println(insert);
        }

@Test
public void update(){
    User user = new User(8L,"渣男",18,"215@qq.coom");
    user.setId(7L);
    userMapper.updateById(user);
	}
}

4.9使用mp完成条件查询

@Test
public void page2(){
QueryWrapper<User> wrapper=new QueryWrapper<>();
 wrapper.gt("age",18);//gt 大于
 List<User> list = userMapper.selectList(wrapper);
 list.forEach(System.out::println);
 }
//分页查询
 @Test
 public void page(){
     Page<User> page=new Page<>(1,3);//1:当前第几页 3:每页显示条数
     userMapper.selectPage(page,null);//把查询分页的结果封装到page对象中
     System.out.println("当前页的数据"+page.getRecords());//获取当前页的数据
     System.out.println("当前的页数:"+page.getPages());
     System.out.println("所有数据日条数:"+page.getTotal());
     }
     selectList(wrapper);
 list.forEach(System.out::println);
 }
//分页查询
 @Test
 public void page(){
     Page<User> page=new Page<>(1,3);//1:当前第几页 3:每页显示条数
     userMapper.selectPage(page,null);//把查询分页的结果封装到page对象中
     System.out.println("当前页的数据"+page.getRecords());//获取当前页的数据
     System.out.println("当前的页数:"+page.getPages());
     System.out.println("所有数据日条数:"+page.getTotal());
     }
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值