美文网首页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