(九)Spring Boot整合通用Mapper
阿新 • • 發佈:2021-08-20
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