Atitit db query op shourt code lib list 数据库查询最佳实践 JdbcTemplate spring v2 u77 .docx Atitit db query o

Atitit db query op shourt code lib list 数据库查询最佳实践 JdbcTemplate spring v2 u77 .docx

Atitit db query op shourt code lib list 数据库查询类库最佳实践v2

 

目录

1. 查询结果映射规范 1

1.1. 1.常见的四种配置ResultSetHandler 1

1.2. ColumnListHandler 1

1.3. MapListHandler 1

1.4. MapHandler     map to a object map 1

1.5. ScalarHandler    map to a object value 1

1.6. 2

1.7. 离线数据api DataTable DataSet RowSet 2

2. spring-jdbc 2

2.1. Jpa 6

2.2. Dbutil 6

2.3. Mybtis trouble 7

2.4. Hb trb ,needcfg file 7

 

  1. 查询结果映射规范

Atitit 数据库结果集映射  ResultSetHandler

 

目录

1. 常见的四种配置ResultSetHandler 1

2. Dbutil 1

3. Mybatis  致敬 3

4. Hbnt 3

5. Php 4

6. 、PDO常用方法及其应用 4

7. Ref 4

 

 

    1. 1.常见的四种配置ResultSetHandler
    2. ColumnListHandler
    3. MapListHandler   
    4. MapHandler     map to a object map
    5. ScalarHandler    map to a object value
    6. 离线数据api DataTable DataSet RowSet

ADO .NET最大的特性是对断开连接方式的全方位支持,其引入了DataSet、DataTable、DataRow等等对象,构建了一个“内存数据库”简化版本

DataAdapter把DataReader的数据填充到DataTable或者DataSet中,给使用者一个直观的使用方式

 

 

ADO .NET最大的优点是对断开连接访问数据库方式的强有力支持。相比起来,JDBC也引入类似的功能,RowSet,但是比起ADO .NET来,还是不够。

 

Php pdo好像没有离线数据api

 

  1. spring-jdbc

 

JdbcTemplate主要提供以下五类方法:

  •  

execute方法:可以用于执行任何SQL语句,一般用于执行DDL语句;

  •  
  •  

update方法及batchUpdate方法:update方法用于执行新增、修改、删除等语句;batchUpdate方法用于执行批处理相关语句;

  •  
  •  

query方法及queryForXXX方法:用于执行查询相关语句;

  • queryForMap queryForObject queryForList queryForRowSet
  •  

call方法:用于执行存储过程、函数相关语句。

  •  

 

 

 

package db;

 

import java.util.List;

import java.util.Map;

 

import javax.persistence.EntityManager;

import javax.persistence.EntityManagerFactory;

import javax.persistence.EntityTransaction;

import javax.persistence.Persistence;

import javax.persistence.Query;

 

import org.springframework.jdbc.core.JdbcTemplate;

import org.springframework.jdbc.datasource.DriverManagerDataSource;

 

import com.google.common.collect.Maps;

 

public class SpringJdbcT {

 

public static void main(String[] args) {

 

Map properties = Maps.newLinkedHashMap();

properties.put("javax.persistence.jdbc.driver", "org.sqlite.JDBC");

 

properties.put("javax.persistence.jdbc.url", "jdbc:sqlite:test" + Math.random() + ".db");

 

System.out.println(properties);

// Create a new EntityManagerFactory using the System properties.

// The "hellojpa" name will be used to configure based on the

// corresponding name in the META-INF/persistence.xml file

// from hibernate-jpa-2.1-api jar

EntityManagerFactory factory = Persistence.createEntityManagerFactory("HbntUnit", properties);

 

exeUpdate(factory, "CREATE TABLE sys_data (jsonfld json  )");

exeUpdate(factory, "insert into sys_data values('{\"age\":88}')");

 

//jpa query err ,cant find entity map

// System.out.println(query(factory,"select json_extract(jsonfld,'$.age') as age from sys_data") ); ;

// System.out.println("f");

 

DriverManagerDataSource dataSource = new DriverManagerDataSource();

dataSource.setDriverClassName("org.sqlite.JDBC");

dataSource.setUrl(properties.get("javax.persistence.jdbc.url").toString());

//         dataSource.setUsername("guest_user");

//         dataSource.setPassword("guest_password");

JdbcTemplate jdbcTemplate = new JdbcTemplate(dataSource);

String sql = "select json_extract(jsonfld,'$.age') as age from sys_data";

List li = jdbcTemplate.queryForList(sql);

System.out.println(li);

 

}

 

private static int exeUpdate(EntityManagerFactory factory, String sql) {

try {

EntityManager em = factory.createEntityManager();

EntityTransaction transaction = em.getTransaction();

transaction.begin();

///// sql

 

// sql = MessageFormat.format(sql, "'" + getUpflag() + "'", "'" + getUpflag() +

// "'", "'" + getUpflag() + "'");

System.out.println(sql);

Query createNativeQuery = em.createNativeQuery(sql);

int executeUpdate = createNativeQuery.executeUpdate();

System.out.println(executeUpdate);

 

transaction.commit();

return executeUpdate;

} catch (Exception e) {

e.printStackTrace();

}

return 0;

 

}

 

 

private static List<Map> query(EntityManagerFactory factory, String sql) {

EntityManager em = factory.createEntityManager();

Query createNativeQuery = em.createNativeQuery(sql ,Map.class );

 

// createNativeQuery.unwrap(SQLQuery.class).setResultTransformer(Transformers.ALIAS_TO_ENTITY_MAP);  

 List<Map> result = createNativeQuery.getResultList();

 return result;

}

}

 

 

dependencies {

 

// https://mvnrepository.com/artifact/org.springframework/spring-jdbc

compile group: 'org.springframework', name: 'spring-jdbc', version: '5.2.7.RELEASE'

 

 

// https://mvnrepository.com/artifact/org.springframework/spring-core

compile group: 'org.springframework', name: 'spring-core', version: '5.2.7.RELEASE'

 

 

// https://mvnrepository.com/artifact/org.eclipse.persistence/org.eclipse.persistence.jpa

compile group: 'org.eclipse.persistence', name: 'org.eclipse.persistence.jpa', version: '3.0.0-M1'

 

 

// https://mvnrepository.com/artifact/com.zsoltfabok/sqlite-dialect

compile group: 'com.zsoltfabok', name: 'sqlite-dialect', version: '1.0'

 

 

 // https://mvnrepository.com/artifact/com.alibaba/fastjson

compile group: 'com.alibaba', name: 'fastjson', version: '1.2.72'

 

 

// https://mvnrepository.com/artifact/org.hibernate.javax.persistence/hibernate-jpa-2.1-api

compile group: 'org.hibernate.javax.persistence', name: 'hibernate-jpa-2.1-api', version: '1.0.2.Final'

 

 

 

// https://mvnrepository.com/artifact/org.hibernate/hibernate-entitymanager

 compile group: 'org.hibernate', name: 'hibernate-entitymanager', version: '5.4.18.Final'

 

 

// https://mvnrepository.com/artifact/com.fasterxml.jackson.core/jackson-databind

compile group: 'com.fasterxml.jackson.core', name: 'jackson-databind', version: '2.11.1'

 

 

    1. Jpa

 

Lib rank is hb,eclipsejpa ,apache openjpa

Not compartitl....hb not query list map...

Eclipsesjpa cant use.

Openjpa apche ms not supt sqlite

 

    1. Dbutil

 

Class.forName("org.sqlite.JDBC");

 

Connection c = DriverManager.getConnection("jdbc:sqlite:test.db");

Statement stmt = c.createStatement();

 

String sql2 = "drop TABLE sys_data ";

exeUpdateSafe(stmt, sql2);

  sql2 = "CREATE TABLE sys_data (jsonfld json  )";

exeUpdateSafe(stmt, sql2);

 

 

// insert into facts values(json_object("mascot", "Our mascot is a dolphin name

// sakila"));

//

String sql = "insert into sys_data values('{\"id\":\"19\", \"name\":\"Lida\"}');";

exeUpdateSafe(stmt, sql);

 

 

sql="SELECT json_extract(jsonfld,'$.name') as name1 FROM sys_data limit 1;" ;

System.out.println(sql);

QueryRunner run = new QueryRunner();

//maphandler scare_handler

List<Map<String, Object>> query = run.query(c,sql, new MapListHandler());

System.out.println(query);

// run.query(conn, sql, rsh)

 

    1. Mybtis trouble
    2. Hb trb ,needcfg file
展开阅读全文

Git 实用技巧

11-24
这几年越来越多的开发团队使用了Git,掌握Git的使用已经越来越重要,已经是一个开发者必备的一项技能;但很多人在刚开始学习Git的时候会遇到很多疑问,比如之前使用过SVN的开发者想不通Git提交代码为什么需要先commit然后再去push,而不是一条命令一次性搞定; 更多的开发者对Git已经入门,不过在遇到一些代码冲突、需要恢复Git代码时候就不知所措,这个时候哪些对 Git掌握得比较好的少数人,就像团队中的神一样,在队友遇到 Git 相关的问题的时候用各种流利的操作来帮助队友于水火。 我去年刚加入新团队,发现一些同事对Git的常规操作没太大问题,但对Git的理解还是比较生疏,比如说分支和分支之间的关联关系、合并代码时候的冲突解决、提交代码前未拉取新代码导致冲突问题的处理等,我在协助处理这些问题的时候也记录各种问题的解决办法,希望整理后通过教程帮助到更多对Git操作进阶的开发者。 本期教程学习方法分为“掌握基础——稳步进阶——熟悉协作”三个层次。从掌握基础的 Git的推送和拉取开始,以案例进行演示,分析每一个步骤的操作方式和原理,从理解Git 工具的操作到学会代码存储结构、演示不同场景下Git遇到问题的不同处理方案。循序渐进让同学们掌握Git工具在团队协作中的整体协作流程。 在教程中会通过大量案例进行分析,案例会模拟在工作中遇到的问题,从最基础的代码提交和拉取、代码冲突解决、代码仓库的数据维护、Git服务端搭建等。为了让同学们容易理解,对Git简单易懂,文章中详细记录了详细的操作步骤,提供大量演示截图和解析。在教程的最后部分,会从提升团队整体效率的角度对Git工具进行讲解,包括规范操作、Gitlab的搭建、钩子事件的应用等。 为了让同学们可以利用碎片化时间来灵活学习,在教程文章中大程度降低了上下文的依赖,让大家可以在工作之余进行学习与实战,并同时掌握里面涉及的Git不常见操作的相关知识,理解Git工具在工作遇到的问题解决思路和方法,相信一定会对大家的前端技能进阶大有帮助。
©️2020 CSDN 皮肤主题: 大白 设计师: CSDN官方博客 返回首页
实付0元
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值