java,springboot,mapper使用InsertProvider动态插入,动态表,一个mapper解决整库

1、mapper

package com.dao;

import com.dao.impl.commMapperImpl;
import com.pojo.Dade1;
import org.apache.ibatis.annotations.*;
import org.apache.ibatis.jdbc.SQL;
import tk.mybatis.mapper.common.Mapper;

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

public interface commMapper{

    @Select("${sql}")
    List<Map> query(@Param("sql")String sql);

    @InsertProvider(type = commMapperImpl.class,method="insert")
    void install(@Param("data")Map dade);

}

2、定时执行

package com;

import com.dao.commMapper;
import com.pojo.Dade1;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.scheduling.annotation.EnableScheduling;
import org.springframework.scheduling.annotation.Scheduled;
import org.springframework.stereotype.Component;
import org.springframework.stereotype.Service;

import java.text.SimpleDateFormat;
import java.util.*;

@EnableScheduling
@Component
public class SingleThreadScheduledTask {

    @Autowired
    private commMapper commMapper;

    @Scheduled(fixedRate = 2000)
    public void doTask(){
        try {
            Date day=new Date();
            SimpleDateFormat validdate= new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
            System.out.print(",定时任务执行中..."+validdate.format(day)+"\t\n");
            System.out.print(commMapper.query("select * from dade1"));
            Map<String,String> map = new HashMap();
            map.put("dade","222");
            map.put("dade33","22662");
            //数据
            Map map2 = new HashMap();
            map2.put("data",map);//保存的数据
            map2.put("table","dade1");//表
            map2.put("name",table("dade1"));//字段
            commMapper.install(map2);
        }catch (Exception e){

        }
    }

    /**
    * 获得表字段
    * */
    public List table(String table){
        //获得表字段TABLE_SCHEMA库(sqlserver是另外一个,TABLE_NAME表,COLUMN_NAME字段)
        //commMapper.query("select TABLE_SCHEMA,TABLE_NAME,COLUMN_NAME from information_schema.COLUMNS where TABLE_NAME='dade1';");
        List<Map> list = commMapper.query("select COLUMN_NAME from information_schema.COLUMNS where TABLE_NAME='"+table+"'");
        //字段组装成数组
        List name = new ArrayList();
        for (int i = 0; i < list.size(); i++) {
            name.add(list.get(i).get("COLUMN_NAME"));
        }
        //System.out.print(table+"88888");
        return name;
    }
}

3、实现commMapper的install插入方法

package com.dao.impl;

import org.apache.ibatis.jdbc.SQL;

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

public class commMapperImpl{

    /**
    * 单条插入
    * */
    public String insert(Map<String,Map> para){
        Map<String,Object> map = para.get("data");
        System.out.print("打印啦"+map);
        Map<String,String> data = (Map<String, String>) map.get("data");//数据
        String table = (String) map.get("table");//数据库表
        List name = (List) map.get("name");//数据库表字段
        SQL sql = new SQL(); //SQL语句对象,所在包:org.apache.ibatis.jdbc.SQL
        sql.INSERT_INTO(""+table);
        //System.out.print("表"+table+"字段"+name);
        for(String key : data.keySet()){
            //String value = data.get(key);
            //System.out.println(key+"  "+value);
            //判断map字段在数据库表中是否存在该字段
            if(name.contains(""+key)){
                //存在,不为nill插入
                if(data.get(key) != null){ //判断blogId属性是否有值
                    sql.VALUES(""+key,data.get(key));
                }
            }
        }
        //System.out.print(sql.toString());
        return sql.toString();
    }
}

  • 6
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
Spring Boot 使用 MyBatis 操作数据库时,需要使用 Mapper 接口实现对数据库的 CRUD 操作。使用 Mapper 接口操作数据库可以使代码更加简洁明了,也方便进行单元测试。 在 Spring Boot 使用 Mapper 接口需要进行以下步骤: 1. 引入 MyBatis 和 MyBatis-SpringBoot-Starter 依赖。 2. 编写实体类和对应的 Mapper 接口。 3. 在 application.properties 或 application.yml 配置数据库连接信息。 4. 在启动类上添加 @MapperScan 注解,指定 Mapper 接口所在的包路径。 5. 在 Service 层注入 Mapper 接口,使用其方法进行数据库操作。 下面是一个简单的示例: 1. 引入依赖: ``` <dependency> <groupId>org.mybatis.spring.boot</groupId> <artifactId>mybatis-spring-boot-starter</artifactId> <version>2.2.0</version> </dependency> <dependency> <groupId>com.h2database</groupId> <artifactId>h2</artifactId> <scope>runtime</scope> </dependency> ``` 2. 编写实体类和 Mapper 接口: ``` public class User { private Long id; private String name; private Integer age; // 省略 getter/setter 方法 } @Mapper public interface UserMapper { List<User> findAll(); User findById(Long id); void save(User user); void update(User user); void deleteById(Long id); } ``` 3. 配置数据库连接信息: ``` spring.datasource.url=jdbc:h2:mem:test spring.datasource.driver-class-name=org.h2.Driver spring.datasource.username=sa spring.datasource.password= ``` 4. 在启动类上添加 @MapperScan 注解: ``` @SpringBootApplication @MapperScan("com.example.mapper") public class Application { public static void main(String[] args) { SpringApplication.run(Application.class, args); } } ``` 5. 在 Service 层注入 Mapper 接口,使用其方法进行数据库操作: ``` @Service public class UserServiceImpl implements UserService { private final UserMapper userMapper; @Autowired public UserServiceImpl(UserMapper userMapper) { this.userMapper = userMapper; } @Override public List<User> findAll() { return userMapper.findAll(); } @Override public User findById(Long id) { return userMapper.findById(id); } @Override public void save(User user) { userMapper.save(user); } @Override public void update(User user) { userMapper.update(user); } @Override public void deleteById(Long id) { userMapper.deleteById(id); } } ``` 以上就是在 Spring Boot 使用 Mapper 接口操作数据库的简单示例。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

大得369

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值