SpringBoot整合第三方技术与MP常用功能_springboot mp(1)

先自我介绍一下,小编浙江大学毕业,去过华为、字节跳动等大厂,目前阿里P7

深知大多数程序员,想要提升技能,往往是自己摸索成长,但自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!

因此收集整理了一份《2024年最新Java开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友。
img
img
img
img
img
img

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,涵盖了95%以上Java开发知识点,真正体系化!

由于文件比较多,这里只是将部分目录截图出来,全套包含大厂面经、学习笔记、源码讲义、实战项目、大纲路线、讲解视频,并且后续会持续更新

如果你需要这些资料,可以添加V获取:vip1024b (备注Java)
img

正文

创建一个dao包下的PersonDao接口

package com.dao;

import com.pojo.Person;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Select;
import org.springframework.stereotype.Component;

import java.util.List;
@Component//交给spring容器管理
@Mapper//使用注解配置映射
public interface PersonDao {
@Select(“select *from tb_user”)
List personList();
}

在测试类下

package com;

import com.dao.PersonDao;
import org.junit.jupiter.api.Test;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;

@SpringBootTest
class Springboot05MybatisApplicationTests {

//测试,先注入dao对象
@Autowired
private PersonDao personDao;

@Test
void contextLoads() {
System.out.println(personDao.personList());
}

}

运行结果:

小结:

1、勾选Mybatis技术,也就是导入mybatis对应的starter

2、数据库连接相关信息转换成配置

3、数据库sql映射需要添加@Mapper被容器识别到

@Mapper注释用来表示该接口类的实现类对象交给mybatis底层创建,然后交由Spring框架管理

mysql8遇到时区错误

mysql8以上的版本的加上时区?serverTimezone=UTC不然会报错

url: jdbc:mysql://localhost:3306/mybatis?serverTimezone=UTC

小结:

1\mysql8以上的版本驱动有前置要求设置时区

  • 修改url,添加sercerTimezone设定
  • 修改mysql数据库配置(永久设置)

2、驱动类过时,提醒更换为com.mysql.cj.jdbc.Driver

3、整合Mybatis-plus

使用aliyun创建springboot,或者导入Mybatisplus坐标

dao层的变为,不用写任何方法,点ctrl+鼠标点击进去BaseMapper中可以看到提供了很多方法。

@Data
@TableName(“tb_user”)//告诉是哪张表
public class Person {
private Integer id;
private String username;
private String password;
private String gender;
private String addr;

}

这需要在pojo对象中加上,告诉mp是哪张表。@TableName(“tb_user”)

package com.dao;

import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.pojo.Person;
import org.apache.ibatis.annotations.Mapper;

@Mapper//使用注解配置映射
public interface PersonDao extends BaseMapper {

}

测试类中

package com;

import com.dao.PersonDao;
import com.pojo.Person;

import org.junit.jupiter.api.Test;

import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.stereotype.Repository;

import javax.annotation.Resource;

@SpringBootTest
@MapperScan(“com.dao”)//扫描dao的包,扫描到mapper
class Springboot06MybatisplusApplicationTests {

@Resource
private PersonDao personDao;

@Test
void contextLoads() {

System.out.println(personDao.selectById(1));
}

}

运行结果

Springboot整合mybatis-plus

①手动添加添加springboot整合mp的坐标,可以通过mvnrepository获取

注:由于springboot没有收录mp的坐标版本,需要指定对应的version

②定义数据层接口与映射配置,继承BaseMapper

测试类中注入dao接口,使用即可。

注:需要使用的第三方技术无法创建时勾选时,就手工添加

出现No qualifying bean of type ‘com.dao.PersonDao’ available错误

这个本质就是springboot找不到dao,只需要在启动类中加入@MapperScan(“com.dao”)就可以正常访问了

MyBatisPlus常用功能

1、 给Mp开启日志

在配置文件中写入

#打印日志
mybatis-plus:
configuration:
#标准输出
log-impl: org.apache.ibatis.logging.stdout.StdOutImpl

运行一个查看所有的方法,控制台输出如下

2、 MP的分页功能

定义一个类做拦截器

package com.config;

import com.baomidou.mybatisplus.extension.plugins.MybatisPlusInterceptor;
import com.baomidou.mybatisplus.extension.plugins.inner.PaginationInnerInterceptor;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

//分页相关
@Configuration//是一个配置
public class MPConfig {
@Bean//给spring管理
public MybatisPlusInterceptor mybatisPlusInterceptor(){
//定义Mybatis拦截器
MybatisPlusInterceptor interceptor=new MybatisPlusInterceptor();
//添加具体的拦截器
interceptor.addInnerInterceptor(new PaginationInnerInterceptor());

return interceptor;

}

}

测试类下

package com;

@SpringBootTest
class Springboot06MybatisplusApplicationTests {

@Autowired(required = true)
private PersonDao personDao;

// 分页相关
@Test
void GetPage(){
Page page = new Page(0, 4);
personDao.selectPage(page, null);
System.out.println(“当前页码:”+page.getCurrent());
System.out.println(“多少页:”+page.getPages());
System.out.println(“每页条数:”+page.getSize());
System.out.println(“总数据数:”+page.getTotal());
System.out.println(“所有的内容:”+page.getRecords());
}

}

分页操作时在MyBatisPlus的常规操作基础上增强得到的,内部是动态的拼写sql语句,因此需要增强对应的功能,使用MyBatisPlus拦截器实现

3、 MP条件查询功能

package com;

import javax.annotation.Resource;

@SpringBootTest
class Springboot06MybatisplusApplicationTests {

@Autowired(required = true)
private PersonDao personDao;
@Test
//法1
public void testBy(){
String name=“z”;
LambdaQueryWrapper lqw=new LambdaQueryWrapper<>();
lqw.like(name!=null,Person::getUsername,name);
personDao.selectList(lqw);
}

@Test
//法2
public void testBy1(){
String name=“z”;
QueryWrapper qw=new QueryWrapper<>();
qw.like(name!=null, “username”, “zhan”);
personDao.selectList(qw);
}

}

法1比法2好,因为中间的字段不会写错,而法2没有提示,则容易出错。

运行结果:

Service又称为业务层,dao层又称为数据层

4、Mp的业务层快速开发

快速开发方案

  • 使用MyBatisPlus提供有业务层通用接口(IService)与业务层通用实现类(ServiceImpl<M,T>)(M为dao层对应的接口,T为实体类)
  • 在通用类基础上功能重载或功能追加
  • 注意重载时不要覆盖原始操作,避免原始提供的功能丢失

接口下

package com.service;

import com.baomidou.mybatisplus.extension.service.IService;
import com.pojo.Person;

public interface PersonService extends IService {
}

实现类

package com.service.impl;

import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.dao.PersonDao;
import com.pojo.Person;
import com.service.PersonService;
import org.springframework.stereotype.Component;
import org.springframework.stereotype.Service;

@Service
public class PersonServiceImpl extends ServiceImpl<PersonDao, Person> implements PersonService {
}

测试下

@SpringBootTest
public class PersonServiceTest {
@Autowired
private PersonService personService;

@Test
void deleteByID(){
personService.removeById(1);
}

@Test
void testAll(){
personService.list();
}

}

最后

分享一些系统的面试题,大家可以拿去刷一刷,准备面试涨薪。

这些面试题相对应的技术点:

  • JVM
  • MySQL
  • Mybatis
  • MongoDB
  • Redis
  • Spring
  • Spring boot
  • Spring cloud
  • Kafka
  • RabbitMQ
  • Nginx

大类就是:

  • Java基础
  • 数据结构与算法
  • 并发编程
  • 数据库
  • 设计模式
  • 微服务
  • 消息中间件

程序员,每个月给你发多少工资,你才会想老板想的事?

程序员,每个月给你发多少工资,你才会想老板想的事?

程序员,每个月给你发多少工资,你才会想老板想的事?

程序员,每个月给你发多少工资,你才会想老板想的事?

程序员,每个月给你发多少工资,你才会想老板想的事?

程序员,每个月给你发多少工资,你才会想老板想的事?

程序员,每个月给你发多少工资,你才会想老板想的事?

程序员,每个月给你发多少工资,你才会想老板想的事?

程序员,每个月给你发多少工资,你才会想老板想的事?

网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。

需要这份系统化的资料的朋友,可以添加V获取:vip1024b (备注Java)
img

一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!

图片转存中…(img-QczzHMuz-1713652314694)]

[外链图片转存中…(img-SnKZOLKt-1713652314694)]

[外链图片转存中…(img-WNyBFbLH-1713652314695)]

[外链图片转存中…(img-gRa4BMoK-1713652314695)]

[外链图片转存中…(img-Z3PdJzuy-1713652314696)]

[外链图片转存中…(img-aGSd23jz-1713652314696)]

[外链图片转存中…(img-qp7Ldnvh-1713652314697)]

网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。

需要这份系统化的资料的朋友,可以添加V获取:vip1024b (备注Java)
[外链图片转存中…(img-HIJ3pEQr-1713652314697)]

一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!

  • 16
    点赞
  • 24
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值