Spring+MyBatis组合的几种实现方式(三)使用MyBatis-Spring-Boot-Starter

1、什么是MyBatis-Spring-Boot-Starter

前面我们学习了原生MyBatis、MyBatis-Spring两种方式在你的项目中使用MyBatis的方式,可以发现原生MyBatis使用起来还是比较麻烦的,需要在代码中通过操作SqlSession、SqlSessionFactory两个类才能完成sql操作,在MyBatis-Spring中把SqlSession和SqlSessionFactory封装到了Bean中,通过xml或注解对Bean进行配置就可以使用,减少了应用代码中的实现代码。

对于我们习惯习惯使用Spring Boot自动配置的程序员来说,MyBatis-Spring使用起来还是不够方便,于是便产生了MyBatis-Spring-Boot-Starter,通过MyBatis-Spring-Boot-Starter我们可以使用Spring Boot的自动配置功能,使我们在使用时可以完全不必关心MyBatis的底层操作。

使用MyBatis-Spring-Boot-Starter的优势:

  • 轻松创建独立运行的程序
  • 几乎不需要模板配置
  • 更少的XML配置

目前使用最多的也是MyBatis-Spring-Boot-Starter。
点击查看官方文档

另外使用方式参考:

  • 原生MyBatis
  • MyBatis-Spring

2、使用方法

点击下载github源代码

POM中添加依赖

<dependency>
    <groupId>org.mybatis.spring.bootgroupId>
    <artifactId>mybatis-spring-boot-starterartifactId>
    <version>2.1.1version>
dependency>

Spring数据源配置

spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
spring.datasource.url=jdbc:mysql://127.0.0.1/learnDB?useUnicode=true&characterEncoding=utf-8&useSSL=false
spring.datasource.username=root
spring.datasource.password=my2020

Controller编写

package com.reeson.learn.demo.controller;

import com.reeson.learn.demo.entity.User;
import com.reeson.learn.demo.mapper.UserMapper;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

import java.util.List;

@RestController
public class UserController {
	
	@Autowired
	private UserMapper userMapper;
	
	@RequestMapping("/getUsers")
	public List<User> getUsers() {
		List<User> users=userMapper.getAll();
		System.out.println(users);
		return users;
	}
	
    @RequestMapping("/getUser")
    public User getUser(int id) {
    	User user=userMapper.getOne(id);
        return user;
    }
    
    @RequestMapping("/add")
    public void save(User user) {
    	userMapper.insert(user);
    }
    
    @RequestMapping(value="update")
    public void update(User user) {
    	userMapper.update(user);
    }
    
    @RequestMapping(value="/delete/{id}")
    public void delete(@PathVariable("id") int id) {
    	userMapper.delete(id);
    }
}

Mapper编写

这里可以使用@Mapper注解,也可以在SpringBootApplication中使用@ScanMapper(包名),将Mapper注册到Spring中,否则Spring会报找不到Mapper的错误。

package com.reeson.learn.demo.mapper;

import com.reeson.learn.demo.entity.User;
import org.apache.ibatis.annotations.*;
import org.springframework.stereotype.Component;

import java.util.List;
@Mapper
public interface UserMapper {
    @Select("SELECT * FROM users")
    @Results({
            @Result(property = "age",  column = "age"),
            @Result(property = "name", column = "name"),
            @Result(property = "id", column = "id")
    })
    List<User> getAll();

    @Select("SELECT * FROM users WHERE id = #{id}")
    User getOne(int id);

    @Insert("INSERT INTO users(id,name,age) VALUES(#{id}, #{name}, #{age})")
    int insert(User user);

    @Update("UPDATE users SET name=#{name},age=#{age} WHERE id =#{id}")
    int update(User user);

    @Delete("DELETE FROM users WHERE id =#{id}")
    int delete(int id);

}

主程序入口

package com.reeson.learn.demo;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;

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

启动应用程序

启动Spring Boot Web服务,在浏览器中访问

http://localhost:8080/getUsers

即可查询到数据库中的用户数据,通过MyBatis-Spring-Boot-Starter实现了在我们的Spring项目中集成MyBatis的工作。

你可能感兴趣的:(Spring,Mysql,Java8)