(九)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

浙公网安备 33010602011771号