Spring Boot 中快速集成mybatis(xml)
环境要求
- java8 以上
- idea ultimate(加装lombok插件)
- mysql(或者其他数据库)
项目建立
通过idea的spring boot initialazr 创建一个项目,引入以下的包
- spring web
- mysql
- mybatis
- thymeleaf(可有可无)
- jdbc
- lombok
目录结构
新建项目com.example.demo,在demo路径下创建基本的package
├── java
│ └── com
│ └── example
│ └── demo
│ ├── config
│ ├── controller
│ ├── DemoApplication.java
│ ├── entity
│ └── mapper
│
└── resources
├── application.properties
├── static
└── templates
└── mybatis
└──mapper
创建数据库数据表
CREATE TABLE user (
id int(11) primary key auto_increment,
username varchar(20) ,
password char(255),
nickname varchar(20),
email varchar(256)
) ENGINE = InnoDB charset = utf8;
insert into user ( username, password, nickname, email)
values ('prh' , '123' , 'ALittleGuy' , 'pan_××@outlook.com');
配置application.properties连接数据库
server.port=8080
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver #数据库驱动
spring.datasource.username=root #用户名
spring.datasource.password=123 #密码
spring.datasource.url=jdbc:mysql://localhost:3306/test #url
创建实体类User
创建User类到entity包中,此处使用lombok简化代码,lombok的使用除了应用lombok的插件以外还需要在idea中加装一个lombok插件,具体使用可以参考
package com.example.demo.entity;
import lombok.Data;
@Data //lombok的注释,@Data即自动添加setter,getter,toString等等,简化代码
public class User {
Integer id;
String username;
String password;
String email;
String nickname;
}
创建mapper
创建mapper接口
创建mapper,mapper主要是定义各种curd操作的接口
@Mapper
public interface UserMapper {
User getById(Integer id);
}
配置mybatis
修改application.propertities,加入mybatis的配置,下面给出mapper文件路径的配置,mybatis还有配置选项,详情可以查看
server.port=8080
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
spring.datasource.username=root
spring.datasource.password=1754492877
spring.datasource.url=jdbc:mysql://localhost:3306/software_arch
mybatis.mapper-locations=classpath:mybatis/mapper/UserMapper.xml #配置mapper映射文件的路径
创建映射文件
创建UserMapper.xml到resource/mybatis/mapper中,映射文件用于定义上述mapper接口的具体sql操作,其中涉及到自定义的类需要写全类名
<?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.example.demo.mapper.UserMapper">
<select id="getById" parameterType="Integer" resultType="com.example.demo.entity.User">
SELECT * FROM user WHERE id = #{id}
</select>
</mapper>
创建Controller
@Controller
public class Index {
@Autowired
private UserMapper userMapper;
@RequestMapping(value = "/user/{id}" )
@ResponseBody
public String user(@PathVariable Integer id){
return userMapper.getById(id).toString();
}
}
运行测试
使用浏览器或则curl输入 127.0.0.1:8080/user/1
返回值应该为:
User(id=1, username=prh, password=123, email=pan_××@outlook.com, nickname=ALittleGuy)