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);
}
}