mybatis-plus公共工具类

PublicDataMapper接口定义了对数据库进行查询、插入、更新和删除的方法,使用了MyBatis的注解和QueryWrapper类来处理条件查询。方法参数包括字段名、表名和查询条件,支持不同数据类型的字段值处理。

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

1.PublicMapper.java文件

package com.ep.mapper;


import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.toolkit.Constants;
import com.ep.model.SfMetaField;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
import org.apache.ibatis.annotations.Select;

import java.util.List;
import java.util.Map;



@Mapper
public interface PublicDataMapper {
    //总体说明:
    //selectFields:字段,例如  id,name
    //tableName:表名称,例如 cd_user
    //QueryWrapper<T> qw = new QueryWrapper<>() :查询条件
    //SfMetaField:字段封装类,
    //      例如: fieldCode[字段code]:name
    //            fieldValue[字段value]:张三
    //            dataType[字段类型]:字段数据类型VARCHAR2 NUMBER DATE

	Map<String, Object> selectOneById(@Param("selectFields") String selectFields,
								  @Param("tableName")  String tableName,
								  @Param(Constants.WRAPPER) QueryWrapper wrapper);

	List<Map<String,Object>> selectList(@Param("selectFields") String selectFields,
									@Param("tableName") String tableName,
									@Param(Constants.WRAPPER) QueryWrapper wrapper);

	
	void insert(@Param("tableName") String tableName,
				@Param("list") List<SfMetaField> list);

	void editor(@Param("tableName") String tableName,
				@Param(Constants.WRAPPER) QueryWrapper wrapper,
				@Param("list") List<SfMetaField> list);

	void delete(@Param("tableName") String tableName,
				@Param(Constants.WRAPPER) QueryWrapper wrapper);

	
}

2.PublicMapper.xml文件

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.2//EN"
        "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.ep.mapper.PublicDataMapper">

    <select id ="selectList" resultType="java.util.LinkedHashMap" >
       SELECT ${selectFields} FROM ${tableName} ${ew.customSqlSegment}
    </select>

    <select id ="selectOneById" resultType="java.util.LinkedHashMap" >
       SELECT ${selectFields} FROM ${tableName} ${ew.customSqlSegment}
    </select>

    <insert id ="insert" parameterType="com.ep.model.SfMetaField" >
        INSERT INTO ${tableName}
        <trim prefix="(" suffix=")" suffixOverrides=",">
            <foreach collection ="list" item="item" separator =",">
                <if test="item.fieldValue != null and item.fieldValue != ''">${item.fieldCode}</if>
            </foreach >
        </trim>
        <trim prefix="values (" suffix=")" suffixOverrides=",">
            <foreach collection ="list" item="item" >
                <if test="item.dataType == 'VARCHAR2' and item.fieldValue != null and item.fieldValue != '' ">
                    #{item.fieldValue,jdbcType=VARCHAR},
                </if>
                <if test="item.dataType == 'DATE'  and item.fieldValue != null and item.fieldValue != '' ">
                    to_date(#{item.fieldValue,jdbcType=DATE}, 'dd/MM/yyyy hh24:mi:ss'),
                </if>
                <if test="item.dataType == 'NUMBER' and item.fieldValue != null and item.fieldValue != ''">
                    #{item.fieldValue,jdbcType=NUMERIC},
                </if>
            </foreach >
        </trim>
    </insert>

    <update id ="editor" parameterType="com.ep.model.SfMetaField" >
        UPDATE ${tableName}
        <trim prefix="SET"  suffixOverrides=",">
            <foreach collection ="list" item="item" separator =",">
                <if test="item.fieldValue != '' and  item.fieldValue != null ">
                    <if test="item.dataType == 'VARCHAR2' ">
                        ${item.fieldCode} = #{item.fieldValue,jdbcType=VARCHAR}
                    </if>
                    <if test="item.dataType == 'DATE' ">
                        ${item.fieldCode} = to_date(#{item.fieldValue,jdbcType=DATE}, 'dd/MM/yyyy hh24:mi:ss')
                    </if>
                    <if test="item.dataType == 'NUMBER' ">
                        ${item.fieldCode} = #{item.fieldValue,jdbcType=NUMERIC}
                    </if>
                </if>
            </foreach >
        </trim>
        ${ew.customSqlSegment}
    </update>

    <delete id ="delete">
        DELETE FROM ${tableName} ${ew.customSqlSegment}
    </delete>


</mapper>

Mybatis-plusMyBatis增强工具包,用于简化CRUD操作。该工具包为MyBatis提供了一些高效,有用,即用的功能,使用它可以有效地节省您的开发时间。Mybatis-plus特征与MyBatis完全兼容 启动时自动配置 开箱即用的用于操作数据库的界面 强大而灵活的条件包装器 生成主键的多种策略 Lambda样式的API 全能和高度可定制的代码生成器 自动分页操作 SQL注入防御 支持活动记录 支持可插拔的自定义界面 内置许多有用的扩展Mybatis-plus功能1、单表CURD(简单 + 批量)操作,自动完成(支持 like 比较等查询)。 2、分页插件,Count查询自动或自定义SQL查询。 3、Spring根据不同环境加载不同配置支持(支持typeAliasesPackage通配符扫描)。 【自动生成Entity Mapper Service文件】Mybatis-plusMybatis增强工具包) v3.3.2更新日志分页参数提取,单元测试用例修复 达梦数据库代码生成器表过滤支持 微软数据库代码生成器表过滤支持 修复代码生成器属性字段规则错误 SelectById 支持自定义方法名 修复分页插件获取数据库类型问题 Json转换器空值处理 bugfix(mybatis-plus-generator):SQL类型返回错误问题 调整未知方言异常,自动识别url转换小写匹配. fix: 初始化TableInfo中遇到多个字段有@TableId注解时未能抛出异常的问题 SuperController有Class参数的set方法 增加方法StrategyConfig.setSuperServiceImplClass(java.lang.Class<?>). 代码生成器命名策略调整. 扩展分页缓存key值计算. 去除方法推测,直接访问属性字段. 修正枚举处理器类型不匹配比较. 修改表前缀匹配方式 修改在Mybatis全局配置文件中设置分页插件参数不生效问题 修改在Mybatis全局配置文件中设置分页插件参数不生效问 修复PR未指定解析器的时候引发空指针 增加分页插件limit参数配置 修复指定superEntityClass重复生成父类字段问题 无主键的情况无需导入IdType与TableId包 调整生成BaseResultMap格式 支持lombok模式下选择是否进行链式set生成 修复解析器for update错误 过滤PG约束列(只留下主键约束) 增加生成器禁用模板生成 fix(kotlin): 修复动态表名BUG,最大努力替换表名 修复PG约束生成重复属性字段问题 fix(kotlin): 将LambdaUtils中缓存的key改为String 代码生成器增加数据库关键字处理接口 fix github/issues/2454 支持注解可继承 新增 AES 加密数据库用户名密码 优化方法入参泛型,支持更多类型 修复代码生成器开启移除is前缀生成实体缺少包导入 fixed github issues/2470Mybatis-plus截图
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值