1. 程式人生 > >sprngboot整合Mybatis(註解開發)

sprngboot整合Mybatis(註解開發)

官方說明MyBatis-Spring-Boot-Starter will help you use MyBatis with Spring Boot

其實就是myBatis看spring boot這麼火熱,為了迎合springboot也開發出一套解決方案來湊湊熱鬧, mybatis-spring-boot-starter,這個jar包含了mybatis核心包以及mybatis自動配置類。

開發步驟

1:pom依賴

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

<!-- mybatis-起步依賴 -->

<dependency>

<groupId>org.mybatis.spring.boot</groupId>

<artifactId>mybatis-spring-boot-starter</artifactId>

<version>1.3.1</version

>

</dependency>

<dependency>

<groupId>org.springframework.boot</groupId>

<artifactId>spring-boot-starter-web</artifactId>

</dependency>

<!-- druid 起步依賴 -->

<dependency>

<groupId>com.alibaba</groupId

>

<artifactId>druid-spring-boot-starter</artifactId>

<version>1.1.6</version>

</dependency>

<!-- mysql資料庫驅動 -->

<dependency>

<groupId>mysql</groupId>

<artifactId>mysql-connector-java</artifactId>

<scope>runtime</scope>

</dependency>    

注意:當你做了pom依賴就立馬啟動工程,那麼啟動會報錯,為什麼呢?因為Mybatis-springboot-starter在自動化配置的時候,需要使用到datasource,但是容器中還沒有datasource(因為你都沒告訴springboot你的資料庫資訊)所以第二步就是配置資料庫資訊

2:配置資料庫資訊

1

2

3

4

5

#jdbc配置

spring.datasource.druid.url=jdbc:mysql://localhost:3306/mybatis?useUnicode=true&characterEncoding=utf-8

spring.datasource.druid.username=root

spring.datasource.druid.password=root

spring.datasource.druid.driver-class-name=com.mysql.jdbc.Driver

3:功能開發

功能一:根據使用者id查詢使用者資訊

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

68

69

package com.wendao.demo.pojo;

import java.util.Date;

import java.util.List;

public class User {

private Integer id;

private String username;

private Date birthday;

private String sex;

private String address;

private List<Orders> orders;

public List<Orders> getOrders() {

return orders;

}

public void setOrders(List<Orders> orders) {

this.orders = orders;

}

public Integer getId() {

return id;

}

public void setId(Integer id) {

this.id = id;

}

public String getUsername() {

return username;

}

public void setUsername(String username) {

this.username = username == null null : username.trim();

}

public Date getBirthday() {

return birthday;

}

public void setBirthday(Date birthday) {

this.birthday = birthday;

}

public String getSex() {

return sex;

}

public void setSex(String sex) {

this.sex = sex == null null : sex.trim();

}

public String getAddress() {

return address;

}

public void setAddress(String address) {

this.address = address == null null : address.trim();

}

}

mapper介面

1

2

3

4

5

6

7

8

9

10

11

package com.wendao.demo.mapper;

import org.apache.ibatis.annotations.Select;

import com.wendao.demo.pojo.User;

import scala.annotation.meta.param;

public interface UserMapper {

@Select("select * from user where id=#{id}")

public User getUserById(int id);

}  

測試:

1

2

3

4

5

6

7

8

9

10

11

12

13

14

@RunWith(SpringRunner.class)

@SpringBootTest

public class Springboot03MybatisApplicationTests {

@Autowired

private UserMapper userMapper;

@Test

public void contextLoads() {

System.out.println(userMapper.getUserById(22).getUsername());

}

}

測試結果報錯,報錯的原因是容器中沒有userMapper物件,因為你只寫了介面但是沒掃描,掃描方式兩種

1:全域性掃描,在引導類加上@MapperScan註解

2018-03-04_130243.png

2:逐個掃描

2018-03-04_130343.png

注意,如果資料庫欄位和屬性名不一致,需手動對映

1

2

3

4

5

@Results({  

@Result(id=true,property="id",column="id"),  

@Result(property="name",column="name1"),  

@Result(property="age",column="age1")  

})

功能2:新增使用者

1

2

@Insert("insert into user (username,sex)values(#{username},#{sex})")

public void addUser(@Param("username")String username,@Param("sex")char sex);

功能3:新增使用者

1

2

@Insert("insert into user (username,sex)values(#{username},#{sex})")

public void addUser1(User user);

功能4:更新使用者

1

2

@Update("update user set username=#{username} where id=#{id}")

public void updateUser(@Param("username")String username,@Param("id")int id);

功能5:刪除使用者

1

2

@Delete("delete from user where id=#{id}")

public void deleteById(int id);

功能6:新增使用者成功後返回主鍵

1

2

3

@Insert("insert into user (username,sex)values(#{username},#{sex})")

@Options(useGeneratedKeys = true, keyProperty = "id")

public void addUser3(User user);