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类后的接口有没有拓展方法

  • 相关阅读:
    Linux的SSH(Secure Shell Protocol)服务
    Linux开机自动挂载文件fstab介绍
    Linux之NFS网络文件系统
    深入理解sudo
    Linux定时任务(crond)
    Linux之Vim编辑器的使用
    三大文本处理工具grep、sed及awk
    jquery实现自定义弹出框
    oarcle12c打开本地数据库
    使用POI将doc文件转换为html
  • 原文地址:https://www.cnblogs.com/zhangruifeng/p/12345419.html
Copyright © 2011-2022 走看看