2019-09-18 10:50
@chcode 像下边这样自己拼接sql批量执行时可以的,但没有提供一个类似batchSave(String tableName, List recordList, int batchSize)不需要自己拼接sql,直接传List的支持;
StringBuffer sb = new StringBuffer(" insert ignore into " + tableName + "(");
StringBuffer val = new StringBuffer();
StringBuffer col = new StringBuffer();
for (int i = 0; i < columns.length; i++) {
if (i == columns.length - 1) {
col.append(columns[i]);
val.append("?");
} else {
col.append(columns[i]).append(",");
val.append("?,");
}
}
sb.append(col).append(") values(").append(val).append(" ) ");
int[] count = Db.use(db).batch(sb.toString(), col.toString(), newsrcList, 5000);
2019-09-17 11:08
@JFinal 感谢詹总的答复,问题已经解决了好久,没有来结帖,大概说一下mysq如何l使用ssl的方式链接服务希望能帮到需要的人;
首先mysql服务端要支持ssl,支持ssl需要以下条件:
1. 创建ssl证书和密钥--生成ca.pem server-cert.pem client-cert.pem 文件
mysql提供两种方式
一种方式用openssl编译的mysql版本可以在启动时生成(参考链接:https://dev.mysql.com/doc/refman/5.7/en/creating-ssl-rsa-files-using-mysql.html);
第二种方式用openssl生成(采用的方式),(参考链接:https://dev.mysql.com/doc/refman/5.7/en/creating-ssl-files-using-openssl.html)
2. 配置服务器支持(参考链接:https://dev.mysql.com/doc/refman/5.7/en/using-encrypted-connections.html)
主要时需要在my.cnf中需要添加以下配置,文件路径自行修改;还可以指定某个用户必须使用ssl链接等,详情参考官方的链接
[mysqld]
ssl-ca=ca.pem
ssl-cert=server-cert.pem
ssl-key=server-key.pem
require_secure_transport=ON
客户端链接需要以下几个步骤
1. 需要将服务端的pem证书转换成java支持的JKS证书,得到keystore.jks和truststore.jks:
参考链接1:(可用)https://biteeniu.github.io/ssl/convert_pem_to_jks/
参考链接2:(官方但连不上不知道什么原因)https://dev.mysql.com/doc/connector-j/5.1/en/connector-j-reference-using-ssl.html
2. 修改mysql链接,指定链接方式为ssl
jdbc:mysql://127.0.0.1:3306/test?useUnicode=true&characterEncoding=utf-8&verifyServerCertificate=true&useSSL=true&requireSSL=true
3. 加载生成的jks证书和密码到系统属性,要在ActiveRecordPlugin之前
// keystore.jks和truststore.jks所在的路径,及创建时的密码
System.setProperty("javax.net.ssl.keyStore", "path/keystore.jks");
System.setProperty("javax.net.ssl.keyStorePassword", "password");
System.setProperty("javax.net.ssl.trustStore","path/truststore.jks");
System.setProperty("javax.net.ssl.trustStorePassword", "password");
然后正常启动就OK了