1.Mybatis简介
MyBatis 框架是一个持久层框架,它可以让开发者把主要精力放在 SQL 上,通过 Mybatis 提供的映射方式,自由灵活地生成满足需要的 SQL 语句。使用简单的 XML 或注解来配置和映射原生信息,将接口和 Java 的 POJOs 映射成数据库中的记录,在国内使用非常广泛。
2.打开我们上一步创建的项目,来继续操作。
在pom.xml中新增依赖:
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<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>
<scope>runtime</scope>
</dependency>
3. 修改一下配置文件,将自动生成的application.properties文件删除,新建一个application.yml文件,毕竟现在流行.yml文件,这样子我们的项目看着比较高端一些。
pom.xml文件中新增一些配置:
server:
port: 8080
datasource:
url: localhost:3306/yourtable
spring:
datasource: # 数据库配置
driver-class-name: com.mysql.jdbc.Driver
url: jdbc:mysql://${datasource.url}?useSSL=false&useUnicode=true&characterEncoding=utf-8&allowMultiQueries=true&autoReconnect=true&failOverReadOnly=false&maxReconnects=10
username: root
password: password
hikari:
maximum-pool-size: 10 # 最大连接池数
max-lifetime: 1770000
mybatis:
# 指定别名设置的包为所有entity
type-aliases-package: cn.newtips.bootmybatis.entity
configuration:
map-underscore-to-camel-case: true # 驼峰命名规范
mapper-locations: # mapper映射文件位置
- classpath:mapper/*.xml
同时请注意,这里有2个地方用到了文件路径
cn.newtips.bootmybatis.entity 代码里写entity的路径
mapper/*.xml MyBatis映射文件的位置
这些下一步我们来操作。
4. 我们来使用最简单的user表来尝试。在自己的数据库中,新建一个表:
CREATE TABLE `boot_user` (
`id` INT(11) NOT NULL AUTO_INCREMENT,
`user_name` VARCHAR(255) DEFAULT NULL,
`password` VARCHAR(255) DEFAULT NULL,
PRIMARY KEY (`id`)
) ENGINE=INNODB DEFAULT CHARSET=utf8mb4
我这里使用了boot_user这个表名。字段内容很简单:id 、user_name、password三个字段。
5. 接着我们来写代码。我们采用最基本的分层接口来组织代码,于是我们有了
resource下面的mapper文件,用来防止MyBatis的mapper.xml文件,来映射数据库与entity的关系,来定义一些操作方法。
在src下面,我们来建立controller、service、dao、entity来存放我们对应的代码。
entity里是实体,对应着表boot_user,里面的字段一一对应,采用驼峰式编写。
public class BootUser {
private Integer id;
private String userName;
private String password;
//setter getter
}
dao里是一个interface的BootUserMapper.java。方法与resource中的BootUserMapper.xml的id对应。
同时,记得来个注解@Mapper,让程序能顺利找到这个Mapper类。
@Mapper
public interface BootUserMapper {
// 与BootUserMapper.xml中的对应
BootUser getUserByName(String userName);
}
service层里很简单,也是一个方法,记得需要在impl文件夹里去写一个实现啊。
public interface UserService {
BootUser getUserByName(String name);
}
@Service
public class UserServiceImpl implements UserService {
@Resource
private BootUserMapper bootUserMapper;
@Override
public BootUser getUserByName(String name) {
return bootUserMapper.getUserByName(name);
}
}
controller里,写请求接口方法。
@RequestMapping("/getUserByName/{name}")
public BootUser getUserByName(@PathVariable String name){
return userService.getUserByName(name);
}
这样就写完了。整体的项目结构如下:
6,启动本项目的XXXApplication.java中的main方法,顺利启动后,浏览器中请求
http://localhost:8080/getUserByName/tom,就能看到结果了。(tom这条数据,是我提前插入表中的)
好了,第一波配置成功了。接下来,我们进行第二波。