本博客使用IDEA开发工具,通过Maven构建SpringBoot项目,初始化项目添加的依赖有:spring-boot-starter- jdbc、spring-boot-starter-web、mysql-connector- java,这里为了演示整合SpringBoot,初始时只勾选了这几项,其他的启动器根据自己实际项目选择添加,如何使用IDEA构建SpringBoot项目这就不再过多赘述了。
版本:
这里构建项目使用的是SpringBoot自带的Hikari数据源,也可以根据自己项目选择Druid、c3p0等。
如果使用Druid数据源可以参考上一篇博客:SpringBoot学习之整合Druid的简单应用
首先在SpringBoot项目的pom.xml文件中添加 mybatis-spring-boot-starter 依赖
<dependency> <groupId>org.mybatis.spring.boot</groupId> <artifactId>mybatis-spring-boot-starter</artifactId> <version>2.1.3</version> </dependency>
>
Maven仓库地址:https://mvnrepository.com/artifact/org.mybatis.spring.boot/mybatis- spring-boot-starter
配置application.yaml中的数据源,这里使用更加直观的yaml格式文件,也可以使用properties格式文件
spring: datasource: username: root password: 970628 url: jdbc:mysql://localhost:3306/school?serverTimezone=UTC&useUnicode=true&characterEncoding=utf-8 driver-class-name: com.mysql.cj.jdbc.Driver
1.url中在mysql的8版本以上的可能需要设置时区: serverTimezone=UTC 2.driver-class-name 数据库驱动,如果是mysql8版本以上的使用 com.mysql.cj.jdbc.Driver,低版本的使用 com.mysql.jdbc.Driver
这里我使用我自建数据表user来做业务例子
编写user对应的pojo类,包括有参无参构造及Getter、Setter方法
package com.tioxy.pojo; public class User { private Integer id; private String name; private String pwd; public User() { } public User(Integer id, String name, String pwd) { this.id = id; this.name = name; this.pwd = pwd; } public Integer getId() { return id; } public void setId(Integer id) { this.id = id; } public String getName() { return name; } public void setName(String name) { this.name = name; } public String getPwd() { return pwd; } public void setPwd(String pwd) { this.pwd = pwd; } @Override public String toString() { return "User{" + "id=" + id + ", name='" + name + '\'' + ", pwd='" + pwd + '\'' + '}'; } }
这里我使用Mapper.xml编写SQL语句,也可以使用注解方式,两种方式都可以,看个人喜好。我选择xml文件的原因是编写SQL语句灵活、扩展性好,我以xml文件为例
编写UserMapper接口,这里添加了@Mapper则省去写Mapper实现类了
package com.tioxy.mapper; import com.tioxy.pojo.User; import org.apache.ibatis.annotations.Mapper; import org.springframework.stereotype.Repository; import java.util.List; @Mapper @Repository public interface UserMapper { /** * 查询所有的用户 * @return */ List<User> queryUserList(); }
在resources添加了mybatis.mapper包,在mapper下添加UserMapper.xml文件
<?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.tioxy.mapper.UserMapper"> <select id="queryUserList" resultType="User"> select * from user </select> </mapper>
由于这里我们将Mapper接口与Mapper.xml文件放在了不同的包下,需要我们在application.yaml添加Mapper自动扫描包的配置
# 整合Mybatis mybatis: type-aliases-package: com.tioxy.pojo # 原来mapper与mapper.xml在同一路径,现在不在同一路径需要设置下面的参数,目的就是告诉*.xml文件的路径 mapper-locations: classpath:mybatis/mapper/*.xml
完整的配置文件如下图:
如果将Mapper接口与Mapper.xml文件放在了相同的包下,需要在POM.xml文件添加maven配置资源过滤问题
<resources> <resource> <directory>src/main/java</directory> <includes> <include>**/*.xml</include> </includes> <filtering>true</filtering> </resource> </resources>
添加一个控制器请求,进行验证,代码如下:
@RestController public class UserController { @Autowired private UserMapper userMapper; @GetMapping("/queryUserList") public List<User> queryUserList(){ return userMapper.queryUserList(); } }
启动项目运行输入:http://localhost:8080/queryUserList
测试成功!
最后附上我的项目结构
原文链接:https://www.cnblogs.com/tioxy/p/13411078.html