SpringBoot自学第9天——Mybatis plus的整合与使用

上一章

SpringBoot自学第8天——文件上传、异常处理、Druid数据源



前言

(考科二耽搁了。昨天练一天车今天上午考试,好在是满分一把过)
今天还是把知识捡起来,自学之路不能断。

今天学习了一下mybatis-plus的整合(中国人编写的框架),百度里好像没多少人用原生mybatis,还有蛮多人推荐用fluent mybatis,所以我决定还是用mybatis-plus,(mybatis就不整合了,脑子里只留了个印象),毕竟资料摆在这儿,以后有机会再看看fluent mybatis。

(再次声明,这是根据雷神的教程编写的学习文章,视频链接在前面章节有,没看视频就会觉得文章很不完整,我这里基本只是个目录,写个基本流程,方便日后查找资料而已)


一、整合Mybatis-plus

1. 添加依赖

<dependency>
	<groupId>com.baomidou</groupId>
	<artifactId>mybatis-plus-boot-starter</artifactId>
	<version>3.4.3</version>
</dependency>

2. 安装MybatisX插件 并重启IDEA

在这里插入图片描述

二、创建数据库,使用Mybatis

1. 创建数据库表,并添加数据

我这里在MySQL8.0版本中 创建了一个名为eb的数据库,其中有一个user表。注意MySQL8版本连接的URL,我之前的项目URL写错了。(那时候没用到数据库,只整合了druid,所以没发现错误)
MySql 8版本写法:jdbc:mysql://localhost:3306/DatabaseName?SSL=false&allowPublicKeyRetrieval=true&serverTimezone=UTC

在这里插入图片描述

2. 写一个po文件夹内的bean类对应表结构

代码如下(示例):

//注解来对应表名称(如果类名与表明相同就不用写,比如这里就可以不用写)
@TableName("user")
@AllArgsConstructor
@NoArgsConstructor
@Data
public class User {

	//当主键名id名不为'id'时,需要用注解来标明这是一个主键id
    @TableId	
    Integer uid;
    String user;
    String pass;
}

3. 写一个mapper文件夹下的数据库映射接口类

直接继承mybatis plus的一个基类,这个基类拥有者基本的查询实现,比如一些简单的增删改查。
在这里插入图片描述

4. 写一个测试函数,来使用mapper

保证表内有数据

@Autowired
UserMapper mapper;

@Test
void userMapperTest(){
	log.info("\nUser"+mapper.selectById(2));
}

运行结果:
在这里插入图片描述


三、封装成service层,开始正式使用

1. 创建service文件夹,创建一个UserService接口类继承于Mybatis plus自带的service接口IService<T>

public interface UserService extends IService<User> {
	//写两个接口,只是为了自定义名称,这两个实现已经被mybatis plus完成了
	User getUserById(Integer id);
	
	List<User> getAllUsers();
	
}

2. 实现接口 继承于mybatis plus已经实现的类ServiceImpl<UserMapper,User> (这个是真的牛)

记得加@Service注解
在这里插入图片描述

@Service
public class UserServiceImpl extends ServiceImpl<UserMapper,User> implements UserService {
    @Autowired
    UserMapper userMapper;

    @Override
    public User getUserById(Integer id) {

        //return userMapper.selectById(id); 都可以

        return this.getById(id);
    }

    @Override
    public List<User> getAllUsers() {
        return this.list();
    }


}

3. 编写TableController,添加一个页面的映射,来请求数据库的内容

@Controller
public class TableController {
    @Resource
    UserService userService;
    
    @GetMapping("/dynamic_table.html")
    public String dynamic_table(Model model){
    
        model.addAttribute("userList",userService.getAllUsers());
        
        return "table/dynamic_table";
    }
}

html网页截取(thymeleaf语法,获取userList的内容):

<table class="display table table-bordered" id="hidden-table-info">
    <thead>
    <tr>
        <th> User  ID </th>
        <th> UserName </th>
        <th class="hidden-phone"> Password </th>
    </tr>
    </thead>
    <tbody>
    <tr class="gradeX" th:each="user,status:${userList}">
        <td th:text="${status.count}"></td>
        <td th:text="${user.user}"></td>
        <td th:text="${user.pass}"></td>
    </tr>
    </tbody>
</table>

运行截图:

在这里插入图片描述

mybatis plus分页配置

添加config类:

@Configuration
public class MyConfig implements WebMvcConfigurer {

    /**
     * Mybatis plus分页配置 只要配置这一个bean就可以了
     */
    @Bean
    public MybatisPlusInterceptor mybatisPlusInterceptor() {
        MybatisPlusInterceptor interceptor = new MybatisPlusInterceptor();
        //分页查询配置成MySQL数据库语法
        PaginationInnerInterceptor paginationInnerInterceptor = new PaginationInnerInterceptor(DbType.MYSQL);
        //设置请求的页面大于最大页后操作, true调回到首页,false 继续请求  默认false
        paginationInnerInterceptor.setOverflow(true);
        //设置最大查询限制
        //paginationInnerInterceptor.setMaxLimit();
		interceptor.addInnerInterceptor(paginationInnerInterceptor);
        return interceptor;
    }
}

分页的使用

@GetMapping("/dynamic_table.html")
public String dynamic_table(@RequestParam(value = "page",defaultValue = "1") Integer page,
                            @RequestParam(value = "limit",defaultValue = "5") Integer limit,
                            Model model){
    //这一句是上一步骤中测试userService的语句
    model.addAttribute("userList",userService.getAllUsers());
	
	//新建一个Page对象,第一个参数:查询第几页 第二个参数:每页的数据条数
    Page<User> userPage = new Page<>(page, limit);
    //用userService调用page()函数就可以查询某页的数据
    Page<User> pages = userService.page(userPage, null);
    //把数据放入request域,以便用EL表达式取值
    model.addAttribute("page",pages);
    return "table/dynamic_table";
}

运行结果:
在这里插入图片描述
需要一些前端知识,项目已踩完视频的坑。

总结

测试项目gitee源码地址:SpringBoot自学第9天——Mybatis plus的整合与使用

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值