mybatis 之 完全动态 通用mapper的实现例子(重点看动态update语句是我的本例子实现)

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd" >
<mapper namespace="com.app.application.mapper.generate.CommonMapper">


    <select id="getDataByTableNameAndIds" parameterType="map" resultType="java.util.TreeMap">
        select * from ${tableName} where id in (<foreach collection="ids" item="id" index="key" separator=",">
        #{id}
    </foreach>)
    </select>

    <select id="getDataItemsByTableNameAndParentIds" parameterType="map" resultType="java.util.TreeMap">
        select * from ${tableName} where parent_id in (<foreach collection="parentIds" item="parentId" index="key"
                                                                separator=",">
        #{parentId}
    </foreach>)
    </select>

    <select id="selectMetaDataByTableName" parameterType="map" resultType="java.util.TreeMap">
        select column_name ,column_camel as Name ,column_comment as Caption,type_symbol as DataType,table_name,interface_name from 3pl_table_meta where table_name  = #{tableName} order by column_camel
    </select>

    <select id="selectMetaCloumnByTableName" parameterType="map" resultType="java.util.TreeMap">
        select column_camel as Name ,column_comment as Caption,type_symbol as DataType from 3pl_table_meta where table_name  = #{tableName}
    </select>

    <select id="selectAllSendTableNames" resultType="java.lang.String">
        select distinct table_name from 3pl_table_meta
    </select>

    <select id="selectSendTasks" parameterType="map" resultType="java.util.TreeMap">
        select * from t_send limit 20
    </select>

    <select id="getSendTableName" parameterType="map" resultType="java.lang.String">
        SELECT DISTINCT table_name FROM 3pl_table_meta
        <if test="tableName != null">
            WHERE table_name = #{tableName}
        </if>
    </select>


    <insert id="insert" parameterType="map">
        insert into ${tableName} (
        <foreach collection="columnMap" item="value" index="key" separator=",">
            ${key}
        </foreach>
        )
        values (
        <foreach collection="columnMap" item="value" index="key" separator=",">
            #{value}
        </foreach>
        )
    </insert>

    <update id="updateAnyTableByName" parameterType="map">
        update ${tableName} set
        <foreach collection="cloumnAndValue" item="cloumnValue" index="columnkey" separator=",">
            ${columnkey} = #{cloumnValue}
        </foreach>

        where
        <foreach collection="condition" item="conditionValue" index="conditinColumn" separator=" and ">
            ${conditinColumn} = #{conditionValue}
        </foreach>


    </update>


</mapper>

 

package com.app.application.mapper.generate;



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

public interface CommonMapper {

    List<Map<String, Object>> getDataByTableNameAndIds(Map params);

    List<Map<String, Object>> getDataItemsByTableNameAndParentIds(Map params);

    List<Map<String, Object>> selectMetaDataByTableName(Map params);

    List<Map<String, Object>> selectMetaCloumnByTableName(Map params);

    List selectAllSendTableNames();

    List<String> getSendTableName(Map tableName);

    int updateAnyTableByName(Map params);

}

 

——————————————————————————————————————

controller就自己写吧

代码片段:

 @GetMapping("/testGetTableName")
 public List<String> queryTable(@RequestParam String tableName) {
     HashMap<String, String> map = new HashMap<String, String>();
     map.put("tableName", tableName);
     return commonMapper.getSendTableName(map);
 }

 @GetMapping("/testTableName")
 public Boolean testTable(@RequestParam String tableName) {
     HashMap<String, String> map = new HashMap<String, String>();
     map.put("tableName", tableName);
     return sendMsgService.testTableExist(map);
 }

 @PostMapping("/testSendSLJson")
 public Object testReceiveJson(@RequestBody String message) {
     return   JSON.parse(message);
 }

 @GetMapping("/testUpdate")
 public Object testUpdate() {
Map params = new  HashMap();
     params.put("tableName","test");//参数
     Map cloumnAndValue = new  HashMap();
     params.put("cloumnAndValue",cloumnAndValue);
     cloumnAndValue.put("name","给名");
     cloumnAndValue.put("age",32);
     Map condition = new  HashMap();//查询条件
     params.put("condition",condition);
     //condition.put("id",3);
     condition.put("sex","女");
     //condition.put("age",23);
    int resultCount = commonMapper.updateAnyTableByName(params);
     return resultCount;
 }

________________________________________________________完善

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd" >
<mapper namespace="com.app.application.mapper.generate.CommonMapper">


    <select id="getDataByTableNameAndIds" parameterType="map" resultType="java.util.TreeMap">
        select * from ${tableName} where id in (<foreach collection="ids" item="id" index="key" separator=",">
        #{id}
    </foreach>)
    </select>

    <select id="getDataItemsByTableNameAndParentIds" parameterType="map" resultType="java.util.TreeMap">
        select * from ${tableName} where parent_id in (<foreach collection="parentIds" item="parentId" index="key"
                                                                separator=",">
        #{parentId}
    </foreach>)
    </select>

    <select id="selectMetaDataByTableName" parameterType="map" resultType="java.util.TreeMap">
        select column_name ,column_camel as Name ,column_comment as Caption,type_symbol as DataType,table_name,interface_name from 3pl_table_meta where table_name  = #{tableName} order by column_camel
    </select>

    <select id="selectMetaCloumnByTableName" parameterType="map" resultType="java.util.TreeMap">
        select column_camel as Name ,column_comment as Caption,type_symbol as DataType from 3pl_table_meta where table_name  = #{tableName}
    </select>

    <select id="selectAllSendTableNames" resultType="java.lang.String">
        select distinct table_name from 3pl_table_meta
    </select>

    <select id="selectSendTasks" parameterType="map" resultType="java.util.TreeMap">
        select * from t_send limit 20
    </select>

    <select id="getSendTableName" parameterType="map" resultType="java.lang.String">
        SELECT DISTINCT table_name FROM 3pl_table_meta
        <if test="tableName != null">
            WHERE table_name = #{tableName}
        </if>
    </select>


    <insert id="insert" parameterType="map">
        insert into ${tableName} (
        <foreach collection="columnMap" item="value" index="key" separator=",">
            ${key}
        </foreach>
        )
        values (
        <foreach collection="columnMap" item="value" index="key" separator=",">
            #{value}
        </foreach>
        )
    </insert>

    <update id="updateAnyTableByParams" parameterType="map">
        update ${tableName} set
        <foreach collection="cloumnAndValue" item="cloumnValue" index="columnkey" separator=",">
            ${columnkey} = #{cloumnValue}
        </foreach>

        where
        <foreach collection="condition" item="conditionValue" index="conditinColumn" separator=" and ">
            ${conditinColumn} = #{conditionValue}
        </foreach>
    </update>

    <delete id="deleteAnyTableByParams" parameterType="map">
        delete from ${tableName}
        where
        <foreach collection="condition" item="conditionValue" index="conditinColumn" separator=" and ">
            ${conditinColumn} = #{conditionValue}
        </foreach>
    </delete>

    <select id="selectCountAnyTableByParams" parameterType="map" resultType="java.lang.Integer">
        select count(*) from ${tableName}
        <if test="condition!=null and condition.size() != 0">
            where
            <foreach collection="condition" item="conditionValue" index="conditinColumn" separator=" and ">
                ${conditinColumn} = #{conditionValue}
            </foreach>
        </if>
    </select>

    <select id="selectDataAnyTableByParams" parameterType="map" resultType="map">
        select
        <if test="columnNames == null or columnNames.size() == 0">
            *
        </if>
        <if test="columnNames != null and columnNames.size() != 0">
            <foreach collection="columnNames" item="item" separator=",">
                ${item}
            </foreach>
        </if>
        from ${tableName}
        <if test="condition!=null  and condition.size() != 0">
            where
            <foreach collection="condition" item="conditionValue" index="conditinColumn" separator=" and ">
                ${conditinColumn} = #{conditionValue}
            </foreach>
        </if>
    </select>

</mapper>
package com.app.application.mapper.generate;

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

public interface CommonMapper {

    List<Map<String, Object>> getDataByTableNameAndIds(Map params);

    List<Map<String, Object>> getDataItemsByTableNameAndParentIds(Map params);

    List<Map<String, Object>> selectMetaDataByTableName(Map params);

    List<Map<String, Object>> selectMetaCloumnByTableName(Map params);

    List selectAllSendTableNames();

    List<String> getSendTableName(Map tableName);

    int updateAnyTableByParams(Map params);

    int deleteAnyTableByParams(Map params);

    int selectCountAnyTableByParams(Map params);

    List<Map<String, Object>> selectDataAnyTableByParams(Map params);

}
@GetMapping("/testUpdate")
public Object testUpdate() {
    Map params = new  HashMap();
    params.put("tableName","test");//参数
    Map cloumnAndValue = new  HashMap();
    params.put("cloumnAndValue",cloumnAndValue);
    cloumnAndValue.put("name","给名");
    cloumnAndValue.put("age",32);
    Map condition = new  HashMap();//查询条件
    params.put("condition",condition);
    //condition.put("id",3);
    condition.put("sex","女");
    //condition.put("age",23);
    int resultCount = commonMapper.updateAnyTableByParams(params);
    return resultCount;
}


@GetMapping("/testSelect")
public Object testSelect() {
    Map params = new  HashMap();
    params.put("tableName","test");//参数
    Map condition = new  HashMap();//查询条件
    params.put("condition",condition);
    //condition.put("id",3);
    condition.put("sex","女");

    List<String> cloumnNames = new ArrayList<String>();//列名
    params.put("columnNames",cloumnNames);
    cloumnNames.add("age");

    //condition.put("age",23);
    int resultCount = commonMapper.selectCountAnyTableByParams(params);
   List<Map<String,Object>> result = commonMapper.selectDataAnyTableByParams(params);
    return resultCount;
}

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值