Mybatis通用的Insert/Update

本文介绍如何利用Mybatis的SQLProvider注解来减少简单表与Java Bean映射关系时,插入和更新语句的重复编写工作。虽然没有实现通用的SELECT和DELETE,但这种方式能有效降低Mapper类中的繁琐工作。同时,作者讨论了避免过度注解以保持Mybatis的灵活性,并提及了一个免费的Spring Boot RESTful API课程。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Mybatis写mapper时,每个表都需要INSERT UPDATE写很长的语句比较麻烦,80%的表和java bean是简单的一一对应关系,因此考虑使用mybatis的SQLProvider注解减少这部分重复劳动。
SELECT和DELETE语句由于涉及字段较少,写起来还在可接收范围内,所以没做通用的。

也可以把javabean增加写注解,类似JPA那样指定表名、字段名、主键等,但做得太多就失去了mybatis依赖SQL的灵活性了,而且自己写出来个hibernate/jpa,还不如直接用hibernate/jpa

import java.lang.reflect.Field;
import java.util.Date;
import java.util.HashMap;
import java.util.Map;
 
import org.apache.ibatis.jdbc.SQL;
 
 
/**
 * 使用此类有几个默认规则: 表名和类名相对应,属性名和字段名对应
 * java类内用驼峰命名法;数据库表和字段都用下划线
 * 类的属性定义的变量名和get/set方法名,以及set的参数类型一致,才会映射到数据库字段
 * 例如: private String name; 而且有 public void setName(String name) 和 public String getName()方法
 * 如果不是严格按照此规则定义的属性,不会被影射到数据库字段上
 */
public class InsertUpdateSqlProvider {
 
    /**
     * id如果传入了值,会被insert使用;如果id为null,不会被insert的columns列出
     */
    public static String insert(Object obj) {
        Map<String, String> map;
        try {
            map = getFieldsMap(obj, true);
        } catch (IllegalAr
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值