還在用逆向工程?太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類后的接口有沒有拓展方法

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM