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

io.github.ldhai99.easyOrm.executor.JdbcTemplateExecutor Maven / Gradle / Ivy

The newest version!
package io.github.ldhai99.easyOrm.executor;

import io.github.ldhai99.easyOrm.SQL;
import io.github.ldhai99.easyOrm.autoConfig.EasyOrmProperties;
import org.springframework.dao.IncorrectResultSizeDataAccessException;
import org.springframework.jdbc.core.BeanPropertyRowMapper;
import org.springframework.jdbc.core.namedparam.NamedParameterJdbcTemplate;

import javax.sql.DataSource;
import java.util.List;
import java.util.Map;

public class JdbcTemplateExecutor extends AbstractExecutor {

    private NamedParameterJdbcTemplate template;

    public JdbcTemplateExecutor(){

        template=new NamedParameterJdbcTemplate(EasyOrmProperties.getDs());

    }
    public JdbcTemplateExecutor(DataSource dataSource){

        template=new NamedParameterJdbcTemplate(dataSource);

    }
    public JdbcTemplateExecutor(NamedParameterJdbcTemplate template){
        this.template=template;

    }

    //执行Sql----------------------------------------------
    //写数据库
//更新数据库----------------------------------------------------------------------------------------------------
     //NamedParameterJdbcTemplate 是 Spring JDBC 框架中的一个高级工具,它简化了数据库操作,特别是当你需要执行带有命名参数的 SQL 语句时。
    // 与 JdbcTemplate 相比,NamedParameterJdbcTemplate 允许你使用更具可读性的命名参数而不是传统的问号(?)占位符。
    // 并通过 Map  来传递参数,然后调用相应的方法来获取结果:
    //更新
    public int update(SQL sql) {
        return   template.update( sql.toString(),sql.getParameterMap());
    }
    public Number insert(SQL sql) {
        return   template.update( sql.toString(),sql.getParameterMap());
    }
    public int delete(SQL sql) {
        return   template.update( sql.toString(),sql.getParameterMap());
    }
    public int execute(SQL sql) {
        return   template.update( sql.toString(),sql.getParameterMap());
    }
    //返回单列单行数据---------------------

    public < T > T getValue (SQL sql, Class requiredType) {
        try {
            return template.queryForObject(sql.toString(), sql.getParameterMap(), requiredType);
        }catch (IncorrectResultSizeDataAccessException e){
            List mapList=getValues(sql, requiredType);
            if(mapList.size()>=1)
                return (T) mapList.get(0);
            else
                return null;
        }

    }
    //返回单列list数据

    public < T > List getValues (SQL sql, Class requiredType) {
        return   template.queryForList(sql.toString(), sql.getParameterMap(),requiredType);
    }

    //返回单行map数据-----------------------------
    public Map  getMap(SQL sql){

        try {
            return template.queryForMap(sql.toString(), sql.getParameterMap());
        }catch (IncorrectResultSizeDataAccessException e){

            List> mapList=getMaps(sql);
            if(mapList.size()>=1)
                return mapList.get(0);
            else
                return null;
        }
    }

    //返回多行map数据
    public List> getMaps(SQL sql) {
        return   template.queryForList(sql.toString(), sql.getParameterMap());
    }
    //返回Bean实体
    public  T getBean(SQL sql,Class T)  {

        try {
            return template.queryForObject(sql.toString(), sql.getParameterMap(), new BeanPropertyRowMapper(T));

        }catch (IncorrectResultSizeDataAccessException e){

            List mapList=getBeans(sql,T);
            if(mapList.size()>=1)
                return mapList.get(0);
            else
                return null;
        }
    }

    public  List getBeans(SQL sql, Class T)  {

        return template.query(sql.toString(), sql.getParameterMap(), new BeanPropertyRowMapper(T));

    }

}




© 2015 - 2024 Weber Informatics LLC | Privacy Policy