项目开发遇到的问题以及解决方法

1.数据库命名不能含有小数点

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性能较好
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 注解下 设置外键 根据 外键获取到主表对象只能获取到一个对象(列如:信徒只能有一个上帝)。



  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值