maven创建依赖:

<!-- https://mvnrepository.com/artifact/org.mybatis/mybatis -->
		<dependency>
			<groupId>org.mybatis</groupId>
			<artifactId>mybatis</artifactId>
			<version>3.4.5</version>
		</dependency>
		<!-- https://mvnrepository.com/artifact/org.mybatis/mybatis-spring -->
		<dependency>
			<groupId>org.mybatis</groupId>
			<artifactId>mybatis-spring</artifactId>
			<version>1.3.1</version>
		</dependency>
		<!-- https://mvnrepository.com/artifact/org.mybatis.spring.boot/mybatis-spring-boot-starter -->
		<dependency>
			<groupId>org.mybatis.spring.boot</groupId>
			<artifactId>mybatis-spring-boot-starter</artifactId>
			<version>1.3.1</version>
		</dependency>
		<!-- https://mvnrepository.com/artifact/mysql/mysql-connector-java -->
		<dependency>
			<groupId>mysql</groupId>
			<artifactId>mysql-connector-java</artifactId>
			<version>5.1.39</version>
		</dependency>

上面的包,如果过时了大家可以去maven仓库下载最新的,这里只提供参考。

mybatis框架在应用中既然负责持久层,负责数据的肯定要有相关的数据库包依赖,所以我用的是mysql依赖。

之后,我在application.yml中设置数据库相关信息。

spring:
  datasource:
    url: jdbc:mysql://127.0.0.1:3306/test1?useUnicode=true&characterEncoding=utf8
    username: root
    password: 123456
    driver-class-name: com.mysql.jdbc.Driver

这个基本上改用户名和密码就好了。

然后创建数据库。

再然后开始创建控制层,业务层,数据操作层。下面贴出来的代码没有按思路来贴。我说明一下:

model肯定是要先创建的,为什么?当然是你要操作数据就要先创建这个啊,没有为什么。

一般先创建接口(Dao),然后创建service(实现接口,这里用注解实现sql对数据库操作,当然前提是你得数据库连接上了),

最后,你就可以用Controller调用接口了。

这个过程中为什么要用一个接口来转接呢?这里就涉及到了spring的控制反转。

控制反转(Inversion of Control,英文缩写为IoC)是框架的重要特征,如果程序员清楚框架和工具箱的差别,可以无视本术语。

下面这段话,我是复述的,其实我原本理解的控制反转非常的浅显,浅显到我基本没理解它,一个资深老程序员告诉我:“控制反转涉及到以前的开发,以前是由控制层(Controller)直接控制业务逻辑层(Service),现在翻转过来,由业务逻辑层控制控制层。怎么控制?就通过那个接口,通过那个接口我更改Service就不会影响到Controller的报错(因为两个毫不相干的人,只是都认识同一个人,怎么会影响到呢?你和一个你不认识的人去同一个奶茶店喝饮料,他和你有关吗?但是你都认识哪家奶茶店的老板,你想认识他,你可以通过老板去联系,但是又如何呢?)。以前,Controller控制Service,是通过类控制方法,现在Controller调用接口,与Service并没有太多的关联。而Service实现接口。接口有的方法Service必须有,Controller也才能调用。”

model

public class User {

	String id;
	String name;

	public String getId() {
		return id;
	}

	public void setId(String id) {
		this.id = id;
	}

	public String getName() {
		return name;
	}

	public void setName(String name) {
		this.name = name;
	}


}



Controller

import java.util.List;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

import com.zyd.model.User;
import com.zyd.service.UserService;

@RestController
@RequestMapping("/demo")
public class UserController {
	@Autowired
	private UserService userservice;
	
	@GetMapping("/select")
	public List<User> selectuser() {
		return userservice.selectuser();
	}
	@PostMapping("/insert")
	public void insertuser(@RequestBody List<User> list) {
		for (User user : list) {
			System.out.println(user.getName());
			userservice.insertuser(user);
			System.out.println(user.getName());
		}
	}
}

Dao

import java.util.List;

import org.apache.ibatis.annotations.Insert;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Select;

import com.zyd.model.User;

@Mapper
public interface UserDao {
	@Select("select * from user")
	List<User> selectuser();
	@Insert("insert into user (id, name) values (#{id}, #{name})")
	void insertuser(User u);
}

Service

import java.util.List;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import com.zyd.dao.UserDao;
import com.zyd.model.User;

@Service
public class UserService implements UserDao{
	@Autowired
	private UserDao userdao;
	
	public List<User> selectuser() {
		return userdao.selectuser();
	}

	@Override
	public void insertuser(User u) {
		userdao.insertuser(u);
	}
	
}