SpringBoot项目使用通用Mapper

我们在使用mybatis框架操作数据库的时候,通常是需要在xml映射文件中或者方法上使用注解的格式编写sql语句,需要我们自己手动去编写,当我们使用通用mapper,就不需要我们手动编写sql语句。极其方便的使用mybatis单表的增删查改,可以减少我们的代码量,提高我们的开发效率。通用Mapper可以极大的方便开发人员。可以随意的按照自己的需要选择通用方法。

通用Mapper也有一定的局限性,就是只支持单表操作,不支持多表联合查询。多表联查的复杂的sql语句还是需要自己手动在xml或者注解上编写。

官网:https://mapperhelper.github.io/docs/

引入相关依赖

<!-- JDBC -->
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-jdbc</artifactId>
</dependency>

<!-- MySQL 驱动包-->
<!--MySQL Server 版本为 8.x时,mysql-connector-java使用5.1.35时会报错-->
<dependency>
    <groupId>mysql</groupId>
    <artifactId>mysql-connector-java</artifactId>
    <version>8.0.11</version>
</dependency>

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

application.yml配置文件

server:
  port: 9999

spring:
  datasource:
    #通用配置
    driver-class-name: com.mysql.jdbc.Driver
    password: root
    username: root
    url: jdbc:mysql://localhost:3306/test?serverTimezone=Asia/Shanghai&useUnicode=true&charcterEncoding=UTF-8&useSSL=false
    #数据源连接池配置
    hikari:
      minimum-idle: 10
      maximum-pool-size: 20
      idle-timeout: 500000
      max-lifetime: 540000
      connection-timeout: 60000
      connection-test-query: select 1

# 指定mybatis的配置文件和mapper文件存放地址
mybatis:
  mapper-locations: classpath:mybatis/mapper/*.xml

启动类

@SpringBootApplication
//@MapperScan扫描mybatis所有的业务mapper接口,就不需要在mapper接口上使用@Mapper注解
//注意是tk.mybatis.spring.annotation.MapperScan
@MapperScan("com.harvey.demo.dao.mapper")
public class DemoApp {

    public static void main(String[] args) {
        SpringApplication.run(DemoApp.class, args);
    }
}

注:必须添加@MapperScan,用于扫描Mapper接口,否则不能使用。

实体类、Mapper接口

User.java

@Table(name = "tb_user")
public class User {
    //让通用Mapper在执行 insert 操作之后将数据库自动生成的主键值回写到实体类对象中
    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private Integer id;

    @Column(name = "name")
    private String name;

    @Column(name = "age")
    private Integer age;

    public Integer getId() {
        return id;
    }

    public void setId(Integer id) {
        this.id = id;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public Integer getAge() {
        return age;
    }

    public void setAge(Integer age) {
        this.age = age;
    }
}

UserMapper.java

public interface UserMapper extends Mapper<User> {
}

测试验证

@RunWith(SpringRunner.class)
@SpringBootTest(classes = DemoApp.class)
public class WebSpringTest {

    @Autowired
    private UserMapper userMapper;

    @Test
    public void testMybatis() {
        //插入数据
        User user = new User();
        user.setName("白居易");
        user.setAge(55);
        userMapper.insert(user);
        System.out.println("user id = " + user.getId());
        List<User> userList = userMapper.selectAll();
        for (User userInfo : userList) {
            System.out.println("id = " + userInfo.getId() + ", name = " + userInfo.getName() + ", age = " + userInfo.getAge());
        }
    }
}

 

posted @ 2022-04-23 17:13  残城碎梦  阅读(1174)  评论(0编辑  收藏  举报