数据库使用 Mysql
准备数据库
- 新建数据库:mydb
- 新建数据表:t_user,结构如下:
添加依赖
<!-- mybatis依赖 -->
<dependency>
<groupId>org.mybatis.spring.boot</groupId>
<artifactId>mybatis-spring-boot-starter</artifactId>
<version>2.1.1</version>
</dependency>
<!-- mysql依赖 -->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<scope>runtime</scope>
</dependency>
配置文件
这里使用 application.properties 文件。
<!--serverTimezone=UTC用于解决db和本地时间不匹配的问题-->
spring.datasource.url=jdbc:mysql://localhost:3306/mydb?serverTimezone=UTC
spring.datasource.username=root
spring.datasource.password=123456
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
<!--解决中文乱码问题-->
spring.http.encoding.charset=utf-8
spring.http.encoding.enabled=true
spring.http.encoding.force=true
server.tomcat.uri-encoding=UTF-8
<!--配置sq mapper xml文件的路径-->
mybatis.mapper-locations=classpath:mappers/*.xml
<!--配置PO文件的全路径,为了在sql mapper xml文件中直接使用PO类,不需要写包名-->
mybatis.type-aliases-package=com.example.demomybatisspringboot.entity
备注:
mybatis.mapper-locations=classpath:mappers/*.xml
mybatis.type-aliases-package=com.example.demomybatisspringboot.entity
这两个路径,可以最后的项目结构截图
编写PO
package com.example.demomybatisspringboot.entity;
import lombok.Data;
@Data
public class UserPO
{
private String id;
private String code;
private String name;
}
//没什么特殊的,注意该package必须匹配配置文件中的mybatis.type-aliases-package节点
编写Dao
package com.example.demomybatisspringboot.dao;
import com.example.demomybatisspringboot.entity.UserPO;
import org.apache.ibatis.annotations.Mapper;
@Mapper
public interface UserDao
{
UserPO getUser(String id);
}
- 注意添加注解@Mapper,Spring Boot会发现该注解,并根据包名去匹配sql xml mapper中的sql
- 另外接口名 getUser必须和sql xml mapper中<select id=“getUser" …一致
- package必须和sql xml mapper中的namespace一致
编写sql xml mapper
<mapper namespace="com.example.demomybatisspringboot.dao.UserDao">
<select id="getUser" parameterType="String" resultType="UserPO">
select * from t_user where id=#{id}
</select>
</mapper>
注意上节说明的那几点即可。
最后编写Controller
@RestController
public class UserController
{
private UserDao userDao;
public UserController(UserDao dao) {
userDao = dao;
}
@GetMapping("/info")
UserPO getInfo() {
UserPO po= userDao.getUser("1");
return po;
}
}