原因:
ItemCat.java POJO文件中为EasyUI.tree增加了属性,而数据库表中没有此字段,所以引起,json串转换成java时报错。
解决办法:
在类上增加忽略不能识别的属性标识。
@Table(name="tb_item_cat") //类和表的映射
@JsonIgnoreProperties(ignoreUnknown = true) //忽略掉不认识的属性
public class ItemCat extends BasePojo{
点击树节点后,怎么会再次发起请求呢?
延迟加载(异步加载),点击树节点,去查询其子节点信息,然后加载到树上。这样当数据量非常大时,效率高,多余的节点信息可以无需加载。
但实现代码我们并没有写,EasyUI.Tree组件内部已经直接实现了。
如何知道哪个节点是树干,哪个是叶子节点呢?
它在js加载每个node时有个state属性,open/closed。通过它来区分。
${“ul”,_win}.tree是什么意思?
这是jQuery的语法,${“ul”}代表整个文档中查找ul元素;${“ul”,_win}代表在区域_win中查找ul元素。实现更小范围的查找,不会把其他地方不需要的ul也找出来。
商品表设计
商品表
主键设计
int>bigint>char>varchar
索引设计
- 主键有没有索引,只要创建主键,数据库就会自动创建索引。
- 什么字段才创建索引,where条件中频繁出现的字段,在orderby中频繁出现的字段。
- 能不能所有的字段创建索引,索引也是“表”。索引不是创建的越多越好,它也好占磁盘空间。
- 索引为什么快?a.字段少,b.排序(重点)
为什么能够提高查询速度?
索引就是通过事先排好序,从而在查找时可以应用二分查找等高效率的算法。
一般的顺序查找,复杂度为O(n),而二分查找复杂度为O(log2n)。当n很大时,二者的效率相差及其悬殊。
如果a的x次方等于N(a>0,且a不等于1),那么数x叫做以a为底N的对数(logarithm),记作x=logaN。其中,a叫做对数的底数,N叫做真数。
指数:https://baike.baidu.com/item/%E5%AF%B9%E6%95%B0/91326?fr=aladdin
商品列表
MyBatis拦截器
MyBatis 使用动态代理来增强程序代码,实现拦截器功能。它允许在已映射语句执行过程中的某一点进行拦截调用。默认情况下,MyBatis 允许使用插件来拦截的方法调用包括:
- Executor (update, query, flushStatements, commit, rollback, getTransaction, close, isClosed),delete和insert会调用update方法。
- ParameterHandler (getParameterObject, setParameters)
- ResultSetHandler (handleResultSets, handleOutputParameters)
- StatementHandler (prepare, parameterize, batch, update, query)
通过拦截ResultSetHandler修改接口返回类型;
通过拦截StatementHandler修改mybatis框架的分页机制;
通过拦截Executor查看mybatis的sql执行过程等等。
MyBatis拦截器比较简单,只有三个方法:intercept、plugin、setProperties
@Intercepts({@Signature(
type= Executor.class,
method = "update",
args = {MappedStatement.class,Object.class})})
public class ExamplePlugin implements Interceptor {
public Object intercept(Invocation invocation) throws Throwable {
return invocation.proceed();
}
public Object plugin(Object target) {
return Plugin.wrap(target, this);
}
public void setProperties(Properties properties) {
}
}