(九)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
posted @ 2021-08-20 15:56  只要不兔的学习笔记  阅读(712)  评论(0)    收藏  举报