栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

SpringBoot整合Mybatis,详细过程

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

SpringBoot整合Mybatis,详细过程

之前搭传统的ssm框架,配置文件很多,看了几天文档才把那些xml的逻辑关系搞得七七八八,搭起来也是很麻烦,那时我完全按网上那个demo的版本要求(jdk和tomcat),所以最后是各种问题没成功跑起来。今天尝试用springboot框架来整合,不敢相信才失败几次就成功了!!

现在来记录一下过程: 添加POM依赖:
  
            org.springframework.boot  
            spring-boot-starter-thymeleaf  
     
        
      
            mysql  
            mysql-connector-java  
      
        
      
            org.mybatis.spring.boot  
            mybatis-spring-boot-starter  
            1.3.0  
    

关于dao层的依赖就是后面两个mysql的connector和mybatis的starter(这个可是好东西)

开始写代码:

这里我们有个简单是数据表:

我们的目的是用get发一个带有id值的请求,服务器根据id值返回这个图书管理员的全部信息并用json的方式直接显示在页面上,

Controller:
@RestController
public class LibrarianController {
    
    @Autowired
    private LibrarianService librarianService;
    
    @GetMapping("/getLibrarian")
    public Librarian getALibrarianInfo(int id) {
        //System.out.println("test :id: "+id);
        return librarianService.selectLibrarian(id);
    }
}

RestController是responsebody+Controller两个注解的合体,一般就拿来直接传json数据。为什么可以直接传个对象过去呢?这是因为springboot内置了jackson模块,可以在maven的依赖下看到这方面的jar包(之前我写是按网上的教程用gson来处理的,比起来这个简直无敌)

然后看到我们注入的sevice,下面是service

Service:
public interface LibrarianService {
    Librarian selectLibrarian(int id);
}

就是个接口

ServiceImpl:
@Service
public class LibrarianServiceImpl implements LibrarianService{
    
    @Autowired
    private LibrarianMapper librarianMapper;
    
    @Override
    public Librarian selectLibrarian(int id) {
        // TODO Auto-generated method stub
        return librarianMapper.selectLibrarian(id);
    }
}

这里记得要加 Service备注,才会被spring生成bean然后注入到controller那里去。

然后看到这里注入了个mapper

Dao:
package com.example.dao;


import org.apache.ibatis.annotations.Mapper;

import com.example.entity.Librarian;

@Mapper
public interface LibrarianMapper {
    Librarian selectLibrarian(int id);
}

这里加的 Mapper是MyBatis的备注,目的是为了让spring能够根据xml和这个接口动态生成这个接口的实现。如果是加 Repository,就是spring生成一个bean,自动注入service的相关引用中。

然后是Mapper的xml文件(我的MyBatis的相关sql用的是xml)

mapper.xml:




    
    

        
        
        
        
        
        
    
    
    

    
    
    

第三行的namespace很重要噢,它是指定这个xml所对应的是哪个dao(mapper)接口

resultMap是做个pojo和数据库表的对应(这里只写个Librarian不用写全路径是因为做了设置,下面会说)

select标签的id对应的就是mapper接口中的方法名,parameterType就是传进来的参数类型

简单的配置与设置:

好现在讲讲设置,这里会想到,那些Controller啊, Service啊还有MyBatis的注解 Mapper什么的spring怎么知道在哪呢?不用像mvc那样搞个扫描设置吗?

是的要的,这些我们在启动类做了简单的设置:

package com.example.main;

import org.mybatis.spring.annotation.MapperScan;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;




@SpringBootApplication(scanbasePackages={"com.example.*"})
@MapperScan("com.example.dao")
public class SpringBootDemoApplication {

    public static void main(String[] args) {
        SpringApplication.run(SpringBootDemoApplication.class, args);
    }
}

关于这个SpringBootApplication,它其实是好几个注解的合体,所以可以直接在这写扫包的设置,然后那个 MapperScan是MyBatis提供的设置注解。

然后还有点配置文件:

spring.thymeleaf.cache=false        
spring.devtools.restart.enabled=true   
spring.devtools.restart.additional-paths=src/main/java  

spring.datasource.driver-class-name=com.mysql.jdbc.Driver
spring.datasource.url=jdbc:mysql://localhost:3306/db_library
spring.datasource.username=root
spring.datasource.password=4008

mybatis.type-aliases-package=com.example.entity
mybatis.mapperLocations=classpath:mappers/*.xml

主要有关的是第四行开始的,最后两行一个是设置基本包(包别名)也就是为什么在mapper.xml中可以只写一个Librarian的原因。

最后一行的很重要,是告诉系统在哪里去找mapper.xml文件。

上一个最后的效果图:

再放一个项目结构图:

以上就是springboot整合mybatis的过程,希望对大家有帮助,这里也推荐一套sspringboot的学习教程,新手小白们可以直接观看,讲的非常详细而且很全,来自动力节点

动力节点SpringBoot入门教程

https://www.bilibili.com/video/BV1pK411G7aw

SpringBoot教程资料下载

http://www.bjpowernode.com/?csdn

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/583473.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号