• doris java jdbc 连接  


    和使用mysql一样使用。   springdata  jpa  mybaatis 也一样。

    pom.xml:

    <?xml version="1.0" encoding="UTF-8"?>
    <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
             xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
        <modelVersion>4.0.0</modelVersion>
        <parent>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-parent</artifactId>
            <version>2.1.16.RELEASE</version>
            <relativePath/> <!-- lookup parent from repository -->
        </parent>
        <groupId>com.sea</groupId>
        <artifactId>prestotest</artifactId>
        <version>0.0.1-SNAPSHOT</version>
        <name>prestotest</name>
        <description>prestoTest</description>
    
        <properties>
            <java.version>1.8</java.version>
        </properties>
    
        <dependencies>
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-starter-web</artifactId>
            </dependency>
    
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-starter-test</artifactId>
                <scope>test</scope>
            </dependency>
            <!-- https://mvnrepository.com/artifact/com.alibaba/fastjson -->
            <dependency>
                <groupId>com.alibaba</groupId>
                <artifactId>fastjson</artifactId>
                <version>1.2.62</version>
            </dependency>
    
            <!-- https://mvnrepository.com/artifact/mysql/mysql-connector-java -->
            <dependency>
                <groupId>mysql</groupId>
                <artifactId>mysql-connector-java</artifactId>
                <version>5.1.47</version>
            </dependency>
            <!-- https://mvnrepository.com/artifact/mysql/mysql-connector-java -->
         <!--   <dependency>
                <groupId>mysql</groupId>
                <artifactId>mysql-connector-java</artifactId>
                <version>8.0.21</version>
            </dependency>-->
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-starter-jdbc</artifactId>
            </dependency>
        </dependencies>
    
        <build>
            <plugins>
                <plugin>
                    <groupId>org.springframework.boot</groupId>
                    <artifactId>spring-boot-maven-plugin</artifactId>
                </plugin>
            </plugins>
        </build>
    
    </project>

    application.properties:

    #datasource.doris.type=org.apache.tomcat.jdbc.pool.DataSource
    datasource.doris.sql-script-encoding=UTF-8
    datasource.doris.jdbc-url=jdbc:mysql://192.168.18.129:9030/sea
    datasource.doris.username=sea
    datasource.doris.password=123456
    datasource.doris.driver-class-name=com.mysql.jdbc.Driver
    #datasource.doris.driver-class-name=com.mysql.cj.jdbc.Driver
    #jpa.hibernate.naming.physical-strategy=org.hibernate.boot.model.naming.PhysicalNamingStrategyStandardImpl

    config:

    import org.slf4j.Logger;
    import org.slf4j.LoggerFactory;
    import org.springframework.beans.factory.annotation.Qualifier;
    import org.springframework.boot.context.properties.ConfigurationProperties;
    import org.springframework.boot.jdbc.DataSourceBuilder;
    import org.springframework.context.annotation.Bean;
    import org.springframework.context.annotation.Configuration;
    import org.springframework.jdbc.core.JdbcTemplate;
    import javax.sql.DataSource;
    /**
     * @PACKAGE : com.sea.doristest.config
     * @Author :  Sea
     * @Date : 9/21/20 11:44 AM
     * @Desc :
     **/
    @Configuration
    public class DorisDataSourceConfig {
            private static Logger LOG = LoggerFactory.getLogger(DorisDataSourceConfig.class);
            @Bean(name = "dorisDataSource")
            @ConfigurationProperties(prefix ="datasource.doris")
            public DataSource prestoDataSource() {
                return DataSourceBuilder.create().build();
            }
            @Bean(name = "dorisTemplate")
            public JdbcTemplate dorisJdbcTemplate(@Qualifier("dorisDataSource") DataSource dataSource) {
                return new JdbcTemplate(dataSource);
            }
    }

    test case:

        @Autowired
        @Qualifier("dorisTemplate")
        private JdbcTemplate dorisTemplate;
    
        @Test
        public void testDoris() {
            String sql="select * from sea.user ";
            sql="SELECT * FROM example_db.table1";
            List<Map<String, Object>> maps = dorisTemplate.queryForList(sql);
            System.err.println(maps);
            System.err.println(maps.size());
        }

    result:

    [{siteid=4, citycode=3, username=bush, pv=3}, {siteid=1, citycode=1, username=jim, pv=2}, {siteid=5, citycode=3, username=helen, pv=3}, {siteid=3, citycode=2, username=tom, pv=2}, {siteid=2, citycode=1, username=grace, pv=2}]
    5

    基本使用之动态查询:

    @Service
    @Slf4j
    public class BaseServiceImpl implements BaseService {
    
        
         @Autowired
         @Qualifier("dorisTemplate")
         public JdbcTemplate dorisJdbcTemplate;
         
        //     一、query返回数据
        //     1.public <T> T queryForObject(String sql, Class<T> requiredType, Object... args)    返回一个数据,用指定类型接收
        //     2.public Map<String, Object> queryForMap(String sql, Object... args)                返回一行数据,用Map集合接收
        //     3.public List<Map<String, Object>> queryForList(String sql, Object... args)         返回多行数据,用list接受,list中保存的是多个map
        //
        //*重要*  二、使用RowMapper做映射返回对象(此时需要创建实体类emp)
        //     4.public <T> T queryForObject(String sql, RowMapper<T> rowMapper, @Nullable Object... args)     返回一个映射对象
        //     5.public <T> List<T> query(String sql, RowMapper<T> rowMapper, @Nullable Object... args)                        了                                                    。          返回多个映射对象存入到list集合中
         
       /**
        * @param criteriaMap  
        * @param db_table   "indonesia.dailyitemsold"
        * @param includeFields   "name,age,sales"
        * @param orderby     "order by sold desc "
        * @return
        * @throws Exception
        */
        public  PageResult<Map<String, Object>> dynamicQueryWithPage(JSONObject criteriaMap,String db_table ,String includeFields,String orderby,Integer curPage,Integer pageSize) throws Exception {
            Assert.notEmpty(criteriaMap,"criteriaMap can't be null");
            curPage=(curPage==null||curPage==0)?1:curPage;
            pageSize=(pageSize==null||pageSize==0)?10:pageSize;
            includeFields=StringUtils.isBlank(includeFields)?" * ":includeFields;
            int curPageSize=(curPage-1)*pageSize;
            String sql_count="SELECT count(1) FROM "+ db_table +"  where "+SqlUtils.mapToWhere(criteriaMap) ;
            
            String sql="SELECT "+includeFields+" FROM "+ db_table +"  where "+SqlUtils.mapToWhere(criteriaMap) +" "+orderby +" limit "+curPageSize+","+ pageSize ;
            log.info("sql is: {}",sql);
            Long totalNum = dorisJdbcTemplate.queryForObject(sql_count, long.class);
             List<Map<String, Object>> queryForList = dorisJdbcTemplate.queryForList(sql);
            PageResult<Map<String, Object>> pageResult = new PageResult<Map<String, Object>>(totalNum, curPage, pageSize, queryForList);
            return pageResult;
        }
    
    
        @Override
        public List<Map<String, Object>> queryByXXNoIn(String xxName, List<String> xxNos, String db_table,String includeFields) throws Exception {
            JSONObject criteriaMap = new JSONObject();
            JSONObject incriteriaMap = new JSONObject();
            incriteriaMap.put(xxName,String.join(",", xxNos));
            Assert.notEmpty(xxNos,"xxNos can't be null");
            criteriaMap.put("in", incriteriaMap);
            includeFields=StringUtils.isBlank(includeFields)?" * ":includeFields;
            String sql="SELECT "+includeFields+" FROM "+ db_table +"  where "+SqlUtils.mapToWhere(criteriaMap)+" limit 1000 ";
             List<Map<String, Object>> queryForList = dorisJdbcTemplate.queryForList(sql);
             criteriaMap.clear();
             incriteriaMap.clear();
            return queryForList;
        }
    }

    sqlUtils:

    /**
     * *************************************************************************
     * <PRE>
     *  @ClassName:    : SqlUtils 
     *
     *  @Description:    : dynamic  sql
     *
     *  @Creation Date   : Jun 15, 2021 1:41:48 PM
     *
     *  @Author          :  Sea
     *  
     *
     * </PRE>
     **************************************************************************
     */
    public class SqlUtils {
        
        
    //    @Test
    //    public void testSql() throws Exception {
    //        JSONObject IncriteriaMap = new JSONObject();
    //        IncriteriaMap.put("sea","aa,bb,cc,dd");
    //        JSONObject mycriteriaMap = new JSONObject();
    //        mycriteriaMap.put("in", IncriteriaMap);
    //        String inlude="name,age,total";
    //        String sql="select " +inlude+ " from user where "+ mapToWhere(mycriteriaMap) +" order by sold desc";
    //        System.err.println(sql);
    //    }
        
        
    /**
     *         JSONObject andcriteriaMap = new JSONObject();
                andcriteriaMap.put("sea", "sea");
                andcriteriaMap.put("number", 123);
                andcriteriaMap.put("double", 12.31);
            JSONObject orcriteriaMap = new JSONObject();
                orcriteriaMap.put("sea", "sea");
                orcriteriaMap.put("double", 12.31);
            JSONObject IncriteriaMap = new JSONObject();
                IncriteriaMap.put("sea","aa,bb,cc,dd");
            JSONObject mycriteriaMap = new JSONObject();
                mycriteriaMap.put("and", andcriteriaMap);
                mycriteriaMap.put("or", andcriteriaMap);
                mycriteriaMap.put("in", IncriteriaMap);
     * @param mycriteriaMap
     * @return
     * @throws Exception
     */
        public static String mapToWhere(JSONObject mycriteriaMap) throws Exception {
            String criteria="";
            int criteriaMapsize = mycriteriaMap.size();
            for (Entry<String, Object> okv : mycriteriaMap.entrySet()) {
                String option = okv.getKey();
                Map<String, Object> criteriaMap=(Map<String, Object>) okv.getValue();;
                int msize=criteriaMap.size();
                for (Entry<String, Object> kv : criteriaMap.entrySet()) 
                {
                    String key = kv.getKey();
                    Object value = kv.getValue();
                    if(StringUtils.isBlank(key)||StringUtils.isBlank(value+"")) 
                    {
                        continue;
                    }
                    //if option is in 
                    if("in".equalsIgnoreCase(option)) 
                    {
                        criteria+=" " +key+" in( " +convert2SqlIn(Arrays.asList((value+"").split(","))) +" )";
                    }else //option is and  | or 
                    {
                        if(String.class.isInstance(value)) {
                            criteria+=" " +key+"='" +value +"' ";
                        }else 
                        {
                          criteria+=" " +key+"=" +value +" ";
                        }
                        msize--;
                        if(msize!=0) {
                            criteria+=" "+option+" ";
                        }
                    }
                }
                criteriaMapsize--;
                if(criteriaMapsize!=0) {
                    criteria+=" and ";
                }
            };
            Assert.notNull(criteria==""?null:criteria, "criteria can't be null");
            return criteria;
        }
        
        
        
        
         /**
          * @Desc list<String> to sql in  
          * @param list<String>   
          * @return
          */
          public static String convert2SqlIn(List<String> list){
                StringBuilder sb = new StringBuilder();
                if(list != null && list.size()>0){
                    for(int i=0,len=list.size();i<len;i++){
                        sb.append("'"+ list.get(i) + "'");
                        if(i < len-1){
                            sb.append(",");
                        }
                    }
                }
                return sb.toString();
            }
        
        
    
    }
  • 相关阅读:
    高阶函数
    js严格模式
    改变函数内this指向方法——call、apply、bind
    vue动态组件
    微信支付接口IP获取与调用之统一下单
    node.js实现微信公众号支付
    微信支付(公众号支付JSAPI)--转载
    公众号微信支付流程-(转)
    python 3 代码一模一样,出现运行结果不同的情况(只是不以为一样而已)
    pycharm设置自动换行
  • 原文地址:https://www.cnblogs.com/lshan/p/14792632.html
Copyright © 2020-2023  润新知