1. 程式人生 > >複習電商筆記-10

複習電商筆記-10

原因:

    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

 

 

索引設計

 

  1. 主鍵有沒有索引,只要建立主鍵,資料庫就會自動建立索引。
  2. 什麼欄位才建立索引,where條件中頻繁出現的欄位,在orderby中頻繁出現的欄位。
  3. 能不能所有的欄位建立索引,索引也是“表”。索引不是建立的越多越好,它也好佔磁碟空間。
  4. 索引為什麼快?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 允許使用外掛來攔截的方法呼叫包括:

  1. Executor (update, query, flushStatements, commit, rollback, getTransaction, close, isClosed),delete和insert會呼叫update方法。
  2. ParameterHandler (getParameterObject, setParameters)
  3. ResultSetHandler (handleResultSets, handleOutputParameters)
  4. 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) {
  }
}