2.使用hibernate一对多查询set集合查询,注解:@OrderBy(value = "id ASC")的 配置文件在set标签加上order-by=“id desc”
3.org.hibernate.StaleStateException: Batch update returned unexpected row count from update [0]; actual row count: 0; expected: 1
update():一般是ID获取错误 不是正确的ID ; save():可能是表的字段是自增,而在插入记录的时候设置了ID的值导致的。
4.@JsonIgnore
避免取JSON对象时无限递归的问题. 导入import com.fasterxml.jackson.annotation.JsonIgnore;
Jar包名称:jackson-annotations-2.2.3.jar
5.嵌套json转换成java对象 导入jackson.jar包
声明ObjectMapper om = new ObjectMapper(); 导入import org.codehaus.jackson.map.ObjectMapper;
// 对象就在这里读取。
ClassA classA = om.readValue(jsonString, ClassA.class);
// 怎么用,随便。
System.out.println(classA .getClassB());
6.批量添加
-1.批量update,一条记录update一次,性能很差
update test_tbl set dr='2' where id=1;
-2.replace into test_tbl (id,dr) values (1,'2'),(2,'3'),...(x,'y');
或insert into test_tbl (id,dr) values (1,'2'),(2,'3'),...(x,'y') on duplicate key update dr=values(dr);
-3.创建临时表,先更新临时表,然后从临时表中update
create temporary table tmp(id int(4) primary key,dr varchar(50));
insert into tmp values (0,'gone'), (1,'xx'),...(m,'yy');
update test_tbl, tmp set test_tbl.dr=tmp.dr where test_tbl.id=tmp.id;
replace into 和insert into on duplicate key update的不同在于:
replace into 操作本质是对重复的记录先delete 后insert,如果更新的字段不全会将缺失的字段置为缺省值
insert into 则是只update重复记录,不会改变其它字段
7.MySQL 5.5版本下my.ini内[mysqld]项中不能再写default-character-set=utf8
原来在5.1版本时,为了解决中文乱码问题设置默认字符集为utf8时,在my.ini内的 [mysql] 和 [mysqld] 项中都是写:
default-character-set=utf8
到了5.5版本, [mysql] 项内可以这么写, [mysqld] 项内不能再这么写了,而是必须写:
character-set-server=utf8
8.用远程登陆客户端登陆linux
进入tomcat/logs/文件夹下
键入指令:tail -f catalina.out
这样就可以与本地电脑一样查看TOMCAT的控制台了。
9.@mappedBy 属性简单理解为设定为主表,所以另一端则需要设置外键@JoinColumn(name="fk_id")
@OneToMany 注解下返回Set集合(列如:上帝可以有多个信徒)。
@ManyToOne 注解下 设置外键 根据 外键获取到主表对象只能获取到一个对象(列如:信徒只能有一个上帝)。