System模块集成Mybatis框架
新建连接
双击可看到里面有多少库,因为使用的是root用户,所以权限比较高。我们可以创建一个专属的数据库。
数据库准备工作1:创建一个本项目独用的数据库icourse
utf8是三字节,支持的字符有限,MySql在5.5.3之后增加了utf8mb4编码,支持更多字符,例如emoji小表情。
用root用户每次都能看到整个库的内容。这是一个不好的操作。我们要创建一个用户,让用户只能看到icourse这个库。
数据库准备工作2:创建icourse数据库专用的用户,名用户可以叫icourse或其他。
点击新建用户
填localhost:表示创建的这个用户,只能本机登录数据库,远程是不能登录的;填%,表示允许本地登录和远程登录数据库。
保存以后
为用户添加全部权限,在实际开发中,我们会创建不同权限的用户,比如只能查询数据,或者只能做增删改查。
确定了以后,会生成sql
GRANT Alter, Alter Routine, Create, Create Routine, Create Temporary Tables, Create View, Delete, Drop, Event, Execute, Grant Option, Index, Insert, Lock Tables, References, Select, Show View, Trigger, Update ON `icourse`.* TO `icourse`@`localhost`;
点击保存以后,数据库和用户就关联起来了。
新建连接,这里的icourse用户名和密码要和刚才新建的用户一致。
数据库准备工作3:创建一张test表
在父模块里添加jar包
<!-- 集成mybatis -->
<dependency>
<groupId>org.mybatis.spring.boot</groupId>
<artifactId>mybatis-spring-boot-starter</artifactId>
<version>1.3.2</version>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>5.1.37</version>
</dependency>
因为父模块已经不是一个springboot项目了,所以把下面这段删了就可以了。
在子模块里添jar包,可以把版本号去掉。
Maven父子模块增加jar包依赖:现在父pom.xml中增加jar包依赖,再在子pom.xml中增加jar包依赖,子pom.xml中不带版本号。
增加数据库连接
# 增加数据库连接
spring.datasource.url=jdbc:mysql://localhost:3306/icourse?characterEncoding=UTF8&autoReconnect=true
spring.datasource.username=icourse
spring.datasource.password=icourse
spring.datasource.driver-class-name=com.mysql.jdbc.Driver
Alt+回车 将icourse保存到字典里,波浪线就无了
eureka和system都启动成功了。
新建一个Test类,Alt+Insert生成getter和setter
package com.dog.system.domain;
public class Test {
private String id;
private 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;
}
}
新建一个TestMapper.xml和TestMapper接口
因为id是list,这个还没有写java代码,所以报了一个红色。
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd" >
<mapper namespace="com.dog.system.mapper.TestMapper" >
<select id="list" resultType="com.dog.system.domain.Test">
select `id`, `name` from `test`
</select>
</mapper>
package com.dog.system.mapper;
import com.dog.system.domain.Test;
import java.util.List;
public interface TestMapper {
public List<Test> list();
}
在接口里写上这个方法,list对应xml里的id。这个时候,xml里list就不再是红色的了。
Free MyBatis plugin 插件会有出现小箭头。从而可以知道数据何去何从。
启动类里加上这个注解,让项目知道哪个接口是mybatis的java代码。
@MapperScan("com.dog.system.mapper")
新建TestService
package com.dog.system.service;
import com.dog.system.domain.Test;
import com.dog.system.mapper.TestMapper;
import org.springframework.stereotype.Service;
import javax.annotation.Resource;
import java.util.List;
@Service
public class TestService {
@Resource
private TestMapper testMapper;
public List<Test> list() {
return testMapper.list();
}
}
更改TestController
package com.dog.system.controller;
import com.dog.system.domain.Test;
import com.dog.system.service.TestService;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import javax.annotation.Resource;
import java.util.List;
@RestController
public class TestController {
@Resource
private TestService testService;
// 返回的是json格式的数据,用RestController
// 返回的是页面,用Controller
@RequestMapping("/test")
public List<Test> test() {
return testService.list();
}
}
配置文件里加上这句
mybatis.mapper-locations=classpath:/mapper/*.xml
然后就可以访问数据库了