Spring JdbcTemplate 使用一则

JdbcTemplate API

事务管理

transactionManager 与数据源关联的 this.transactionManager = new DataSourceTransactionManager(this.datasource);

    
	this.jdbcTemplate = new JdbcTemplate(datasource);
	this.transactionManager = new DataSourceTransactionManager(this.datasource);
 
    DefaultTransactionDefinition def = new DefaultTransactionDefinition();
    def.setPropagationBehavior(TransactionDefinition.PROPAGATION_REQUIRED);
    TransactionStatus  status = transactionManager.getTransaction(def);// 返回事务状态记录
 
    try {
        ..........
	    jdbcTemplate.execute("delete from bsmd_field");
        jdbcTemplate.execute("delete from bsmd_references");
        jdbcTemplate.execute("delete from bsmd_table");
 
        transactionManager.commit(status);
    } catch (Exception e) {
        transactionManager.rollback(status);
        throw e;
    }finally{
        
    }
 
 

映射为指定对象 RowMapper

RowMapper<ReferenceStruct> rowMapper=new BeanPropertyRowMapper<ReferenceStruct>(ReferenceStruct.class);
String sql =  "SELECT 	 " + 
        "name AS 'name' " + 
        ",bsmd_table_name AS 'tableName' " + 
        ",bsmd_field_name AS 'fieldName' " + 
        ",ref_bsmd_table_name AS 'refTableName' " + 
        ",ref_bsmd_field_name AS 'refFieldName' " + 
        "from bsmd_references  ";
List<ReferenceStruct> refStructs= jdbcTemplate.query(sql, rowMapper);

Spring MongoTemplate 使用一则

MongoTemplate API

 
//插入
mongoTemplate.insert(userList, "userList"); //对应
mongoTemplate.insert("[{name: 12}]", "userList"); //可插入json的字符串
//查询
Pattern pattern = Pattern.compile("^.*8$",Pattern.CASE_INSENSITIVE);
Query query = new Query(Criteria.where("phone").regex(pattern));
SysUser findOne = mongoTemplate.findOne(query,SysUser.class,"userList");
 
//查询 2
Criteria criteria = new Criteria();
criteria.and("name").is("dd");
criteria.and("phone").is("12222222222");
Query query = new Query(criteria);
List<SysUser> findList = mongoTemplate.find(query, SysUser.class,"userList");

排除自动装配数据库数据源问题

排除 DataSourceAutoConfiguration 自动装配无效, exclude 属性无效

原因是自动装配的类是阿里的 DataSourcePoolMetadataProvidersConfiguration 基于注解的配置是 org.springframework.boot.web.servlet.context.AnnotationConfigServletWebServerApplicationContext