zoukankan      html  css  js  c++  java
  • 还在用逆向工程?太Low了,试试通用Mapper吧!

    什么是通用Mapper?

    通用mapper 可以极大的方便开发人员进行ORM,提供极其方便的单表增删改查。
    什么是通用mapper,一句话简单说,它就是个辅助mybatis极简单表开发的组件。它不是为了替代mybatis,而是让mybatis的开发更方便。

    可以按照自己的需要选择通用方法,还能很方便的开发自己的通用方法。

    为什么要用通用Mapper?

    原生Mybatis的痛点

    1、mapper.xml文件里有大量的sql,当数据库表字段变动,配置文件就要修改

    2、需要自己实现sql分页,select * from table where . . . limit 1,3

    自己手写分页,除了传参page、pageSize,还需要返回条目总数count。

    3、数据库可移植性差:如果项目更换数据库,比如oracle-->mysql,mapper.xml中的sql要重新写,因为Oracle的PLSQL 和mysql 支持的函数是不同的。

    4、生成的代码量过大。

    5、批量操作,批量插入,批量更新,需要自写。

    如何使用通用Mapper?

    1、导入依赖/jar包

    通用Mapper是配合MyBatis使用的,请确保你已经是MyBatis的环境。

        <!-- 通用Mapper -->
        <dependency>
          <groupId>com.github.abel533</groupId>
          <artifactId>mapper</artifactId>
          <version>2.3.4</version>
        </dependency>

    2、配置MyBatis配置文件

    在MyBatis配置文件中的configuration->plugins中加入如下plugin

    <?xml version="1.0" encoding="UTF-8" ?>
    <!DOCTYPE configuration
            PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
            "http://mybatis.org/dtd/mybatis-3-config.dtd">
    <configuration>
        <plugins>
            <!-- 通用mapper -->
            <plugin interceptor="com.github.abel533.mapperhelper.MapperInterceptor">
                <!--主键自增回写方法,默认值MYSQL,详细说明请看文档 -->
                <property name="IDENTITY" value="MYSQL" />
                <!--通用Mapper接口,多个通用接口用逗号隔开 -->
                <property name="mappers" value="com.github.abel533.mapper.Mapper" />
            </plugin>
        </plugins>
    </configuration>

    3、配置JavaBean

    在我们要查询的JavaBean中加入@Table注解,在主键字段对应的属性上加上@Id注解,如果有自增长还需要加上@GeneratedValue注解 ,如下所示。

    package cn.rayfoo.bbs.bean;
    
    import lombok.Data;
    import org.springframework.format.annotation.DateTimeFormat;
    
    import javax.persistence.GeneratedValue;
    import javax.persistence.GenerationType;
    import javax.persistence.Id;
    import javax.persistence.Table;
    import java.util.Date;
    
    /**
     * Created by rayfoo@qq.com Luna on 2020/2/21 21:18
     * 用户
     */
    @Data@Table(name = "user")
    public class User {
        @Id
        @GeneratedValue(strategy = GenerationType.IDENTITY)
        private Integer id;
        private String loginname;
        private String password;
        private String username;
        private String nikename;
        private String avatar;
        @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
        private Date createtime;
    }

    4、继承Mapper<泛型>

    将MyBatis的Mapper接口继承Mapper<>,泛型指定为上一步加过注解后的类

    package cn.rayfoo.bbs.mapper;
    
    import cn.rayfoo.bbs.bean.User;
    import com.github.abel533.mapper.Mapper;
    
    /**
     * Created by rayfoo@qq.com Luna on 2020/2/21 23:08
     */
    public interface UserMapper extends Mapper<User> {
    
        /**
         * 根据登录名查询用户
         * @param loginname
         * @return
         */
        User selectByLoginName(String loginname);
    }

    至此,通用Mapper配置完毕,我们可以测试继承Mapper类后的接口有没有拓展方法

  • 相关阅读:
    个人作业——顶会热词进程1.3
    个人作业——顶会热词进程1.2
    每周总结(5.9)
    个人作业2——顶会热词进程1.1
    团队项目冲刺第10天
    CodeForces-1178F1 Short Colorful Strip 区间DP
    LOJ-2362 蚯蚓 队列优化
    Educational Codeforces Round 107 (Rated for Div. 2) G.Chips on a Board 倍增优化DP
    LOJ-2123 最短不公共子串 后缀自动机,子序列自动机
    LGR-084 C Reboot from Blue 贪心 DAG上DP最短路
  • 原文地址:https://www.cnblogs.com/zhangruifeng/p/12345419.html
Copyright © 2011-2022 走看看