前言
- 整合springboot和mybatis仅仅为了学习和简单的使用
导入依赖
- 在
pom.xml
中引入依赖,如下:1
2
3
4
5
6<!--引入mybatis,因为带有JDBC所以不需要引入JDBC了-->
<dependency>
<groupId>org.mybatis.spring.boot</groupId>
<artifactId>mybatis-spring-boot-starter</artifactId>
<version>1.2.0</version>
</dependency>
实体类
- 这里实体类,我是用的测试JPA时的实体类,也可以按照平常的写法,先private字段,在get,set也可以
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
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68package com.example.demo.model;
import javax.persistence.*;
import java.io.Serializable;
"user") (name=
public class SystemUser implements Serializable{
//id自增 (strategy = GenerationType.IDENTITY)
"id") (name =
private Integer id;
"user_name") (name=
private String name;
"user_password") (name=
private String password;
public SystemUser(String name, String password, Integer id) {
this.name = name;
this.password = password;
this.id = id;
}
public SystemUser(String name, String password) {
this.name = name;
this.password = password;
}
public String toString() {
return "SystemUser{" +
"id=" + id +
", name='" + name + '\'' +
", password='" + password + '\'' +
'}';
}
public SystemUser() {
}
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 getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
}
编写Dao层
1 | package com.example.mybatisDeno.mapper; |
@Mapper
将UserDao声明为一个Mapper接口@Results
字段与数据库的映射列表@Result
进行详细的映射,其中property是User类的属性名,colomn是数据库表的字段名@Select
写入查询@Update
写入更新语句@Delete
写入删除语句@Insert
写入插入语句@Options
设置主键,其中useGeneratedKeys是使用主键,keyProperty实体类中主键的名字,keyColumn数据库中主键的名字
编写service层
- 如下;
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
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56package com.example.mybatisDeno.service;
import com.example.demo.model.SystemUser;
import com.example.mybatisDeno.mapper.UserDao;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.List;
/**
* 创建时间:2017/12/22 0022
* 创建人:lq
*/
public class UserService {
private UserDao userDao;
/**
* 根据name查询
* @param name
* @return
*/
public List<SystemUser> get(String name){
return userDao.get(name);
}
/**
* 增加
* @param name,password
* @return
*/
public Integer add(String name, String password){
SystemUser user = new SystemUser(name,password);
return userDao.add(user);
}
/**
* 删除
* @param id
* @return
*/
public Long delete(Integer id){
return userDao.delete(id);
}
/**
* 修改
* @param name,password
* @return
*/
public Long update(String name, String password, Integer id){
SystemUser user = new SystemUser(name, password, id);
return userDao.update(user);
}
}
编写controller层
1 | package com.example.mybatisDeno.controller; |
总结
- 这里详细说明一下MyBatis注解
使用@Param
如下代码:
1 | "INSERT INTO USER(NAME, AGE) VALUES(#{name}, #{age})") ( |
这种方式很好理解,@Param
中定义的name
对应了SQL中的#{name}
,age
对应了SQL中的#{age}
使用Map
如下代码:
1 | "INSERT INTO USER(NAME, AGE) VALUES(#{name,jdbcType=VARCHAR}, #{age,jdbcType=INTEGER})") ( |
- 对于Insert语句中需要的参数,我们只需要在
map
中填入同名的内容即可,具体如下面代码所示:
1 | Map<String, Object> map = new HashMap<>(); |
使用对象
- 可直接使用普通的Java对象来作为查询条件的传参,比如我们可以直接使用User对象:
1 | "INSERT INTO USER(NAME, AGE) VALUES(#{name}, #{age})") ( |