Parece que você precisa definir
useAffectedRows
nas propriedades do driver manualmente. Consegui a solução depois de pesquisar no Google. Você pode consultar este MySql Bug para este INSERT ON DUPLICATE KEY UPDATE return 0 se não houver alteração em JDBC ExecuteUpdate
Também na discussão é afirmado que eles lançaram em 5.1.7
EDIT para sua segunda pergunta:
useAffectedRows :
Padrão:falso
Desde a versão:5.1.7
Referência useAffectedRows in JDBC Connector-j