crm项目复盘
一.注意点
1.从数据库获取的数据对应的列名是数据库默认的,如果想要与实体类的属性对应的话可以用别名,但是如果是属性的属性,那就不可以了,这个时候需要返回一个resultMap,然后map里用id来定义它的属性的属性。
2.mapper.xml里需要对应的实体类作为返回值,只有select需要。update,insert,delete就不要。
3.用到oracle时候插入方法,如果是主键自增的,不能用null,而改用自己创建的seq.nextval来获取下一个。如果是mysql直接用null就可以了,它会自动插入的。
4.前端页面如果返回的是一个对象,他会根据name里的值来获取一一对应的值,里面返回对应的值,但是属性的属性是返回不了的,这个需要手动添加,如果这个时候获取它的属性的属性,有可能会出现空指针异常,因为他属性本身就是空,再掉他的属性的属性会出错。
5.连表查询需要注意匹配的条件和每一个列名的别名,不会因为a.name和b.name就回去别name,出来的列名都是name。如果只有一个就不用区分了。
6.模糊查询,说白了就是一个动态sql语句。where <if test="pa !=null and pa !=''">b.name like concat(concat('%',#{pa}),'%') </if>,这样就可以查询了,pa是mapper里的参数,b.name是数据库里的列。如果是null的话就没有这个条件,也实现了查所有的条件。
7.分页sql和oracle不同,一个用limit起始索引和当页数量,一个是用起始索引和终止索引。后面写一个page类里面用泛型list<a>来作为工具使用,需要注意的是oracle起始是1,而mysql起始是0。
8.mapper.xml和接口的链接需要@Param("start") String start注入属性,或者用param1.如果只有一个属性就不用。如果是对象直接.它的属性或者属性的属性。
9.新建方法可以和更新方法写在一起,区别在于有没有id主键属性,但是这不满足rest风格。看上去很乱需要注意。
10.更新方法是一个get和一个post,get作为回显原来的数据,在页面上改了数据再带回post方法,进行真正的更新。
二.常见的错误
1.出现404常见问题 1.web.xml 2.mapper.xml 3.路径写错
2.sql中可以使用的在mapper.xml中不一定能使用,a<5 and a>1,必须用a between 1 and 5,如果要用>可以用>的转译字符。
3.分页查询如果是mysql就是需要一个初始索引,limit初始和末尾是+页数-1,orcl需要其实索引和子查询,把伪列用用别名再外面判断,这体现了sql'的顺序。
4.大部分的数据用map或者是mv,少部分重要的放在session里如user对象,除非销毁session才可以。
5.出现400:1.没有加载好,页面缓存2.带的参数有问题不能用@requsetParam获取。