小编Man*_*dis的帖子

Spring程序化事务管理需要注意什么?

Spring支持程序化事务,使我们能够对TX管理进行细致的控制.根据Spring Documentation,可以通过以下方式使用程序化TX管理:
1.利用Spring的TransactionTemplate:

transactionTemplate.execute(new TransactionCallbackWithoutResult() {

protected void doInTransactionWithoutResult(TransactionStatus status) {
    try {
        updateOperation1();
        updateOperation2();
    } catch (SomeBusinessExeption ex) {
        status.setRollbackOnly();
    }
} });
Run Code Online (Sandbox Code Playgroud)

2.直接利用PlatformTransactionManager(将一个PlatformTransactionManager实现注入DAO):

DefaultTransactionDefinition def = new DefaultTransactionDefinition();
def.setName("SomeTxName");
def.setPropagationBehavior(TransactionDefinition.PROPAGATION_REQUIRED);

//txManager is a reference to PlatformTransactionManager
TransactionStatus status = txManager.getTransaction(def);
try {
  updateOperation1();
  updateOperation2();
}
catch (MyException ex) {
    txManager.rollback(status);
    throw ex;
}
txManager.commit(status);
Run Code Online (Sandbox Code Playgroud)

为简化起见,假设我们正在处理JDBC数据库操作.

我想知道updateOperation1(),updateOperation2()在第二个片段中发生的任何数据库操作,无论是用JDBCTemplate或实现JDBCDaoSupport,如果没有,操作实际上不在任何事务中执行,是吗?

我的分析是,如果我们不使用JDBCTemplate或者JDBCDaoSupport,我们不可避免地会从数据源管理中创建/检索连接.我们得到的连接当然不是PlatformTransactionManager底层管理事务所使用的连接.

我挖了Spring源代码和skim相关的类,发现PlatformTransactionManager它将尝试检索包含在ConnectionHolder其中的返回的连接TransactionSynchronizationManager.我也发现JDBCTemplate并 …

java spring transactions

5
推荐指数
1
解决办法
2456
查看次数

什么是javascript简写?

if(pf[i].length > highest){
    highest = pf[i].length;
}
Run Code Online (Sandbox Code Playgroud)

传达上述陈述的最有效方式是什么?

javascript

5
推荐指数
1
解决办法
117
查看次数

多个 JsonCreator 注解方法

初始问题

是否可以有多种@JsonCreator方法,并且杰克逊可以根据方法定义检测应该使用哪一种方法?

@JsonCreator
public static StateOfComm factory(String id) {
    return StateOfComm.valueOf(id);
}

@JsonCreator
public static StateOfComm factory(CustomType value) {
    return StateOfComm.valueOf(value.getId());  
}
Run Code Online (Sandbox Code Playgroud)

更新

失败的 JSON(因为 id=null)如下:

{"comment":null, "processes":[{"stateOfComm":{"id":"CA"}}]}
Run Code Online (Sandbox Code Playgroud)

以下作品:

 {"comment":null, "processes":[{"stateOfComm":"CA"}]}
Run Code Online (Sandbox Code Playgroud)

java jackson

5
推荐指数
1
解决办法
1万
查看次数

是否有可能使用具有纳秒值的杰克逊

在从对象解析为json和反之亦然时,我已经有了最可想象的工作时间纳秒.我创造了最简单的杰克逊使用方法,我无法获得纳秒.以下是我的演示.在fastxml FAQ中有三个与我的案例相关的重要声明.前两个给我制作工作的技巧,第三个告诉我不要使用sql.Date但是sql.timestamp是"儿子" sql.Date.

问题是:

首先, mapper.configure(DeserializationFeature.READ_DATE_TIMESTAMPS_AS_NANOSECONDS,true)@JsonFormat(pattern="yyyy-MM-dd HH:mm:ss.SSSSSS")采取没有任何影响.我可以放置false,true甚至不使用mapper.configure,使用或不使用,@JsonFormat结果将是相同的,

其次,如果我只尝试反序列化,我的意思是,输入值2015-01-07 11:37:52.390452user.json,只跑mapper.readValue我将获得价值2015-01-07 11:44:22.452,所以我错过了准确的数值,因为Jacskon围捕.

来自http://wiki.fasterxml.com/JacksonFAQDateHandling

1 - Feature.WRITE_DATES_AS_TIMESTAMPS,false); 禁用时间戳(数字)的使用,而是使用符合[ISO-8601]的符号,输出如下:"1970-01-01T00:00:00.000 + 0000".

2 - 您可以通过传递java.text.DateFormat来配置格式

3 - 请不要使用java.sql.Date!

// pojo

package com.jim.core;


import java.sql.Timestamp;
import com.fasterxml.jackson.annotation.JsonFormat;


public class User {

       @JsonFormat(pattern="yyyy-MM-dd HH:mm:ss.SSSSSS")
       private Timestamp tsFirstTry;

       private Timestamp tsSecondTry;   

       @Override
       public String toString() {
              return "User [tsFirstTry=" + tsFirstTry + ", …
Run Code Online (Sandbox Code Playgroud)

java datetime json jackson fasterxml

4
推荐指数
1
解决办法
3996
查看次数

Python 3.5 Pyperclip模块导入失败

刚开始学习Python.而且我在使用Pyperclip模块时遇到了麻烦.

当我尝试pip install pyperclip在命令行中使用它时,它会显示以下错误:

pip install pyperclip
          ^
SyntaxError: invalid syntax
Run Code Online (Sandbox Code Playgroud)

我在Windows 7桌面上运行Python 3.5(32位).

python python-3.x pyperclip

4
推荐指数
2
解决办法
3万
查看次数

if语句是多余的java

我正在为一个应用程序创建一个类,该类具有检查当前时间是否在指定范围内的方法.

public boolean visitorEntry()
{
    currentTime = LocalTime.now();
    start = LocalTime.of(8, 30);
    finish = LocalTime.of(22,0);   

    if (currentTime.isAfter(start) && currentTime.isBefore(finish))
        return true;
    else return false;
}
Run Code Online (Sandbox Code Playgroud)

我正在使用NetBeans,并被告知if语句是多余的.我认为我的病情在逻辑上是不正确的,总是评估为真,但我不明白为什么.

提前致谢.

java netbeans

4
推荐指数
2
解决办法
1431
查看次数

使用Datastax Java Driver将行查询为JSON

我正在尝试使用datastax java驱动程序并将该行检索为JSON.

我做经典之作 SELECT JSON * from myTable WHERE id=1,它在CQL上返回一个Json格式的字符串.

例如 { "uuid" : "12324567-...." }

这有效.

现在,当我尝试使用Java驱动程序时,我使用(在scala中)

val resultSet = session.execute(queryString)
Run Code Online (Sandbox Code Playgroud)

我使用以下方法从此结果集中选取一行:"resultSet.one()".这有我需要的字符串,但我该如何选择呢?

实验: resultSet.one().getColumnDefinitions.toString

打印: Columns[ [json] (varchar) ]

实验:resultSet.one().toString()
打印:Row[{"uuid": "3ce19e07-2280-4b31-9475-992bda608e70"}]< - 我需要的字符串

如何在我的程序中选择一个代表JSON的简单字符串,而不尝试拆分上面的字符串?

java json scala cassandra datastax

4
推荐指数
1
解决办法
3755
查看次数

如何使用MySQL将日期时间更新+15小时

我有一个包含datetime列的表.

我需要为所有这些值添加15个小时.

例如

As Is: 2007-08-22 08:55:10  
To Be: 2007-08-22 23:55:10

As Is: 2009-08-22 14:55:10  
To Be: 2009-08-23 05:55:10
Run Code Online (Sandbox Code Playgroud)

是否有UPDATE可以执行此操作的MySQL 查询?

mysql datetime

4
推荐指数
2
解决办法
4789
查看次数

为一个属性反序列化具有多种类型的 JSON

我正在使用一个 3rd 方 API,它为同一个 JSON 属性返回三种不同的类型,这取决于它包含多少嵌套对象。我正在尝试找出使用 Jackson(最好使用 Retrofit)处理反序列化这些对象的最佳方法。

一个简化的示例:从该 API 检索客户记录时,响应可能是以下任何一项:

  1. 客户有多个电话号码;返回一个数组PhoneObjects

    {
        "Phones": {
            "PhoneObject":[
                {"number":"800 555 6666","type":"Home"},
                {"number":"800 555 4444","type":"Work"}
            ]
        }
    }
    
    Run Code Online (Sandbox Code Playgroud)
  2. 客户有一个电话号码;返回单个PhoneObject

    {
        "Phones": {
            "PhoneObject": {"number":"800 555 6666","type":"Home"}
        },
    }
    
    Run Code Online (Sandbox Code Playgroud)
  3. 客户没有电话号码;返回一个空字符串(!)

    {
        "Phones": {
            "PhoneObject":""
        }
    }
    
    Run Code Online (Sandbox Code Playgroud)

目前,我通过将 Jackson 反序列化为 aMap<String, Object>并检查Object以确定它是什么类型,然后将其插入到例如 a List<PhoneObject>(如果对象不存在,则返回空列表)来处理此问题。然而,这很麻烦,并且希望找到一种更简洁的方法来反序列化这些对象。

java json jackson retrofit

4
推荐指数
1
解决办法
1553
查看次数

在Java中获取JSON字符串JsonNode中的所有键

我有一个json字符串,我需要验证并找到除json字符串中的列表以外的其他任何键。样本json字符串是

{
   "required" : true,
   "requiredMsg" : "Title needed",
   "choices" : [ "a", "b", "c", "d" ],
   "choiceSettings" : {
          "a" : {
          "exc" : true
      },
  "b" : { },
  "c" : { },
  "d" : {
  "textbox" : {
    "required" : true
  }
 }
},
"Settings" : {
"type" : "none"
}
}
Run Code Online (Sandbox Code Playgroud)

为了只允许预定义的键存在于json字符串中,我想获取json字符串中的所有键。如何获取json字符串中的所有键。我正在使用jsonNode。到目前为止,我的代码是

        JsonNode rootNode = mapper.readTree(option);
        JsonNode reqiredMessage = rootNode.path("reqiredMessage");             
        System.out.println("msg   : "+  reqiredMessage.asText());            
        JsonNode drNode = rootNode.path("choices");
        Iterator<JsonNode> itr = drNode.iterator();
        System.out.println("\nchoices:");
        while (itr.hasNext()) { …
Run Code Online (Sandbox Code Playgroud)

java json jackson

4
推荐指数
2
解决办法
7848
查看次数