JAVA学习笔记
JAVA学习笔记
对于Date在java与mysql不一致的处理方法:
Date类在JDK1.1以上已经基本被废弃了 > 详情的api请看data
Date在java中表现为Y-M-D H-M-S 而在mysql中Date仅仅是年月日,Time类型表现才为时分秒,而Timestamp类型在mysql中表现类似于Date in Java。
1.1 (所以这里可以直接选择createStatement(),s1,s2为string类型即可
format
Y-M-D H-M-S)
String sql = "select * from tdate where date between \"" + s1 + "\" and \"" + s2 + "\"";
Statement st = con.createStatement();
ResultSet rs = st.executeQuery(sql);
这种方式可以成功,但有sql注入的风险。
1.2 预定义sql 参数化查询。 #切记切记executeUpdate里面不要带参数,不然无论如何都报错,因为你的Statement已经预编译过了,不要再编译一次sql,若重新再编译了,sql中的 “?”就不会再有setLong注入这个值了,所以报错#
String sql = "insert into orders(`id`,`userID`,`cinemaID`,`time`,`prices`) values(null,1,1,?,60)";
PreparedStatement st = con.prepareStatement(sql);
System.out.println(lg1);
st.setLong(1, lg1);
st.executeUpdate();
2 我们选择利用UTC时间戳来处理。 这样我们在数据库中保留的是Long数据(据离零时区的某个时间的毫秒级时间间隔)
Calendar calendar = Calendar.getInstance();
int year = 2016;
int month = 4;
int date = 21;
int hourOfDay = 21;
int minute = 32;
int second = 10;
calendar.set(year, month, date, hourOfDay, minute, second);
Long lg1 = calendar.getTimeInMillis();
以上利用Calendar(jdk1.1后用来代替Date),还有Date.getTime()方法
new Date().getTime();
//获取当前时间
对于java JDBC中文字插入Mysql乱码的处理方法:
首先先确保Mysql表create时,对应table的charset与java文件的编码是否一致。
其次,利用jdbc连接数据库的时候,url的设置有两种方式:
xml配置格式
:在url中 jdbc:mysql://172.18.41.13:3306/cinema_datebase?useUnicode=true&characterEncoding=UTF-8注意里面的&
java文件配置格式
在url中 jdbc:mysql://172.18.41.13:3306/cinema_datebase?useUnicode=true&characterEncoding=UTF-8注意里面的&;
对于Spring框架下 JDBCtemplate insert数据到Mysql想要返回主键的处理方法:
原本我们用到是return jdbcTemplate.update("insert into orders values(null,?,?,?,?,?)",generatedKeyHolder,new Object[{order.getUserID(),order.getCinemaID(),order.getTime(),order.getPrices(),"1"});
后来我查看了一下JdbcTemplate中update的重载函数,发现对于Object类型的重载并不涉及到获取主键的方法,找到了这个
public int update(final PreparedStatementCreator psc, final KeyHolder generatedKeyHolder)
于是我们的update函数需要自己写预定义的sql语句,结果代码变成这样
jdbcTemplate.update(
new PreparedStatementCreator() {
@Override
public PreparedStatement createPreparedStatement(Connection con) throws SQLException {
PreparedStatement st = con.prepareStatement("insert into orders values(null,?,?,?,?,?)", new String[]{"id"});
st.setInt(1, order.getUserID());
st.setInt(2, order.getCinemaID());
st.setLong(3, order.getTime());
st.setFloat(4, order.getPrices());
st.setString(5, "1");
return st;
}
},generatedKeyHolder);
return generatedKeyHolder.getKey().intValue();
Let us hummingbird fly