本文讲述Spring Boot如何通过mybatis-spring-boot-starter集成Mybatis,并且在Mapper中如何映射Model属性和表的字段。
下面给出一个简单的示例。
pom.xml
首先要引入mybatis的依赖1
2
3
4
5<dependency>
<groupId>org.mybatis.spring.boot</groupId>
<artifactId>mybatis-spring-boot-starter</artifactId>
<version>1.1.1</version>
</dependency>
table_user
数据库建表1
2
3
4
5
6CREATE TABLE IF NOT EXISTS `tb_user`(
`id` INT(11) NOT NULL,
`name` VARCHAR(100) NOT NULL,
`created_by` VARCHAR(100) NOT NULL,
PRIMARY KEY ( `id` )
)ENGINE=InnoDB DEFAULT CHARSET=utf8;
User
实体类1
2
3
4
5
6
7
8public class User {
private Integer id;
private String name;
private String createdBy;
//省略了setters & getters
}
UserMapper
Mapper接口中可以通过注解的形式直接写sql,比将sql分离到xml中的方式更方便1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
public interface UserMapper {
"select * from tb_user where id = #{id}") (
User selectById(@Param("id") int id);
"select * from tb_user") (
List<User> selectAll();
"insert into tb_user(id, name, created_by) values(#{id}, #{name}, #{createdBy})") (
"user", (id =
value = {
"id",property = "id"), (column =
"name",property = "name"), (column =
"created_by",property = "createdBy") (column =
}
)
//@Options(useGeneratedKeys = true, keyProperty = "id", keyColumn = "id")
void insertUser(User user);
"update tb_user set id = #{id}, name = #{name}, created_by = #{createdBy}") (
"user") (value =
void updateUser(User user);
"delete from tb_user where id = #{id}") (
void deleteById(@Param("id") int id);
}
- @Select, @Insert, @Update, @Delete显然就是sql语句的注解了.
- @Param是根据别名取参数的.
- @Results和@Result配合使用, 就可以将实体类属性和表字段进行一一映射.
- @Results的参数id表示这个映射的别名, 可以配合@ResultMap使用.
- @Result的参数column表示表字段名, property表示实体属性名.
- @Options可以在插入时返回主键值, 在这里没什么用. 一般用于在主键id自增的情况下, 插入操作不定义id, 可以在插入数据库表后返回该条插入信息的主键id.
UserService
1 |
|
UserController
1 |
|