时间:2021-07-01 10:21:17 帮助过:36人阅读
分享了以下tips: 一、事务管理 二、xml配置sql代码段 三、#和$的区别 四、注意对、做转义 五、依据字符串是否为空,动态组织sql语句 六、使用自定义的类型转换器 七、resultMap的复用 一、事务管理 用户执行一个动作,后台需依次更新多个表,如果其中有一个
分享了以下tips:
一、事务管理
二、xml配置sql代码段
三、#和$的区别
四、注意对<、>做转义
五、依据字符串是否为空,动态组织sql语句
六、使用自定义的类型转换器
七、resultMap的复用
SqlSession session = getSqlSession(); int sqlResult = session.insert("insert a table", po); int sqlResult = session.update("update b table", po); //这时,前面的insert和update还没真正执行 session.commit(); //commit后,db才真正更新 session.close();
from t_comment where refer_type = #{type} and refer_id = #{referId}
…… ……
package test; public class TimeTypeHandler implements TypeHandler{ private final String TIME_TYPE = "yyyy-MM-dd HH:mm:ss"; public long strToLongTime(String dateStr) { if (null == dateStr) return 0L; SimpleDateFormat sdf = new SimpleDateFormat(TIME_TYPE); Date date = new Date(); try { date = sdf.parse(dateStr); } catch (ParseException e) { e.printStackTrace(); } if (date == null) return 0L; System.out.println(date); return date.getTime(); } public Long getResult(ResultSet arg0, String arg1) throws SQLException { String datestr = arg0.getString(arg1); return strToLongTime(datestr); } public Long getResult(ResultSet arg0, int arg1) throws SQLException { String datestr = arg0.getString(arg1); return strToLongTime(datestr); } public Long getResult(CallableStatement arg0, int arg1) throws SQLException { String datestr = arg0.getString(arg1); return strToLongTime(datestr); } public void setParameter(PreparedStatement arg0, int arg1, Long arg2, JdbcType arg3) throws SQLException { if (arg2 == null) { arg2 = 0L; } Date date = new Date(arg2); SimpleDateFormat sdf = new SimpleDateFormat(TIME_TYPE); String datetime = sdf.format(date); arg0.setString(arg1, datetime); } }
…… //这里定义了ExpDownloadPo这个sql查询结果,要映射到java bean :test.ExpDownloadPo …… //first_download_time这个数据,在赋值到firstDownloadTime时,要转转换,从jdbc的time型,转换成javaType的long型,具体怎么转换,因为前面第一点,定义了 ,因此会自动使用test.TimeTypeHandler这个转换器
……