SpringBoot>02 - 整合 MyBatis

简介:

目前,国内大部分公司都使用 MyBatis作为持久层框架。本章整合MyBatis,在上一章的基础上进行扩展。废话少说,直接上代码。

pom 主要依赖如下:


    
    
        org.springframework.boot
        spring-boot-starter-web
    
    
    
        org.springframework.boot
        spring-boot-starter-test
        test
    
    
    
       org.mybatis.spring.boot
        mybatis-spring-boot-starter
        1.3.2
    
    
    
        mysql
        mysql-connector-java
        runtime
    
    
    
        com.alibaba
        druid-spring-boot-starter
        1.1.0
    

配置文件:

application.properties( 或 .yml 文件)

 server.context-path=/
 server.port=8080
 # 数据库连接信息
 spring.datasource.url=jdbc:mysql://localhost:3306/springbootdb?useUnicode=true&characterEncoding=utf8
 spring.datasource.username=root
 spring.datasource.password=root
 spring.datasource.driver-class-name=com.mysql.jdbc.Driver
 # 使用druid数据源
 spring.datasource.type=com.alibaba.druid.pool.DruidDataSource

 ## Mybatis 配置
 mybatis.typeAliasesPackage=com.coolron.*.domain
 mybatis.mapperLocations=classpath:mapping/*/*.xml

入口类:

// mapper 接口类扫描包配置
@MapperScan("com.coolron.*.dao")
@SpringBootApplication
public class SpringbootApplication {
    public static void main(String[] args) {
        SpringApplication.run(SpringbootApplication.class, args);
    }
}

@MapperScan 注解:指定 mapper(dao) 接口对应的包位置。若未配置会出现如下异常:

***************************
APPLICATION FAILED TO START
***************************
Description:
Field mapper in com.coolron.user.service.impl.UserServiceImpl required a bean of type 'com.coolron.user.dao.UserMapper' that could not be found.

此处应特别注意入口类 SpringbootApplication 所在包的位置。因为包扫描需要自定义,否则扫描到的只是入口类所在的包,或者入口类所在包的下一级。访问资源报错 404。

方案一:
入口类注解指定包扫面位置:

@SpringBootApplication(scanBasePackages = "com.coolron")

方案二 :
模块入口类放到所有需要扫描到的类的上级包中。

controller测试:

 @RestController
 @RequestMapping(value = "user")
 public class UserController {
 
     @Autowired
     private UserService userService;
 
     /**
      * 通过用户 id 获取用户信息
     * @param id  用户id
     * @return
     */
    @GetMapping(value = "getInfo/{id}")
    public User getInfo(@PathVariable("id") Integer id) {
        return userService.getInfo(id);
    }
}

service(service接口省略):

 @Service
 public class UserServiceImpl implements UserService {
 
     @Autowired
     private UserMapper mapper;
 
     @Override
     public User getInfo(Integer id) {
         return mapper.selectByPrimaryKey(id);
    }
}

mapper 以及mapper.xml :

此处自动生成后截取了一部分

public interface UserMapper {
    User selectByPrimaryKey(Integer id);
}
 
 
 
   
     
     
     
     
     
     
   
   
     id, age, name, password, description, cityId
   
   
 

使用自动生成插件生成(查阅mybatis自动生成代码相关资料)。

项目启动、测试:

同第一章运行入口类 main 函数即可启动。
Get请求可以使用浏览器输入:http://localhost:8080/user/getInfo/3

个人学习分享
更多 springboot、springcloud、docker 文章,关注微信公众号吧:

SpringBoot>02 - 整合 MyBatis_第1张图片
A罗恩和Java

你可能感兴趣的:(SpringBoot>02 - 整合 MyBatis)