1. 程式人生 > 其它 >(九)Spring Boot整合通用Mapper

(九)Spring Boot整合通用Mapper

Spring Boot整合通用Mapper

目標:配置通用Mapper元件到Spring Boot專案中並使用Mapper介面

分析:
通用Mapper :可以實現自動拼接sql語句;所有的mapper都不需要編寫任何方法也就是不用編寫sql語句。可以提高開發效率。

1.新增啟動器依賴;

<!--        通用mapper-->
        <dependency>
            <groupId>tk.mybatis</groupId>
            <artifactId>mapper-spring-boot-starter</artifactId>
            <version>2.1.5</version>
        </dependency>
    </dependencies>

2.改造UserMapper繼承Mapper ;

package com.test.mapper;
import com.test.been.User;
import tk.mybatis.mapper.common.Mapper;
//@Mapper
public interface UserMapper extends Mapper<User> {
}

3.修改啟動引導類Application中的Mapper掃描註解;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import tk.mybatis.spring.annotation.MapperScan;
@SpringBootApplication
@MapperScan("com.test.mapper")
public class Applicaton {
    public static void main(String[] args) {
        SpringApplication.run(Applicaton.class,args);
    }
}

4.修改User實體類新增jpa註解;

package com.test.been;
import lombok.Data;
import tk.mybatis.mapper.annotation.KeySql;
import javax.persistence.Id;
import javax.persistence.Table;
import java.util.Date;
@Data
//user為表的名稱
@Table(name="user")
public class User {
    @Id
    //主鍵回填
    @KeySql(useGeneratedKeys = true)
    private int id;
    private String username;
    private String password;
    private String name;
    private int age;
    private Date createTime;
    private Date modifyTime;
    private int isDelete;
    private String permission;
}

5.改造UserService實現業務功能;

package com.test.service;
import com.test.been.User;
import com.test.mapper.UserMapper;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import javax.annotation.Resource;
@Service
public class UserService {
    @Resource
    private UserMapper userMapper;
    //根據id查詢
    public User queryById(int id){
        return userMapper.selectByPrimaryKey(id);//改動
    }
    //儲存使用者方法
    //跟事物相關的,全部操作即成功 只要有一個沒成功就回滾
    @Transactional
    public void addUser(User user){
        System.out.println("新增使用者");
        //選擇性新增,如果屬性為空則該屬性不會出現在insert語句上(改動)
        userMapper.insertSelective(user);
    }
}

6.可以訪問處理器對應路徑將資料庫中的資料根據ld查詢

6.1改造HelloController ,注入UserService利用其方法實現查詢;

@RestController
public class HelloController {
    @Autowired
    private UserService userService;
    /*
    * 根據使用者的id查詢使用者
    * @param id 使用者id
    * @return 使用者
    * */
    @GetMapping("/user/{id}")
    @ResponseBody
    public User queryById(@PathVariable int id) {
        return userService.queryById(id);
   	 }
    }

6.2啟動專案進行測試http://localhost/user/使用者id

啟動過程遇到問題:mysql連線不上

解決辦法:

1)檢查 pom.xml依賴 mysql-connector-java和本地的mysql版本是否一致,有時候是配置的依賴版本太低了

<dependency>
    <groupId>mysql</groupId>
    <artifactId>mysql-connector-java</artifactId>
    <version>8.0.26</version>
</dependency>

2)檢查application.yml 資料庫的配置

#啟用配置檔案,需要指定其他配置檔名稱
spring:
  datasource:
    name: test
    driver-class-name: com.mysql.cj.jdbc.Driver
    url: jdbc:mysql://localhost:3307/test?serverTimezone=GMT
    username: root
    password: 123456