All Downloads are FREE. Search and download functionalities are using the official Maven repository.

com.gitee.qdbp.jdbc.plugins.DbConditionConverter Maven / Gradle / Ivy

package com.gitee.qdbp.jdbc.plugins;

import java.util.Map;
import com.gitee.qdbp.able.jdbc.condition.DbUpdate;
import com.gitee.qdbp.able.jdbc.condition.DbWhere;

/**
 * JavaBean到数据库条件的转换
 *
 * @author zhaohuihua
 * @version 20200207
 */
public interface DbConditionConverter {

    /**
     * 将Java对象转换为Insert操作的Map参数
* 注意: 值为null的字段将被忽略; 值为空字符串的字段, 表示用户未填写, 也会被忽略
* 因为这里的bean对象极有可能来自于controller的参数(最终来自于用户填写的表单)
* 如果不忽略空字符串, 考虑field1=value1,field2=""的场景
* 生成的SQL语句就会是这样的INSERT INTO table(field1,field2) VALUES(value1,NULL)
* 这就会导致field2无法使用数据库设置的默认值 * * @param bean Java对象 * @return Map参数 */ Map convertBeanToInsertMap(Object bean); /** * 将Java对象转换为Update操作的Map参数
* 注意: 值为null的字段将被忽略;
* 值为空字符串的字段将被保留(表示设置为NULL), 此特性与insert/where不同
* 因为这里的bean对象极有可能来自于controller的参数(最终来自于用户填写的表单)
* 如果忽略空字符串, 用户想要将已经有值的字段设置为NULL将变得难以处理 * * @param bean Java对象 * @return Map参数 */ Map convertBeanToUpdateMap(Object bean); /** * 将Java对象转换为DbUpdate对象
* 注意: 值为null的字段将被忽略;
* 值为空字符串的字段将被转换为SET field=NULL(见DbBinarySetOperator), 此特性与insert/where不同
* 因为这里的bean对象极有可能来自于controller的参数(最终来自于用户填写的表单)
* 如果忽略空字符串, 用户想要将已经有值的字段设置为NULL将变得难以处理 * * @param bean Java对象 * @return DbUpdate对象 */ DbUpdate convertBeanToDbUpdate(Object bean); /** * 将Java新对象与原对象的差异转换为DbUpdate对象
* 新对象一般来自于controller的参数(最终来自于用户填写的表单)
* 原对象一般来自于数据库查询到的数据
* 如果某个字段在新对象中没有值, 在原对象中有值, 将被转换为SET field=NULL * * @param newer Java新对象 * @param older Java原对象 * @return DbUpdate对象 */ DbUpdate convertDiffToDbUpdate(Object newer, Object older); /** * 将Java对象转换为DbWhere条件
* 注意: 值为null的字段将被忽略;
* 值为空字符串的字段, 表示用户未填写, 也会被忽略
* 因为这里的bean对象极有可能来自于controller的参数(最终来自于用户填写的表单)
* 如果不忽略空字符串, 生成的SQL语句就会带有很多的FIELD1 IS NULL and FIELD2 IS NULL这样的条件 * * @param bean Java对象 * @return DbWhere条件 */ DbWhere convertBeanToDbWhere(Object bean); /** * 从map中获取参数构建DbWhere对象
* 注意: 值为null的字段将被忽略; 值为空字符串的字段, 也会被忽略
* 由于参数是map, 如果要查询IS NULL条件, 可以使用map.put("field$IsNull", true)这种方式
* map参数比较自由, 除了支持map.put("field", value)这种表示等于的条件
* 还支持field$IsNull, field$NotEquals, field$GreaterThen, field$GreaterEquals...等
* 还支持map.put("field$In", Arrays.asList(value1, value2); 表示WHERE field IN (value1,value2)
* 还支持map.put("field$GreaterThen", new DbFieldName("field2")); 表示WHERE field>field2
* * @param map Map参数 * @return DbWhere对象实例 */ DbWhere parseMapToDbWhere(Map map); /** * 从map中获取参数构建DbUpdate对象
* 注意: 值为null的字段将被忽略;
* 值为空字符串的字段将被转换为SET field=NULL(见DbBinarySetOperator), 此特性与insert/where不同
* map参数比较自由, 除了支持map.put("field", value)这种表示SET field=value的条件
* 还支持map.put("field$ToNull", true); 表示SET field=NULL
* 还支持map.put("field$Add", number); 表示SET field=field+number
* 还支持map.put("field$Add", new DbFieldName("field2")); 表示SET field=field+field2
* * @param map Map参数 * @return DbUpdate对象实例 */ DbUpdate parseMapToDbUpdate(Map map); /** * 将请求参数转换为DbWhere条件 * * @param params 请求参数 * @param beanType JavaBean类型 * @return DbWhere条件 * @see #parseMapToDbWhere(Map) 详见parseMapToDbWhere(Map)说明 */ DbWhere parseParamsToDbWhere(Map params, Class beanType); /** * 将请求参数转换为DbUpdate对象 * * @param params 请求参数 * @param beanType JavaBean类型 * @return DbUpdate对象 * @see #parseMapToDbUpdate(Map) 详见parseMapToDbUpdate(Map)说明 */ DbUpdate parseParamsToDbUpdate(Map params, Class beanType); }




© 2015 - 2025 Weber Informatics LLC | Privacy Policy