美文网首页springboot
SpringBoot 整合Mybaits通用Mapper

SpringBoot 整合Mybaits通用Mapper

作者: 月弦 | 来源:发表于2019-10-12 10:42 被阅读0次

前言

通用Mapper就是为了解决单表增删改查,基于Mybatis的插件。开发人员不需要编写SQL,不需要在DAO中增加方法,只要写好实体类,就能支持相应的增删改查方法。(类似JPA)

一、pom.xml文件

添加web、mapper、mysql和lombok依赖。

    <properties>
        <java.version>1.8</java.version>
        <mybatis.mapper.version>2.1.4</mybatis.mapper.version>
    </properties>

    <dependencies>
        <!--web-->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>

        <!-- 通用Mapper -->
        <dependency>
            <groupId>tk.mybatis</groupId>
            <artifactId>mapper-spring-boot-starter</artifactId>
            <version>${mybatis.mapper.version}</version>
        </dependency>
        <!--mysql-->
        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <scope>runtime</scope>
        </dependency>

        <!--lombok-->
        <dependency>
            <groupId>org.projectlombok</groupId>
            <artifactId>lombok</artifactId>
            <optional>true</optional>
        </dependency>

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-devtools</artifactId>
            <scope>runtime</scope>
            <optional>true</optional>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
        </dependency>
    </dependencies>

二、配置文件

mapper参数配置可参考mapper配置介绍

spring:
  #DataSource Config
  datasource:
    url: jdbc:mysql://localhost:3306/test?serverTimezone=GMT
    username: root
    password: 123456
    driver-class-name: com.mysql.jdbc.Driver

mapper:
  mappers:
      - tk.mybatis.mapper.common.Mapper #mapper的父接口
      - com.huzh.springbootmybatismapper.common.CommonMapper #自定义mapper的父接口
  not-empty: true  #insert和update中,是否判断字符串类型!='',少数方法会用到
  identity: mysql
  enum-as-simple-type: true  # 允许bean 接受 enum 类型

三、自定义mapper接口

public interface CommonMapper<T> extends Mapper<T>, MySqlMapper<T> {
}

四、实体类

  • @Entity:指这个类映射到数据库表。
  • @Data:包含了get,set和toString。
  • @Id:一个实体类中至少需要一个标记 @Id 注解的字段,存在联合主键时可以标记多个。当类中没有存在标记 @Id 注解的字段时,你可以理解为类中的所有字段是联合主键。使用所有的 ByPrimaryKey 相关的方法时,有 where 条件的地方,会将所有列作为条件。
    更多注解可参考数据库映射
@Entity
@Data
public class User {

    @Id
    private Integer id;
    private String name;
    private Integer age;
    private String email;

    @Transient
    private String otherThings; //非数据库表中字段
}

五、接口类

继承自定义mapper接口

public interface UserMapper extends CommonMapper<User> {
}

六、controller类

@RestController
public class UserController {

    @Autowired
    private UserMapper userMapper;

    @RequestMapping("/selectAll")
    public String selectAll() {
        User user = userMapper.selectByPrimaryKey("1");
        System.out.println("================>" + user);

        List<User> userList = userMapper.selectAll();
        System.out.println("================>" + userList);

        //使用对象传参,适用于1个字段或者多个字段联合主键使用
        User user1 = new User();
        user1.setId(1);
        User user2 = userMapper.selectByPrimaryKey(user1);
        System.out.println("================>" + user2);

        return "success";
    }
}

七、启动类

如果没有使用 @MapperScan 注解,就需要在接口上增加 @Mapper 注解,否则 MyBatis 无法判断扫描哪些接口。

@SpringBootApplication
// 注意:这里的 MapperScan 是 tk.mybatis.spring.annotation.MapperScan 这个包下的
@MapperScan(basePackages = "com.huzh.springbootmybatismapper.mapper")
public class SpringbootMybatisMapperApplication {

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

相关文章

网友评论

    本文标题:SpringBoot 整合Mybaits通用Mapper

    本文链接:https://www.haomeiwen.com/subject/ojdtmctx.html