一、Ibatis
(1)Ibatis的一个特性:命名优于配置
(2)c3p0连接池的一个问题:0000-00-00 00:00:00不能赋值
异常名:Cannot convert value '0000-00-00 00:00:00' from column 1 to TIMESTAMP
解决:jdbc.url=jdbc:mysql://10.248.31.54:3306/asset?zeroDateTimeBehavior=convertToNull&useUnicode=true&characterEncoding=utf8
在url后面加一句话:zeroDateTimeBehavior=convertToNull(红体部分)
原因:
java.util.Date,使其值为 '0000-00-00'是不可能的,最古老的日期应该是'0001-01-01 00:00:00'。MySQL通过jdbc转换时,就会遇到这个情况。
(3)Ibatis配置文件书写格式问题
1、 多表连接查询中的通配符
<isNotEmpty property="category" prepend=" and ">
t.category like '%$category$%'
</isNotEmpty>
2、关系属性
<result column="{id=template_id,status=status}" property="template" select="TTemplate.queryByMap" />
在queryByMap中不需要再写关系属性对应的数据库字段名,就是说标签中的sql语句可以不出现连接表的字段。
(4)CRUD
1、没有发现属性名
原因:注意column中的字段名一定要在sql语句中出现的,即网上常说的Resultset。
我遇到的问题是:在插入之后,ibatis会默认根据主键(selectPk)查询放到缓存里,所以我的执行过程有两个insert,select,结果集也有两个所以在写的时候,sql语句两个都要写完整。
(5)git
1、执行过程:
add-commit-push
作用分别是 add-添加索引 、commit-提交到本地库、push提交到远程库 提交时注意依赖关系和删除数据库主外键关系是一个道理
2、ssh -keygen -t rsa -C "emailname"
(6)判断为空的写法
按照大家的规则走(不是绝对的,常出现的地方记住就行了)
1、时间为空: tasset.setBorrowTime(model.getBorrowTime() == null?new Date():model.getBorrowTime());三位运算符
2、对象为空: null!=dataObjects
原因:
不管是null!=object还是object!=null,在比较的时候都会读取一次object的值。 把null写左边其实可以防止编程出现的低级错误,你用不等于(!=)不好说明,改用等于。 if(object == null)这个语句有时候没注意就会写成:if(object = null)//少了个等号 这样在有的语言中编译是不会出错的,而在运行中结果就不知道了。。 但是你把null写在左边,null其实相当于一个常量,你对常量赋值编译的时候就会报错,这样就能防止这种错误的发生了: if(a == 5) //这是比较 if(a = 5) //能执行,不过C#里有检测这种错误 if(5 = a) //编译就报错 (7)mysql命令 show processlist show create table tablename use databasename show datatables show tables flush privileges insert into mysql.user(host,user,password) values ("localhost","username","password") grant all privileges on "".* to username@localhost