MyBatis动态数据源配置(动态配置字段,库 适合简单逻辑)

简介: MyBatis动态数据源配置(动态配置字段,库 适合简单逻辑)

动态数据源Deomo采用早之前的博客的代码内容;

码云也现成有代码;

博客地址

码云地址博客最后;

效果图如下:

查询的字段全部都是login,password

list01是原有的效果;

list02把null删除了;

http://localhost:1234/user/list01

http://localhost:1234/user/list02

详细代码上面地址有我这边只赋相关内容;

Controller

/**
     * 尝试动态数据库
     * @return
     *
     * http://localhost:1234/user/list
     */
    @RequestMapping("list01")
    public List<UserEntity> findall01(){
        return userService.findall01();
    }
    /**
     * 尝试动态数据库
     * @return
     *
     * http://localhost:1234/user/list02
     */
    @RequestMapping("list02")
    public List<Map<String,String>> findall02() throws IllegalAccessException {
        return userService.findall02();
    }

Srevice

/**
     * 查询所有的数据
     * @return
     */
    List<UserEntity> findall01();
    /**
     * 查询所有的数据
     * @return
     */
    List<Map<String,String>> findall02() throws IllegalAccessException;

ServiceImpl

/**
   * 调用finall 实现查询全部
   * @return
   */
  @Override
  public List<UserEntity> findall01() {
   //表名
     String tableName="user";
     //字段名
     String name="login,password";
     List<UserEntity> list = userinfoMapper.findall01(tableName,name);
    return list;
  }
    /**
     * 调用finall 实现查询全部
     * @return
     */
    @Override
    public List<Map<String,String>> findall02() throws IllegalAccessException {
        //表名
        String tableName="user";
        //字段名
        String name="login,password";
        List<UserEntity> find= userinfoMapper.findall02(tableName,name);
        List<Map<String,String>> lit=new ArrayList<>();
        for (UserEntity maps:find) {
          //  Map<String, Object> mapList = BeanUtil.beanToMap(maps);
            lit.add(objectToMap(maps));
        }
        return lit;
    }
    public static Map<String,String> objectToMap(Object requestParameters) throws IllegalAccessException {
        Map<String, String> map = new HashMap<>();
        // 获取f对象对应类中的所有属性域
        Field[] fields = requestParameters.getClass().getDeclaredFields();
        for (int i = 0, len = fields.length; i < len; i++) {
            String varName = fields[i].getName();
            // 获取原来的访问控制权限
            boolean accessFlag = fields[i].isAccessible();
            // 修改访问控制权限
            fields[i].setAccessible(true);
            // 获取在对象f中属性fields[i]对应的对象中的变量
            Object o = fields[i].get(requestParameters);
            if (o != null && StringUtils.isNotBlank(o.toString().trim())) {
                map.put(varName, o.toString().trim());
                // 恢复访问控制权限
                fields[i].setAccessible(accessFlag);
            }
        }
        return map;
    }

上面的import内容,参考大家知道引的那个依赖即可

import cn.hutool.core.bean.BeanUtil;
import com.example.demo.entity.UserEntity;
import com.example.demo.mapper.UserinfoMapper;
import com.example.demo.service.UserService;
import org.apache.commons.lang.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.lang.reflect.Field;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

Dao

/**
     * 查询全部
     * @return
     */
    List<UserEntity> findall01(@Param("tableName") String tableName,@Param("name") String name);
    /**
     * 查询全部
     * @return
     */
    List<UserEntity> findall02(@Param("tableName") String tableName, @Param("name") String name);

SQL

<!--     查询全部信息-->
    <select id="findall01"  parameterType="com.example.demo.entity.UserEntity" resultMap="userMap">
        select ${name}
        from ${tableName}
    </select>
    <!--     查询全部信息-->
    <select id="findall02"  parameterType="java.util.Map" resultMap="userMap">
        select ${name}
        from ${tableName}
    </select>

以上作为参考;具体以大家需求为主;


相关文章
|
2月前
|
Java 数据库连接 数据库
mybatis查询数据,返回的对象少了一个字段
mybatis查询数据,返回的对象少了一个字段
192 8
|
11天前
|
SQL Java 数据库连接
【MyBatisPlus·最新教程】包含多个改造案例,常用注解、条件构造器、代码生成、静态工具、类型处理器、分页插件、自动填充字段
MyBatis-Plus是一个MyBatis的增强工具,在 MyBatis 的基础上只做增强不做改变,为简化开发、提高效率而生。本文讲解了最新版MP的使用教程,包含多个改造案例,常用注解、条件构造器、代码生成、静态工具、类型处理器、分页插件、自动填充字段等核心功能。
【MyBatisPlus·最新教程】包含多个改造案例,常用注解、条件构造器、代码生成、静态工具、类型处理器、分页插件、自动填充字段
|
1月前
|
SQL Java 数据库连接
mybatis如何仅仅查询某个表的几个字段
【10月更文挑战第19天】mybatis如何仅仅查询某个表的几个字段
40 1
|
2月前
|
SQL XML Java
mybatis复习01,简单配置让mybatis跑起来
文章介绍了MyBatis的基本概念、历史和特点,并详细指导了如何配置MyBatis环境,包括创建Maven项目、添加依赖、编写核心配置文件、创建数据表和实体类、编写Mapper接口和XML配置文件,以及如何编写工具类和测试用例。
mybatis复习01,简单配置让mybatis跑起来
|
3月前
|
安全 Java 数据库连接
后端框架的学习----mybatis框架(3、配置解析)
这篇文章详细介绍了MyBatis框架的核心配置文件解析,包括环境配置、属性配置、类型别名设置、映射器注册以及SqlSessionFactory和SqlSession的生命周期和作用域管理。
后端框架的学习----mybatis框架(3、配置解析)
|
2月前
|
SQL XML Java
mybatis :sqlmapconfig.xml配置 ++++Mapper XML 文件(sql/insert/delete/update/select)(增删改查)用法
当然,这些仅是MyBatis功能的初步介绍。MyBatis还提供了高级特性,如动态SQL、类型处理器、插件等,可以进一步提供对数据库交互的强大支持和灵活性。希望上述内容对您理解MyBatis的基本操作有所帮助。在实际使用中,您可能还需要根据具体的业务要求调整和优化SQL语句和配置。
48 1
|
3月前
|
缓存 Java 数据库连接
mybatis1.常见配置
本文介绍了MyBatis框架中的常见配置及其加载顺序。配置可通过`properties`元素、资源文件或方法参数传递,其中方法参数传递的属性具有最高优先级。文章列举了几个重要的配置项,如`cacheEnabled`用于全局开启或关闭缓存功能;`lazyLoadingEnabled`控制对象的延迟加载行为;`useGeneratedKeys`允许JDBC支持自动生成主键;`defaultExecutorType`设定默认执行器类型等。此外,还介绍了多环境配置方法,通过`environments`元素可定义不同环境下的数据库连接信息,并可根据需求动态选择加载特定环境
|
3月前
sharding-jdbc 兼容 MybatisPlus的动态数据源
【8月更文挑战第2天】要使 `Sharding-JDBC` 与 `MyBatisPlus` 的动态数据源兼容,需引入相关依赖,配置数据源及分库分表策略,并在 `MyBatisPlus` 中设置参数以协同工作。可能还需自定义代码处理数据源切换。示例代码框架展示整合方式,实际应用中需按具体业务场景详细配置并处理异常情况,如数据一致性问题。
268 1
|
4月前
|
Java 数据库连接 数据库
mybatis plus 更新值为null的字段
mybatis plus 更新值为null的字段
60 7
|
4月前
|
SQL Java 数据库连接
idea中配置mybatis 映射文件模版及 mybatis plus 自定义sql
idea中配置mybatis 映射文件模版及 mybatis plus 自定义sql
94 3