国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學(xué)院 > 開發(fā)設(shè)計(jì) > 正文

事務(wù)管理、AOP總結(jié)以及MyBatis高級應(yīng)用

2019-11-10 21:34:13
字體:
供稿:網(wǎng)友

一、事務(wù)(交易)管理 (1)容器類==集合框架==集合 (2)Web容器==Web服務(wù)器==Servlet容器==Servet引擎 (3)傳播 REQUIRED:如果有事務(wù),則參與到當(dāng)前事務(wù),如果沒有則自動開始新事務(wù),總之,必須有事務(wù)。默認(rèn)最常用規(guī)則!!! PRopagation=Propagation.REQUIRED REQUIRES_NEW:必須有新事務(wù),沒有事務(wù)開啟新事務(wù),已經(jīng)有事務(wù)時候,也開啟新的獨(dú)立事務(wù)。 propagation=Propagation.REQUIRES_NEW NEVER:方法永遠(yuǎn)不參與事務(wù) propagation=Propagation.NEVER NOT_SUPPORTED:不支持事務(wù), 如果在事務(wù)中調(diào)用,把當(dāng)前事務(wù)臨時掛起,執(zhí)行以后再繼續(xù)處理事務(wù)。 propagation=Propagation.NOT_SUPPORTED NESTED:嵌套,當(dāng)前方法不能單獨(dú)使用,必須嵌套到其他事務(wù)中使用。 propagation=Propagation.NESTED MANDATORY:不支持事務(wù), 不能再事務(wù)中調(diào)用,如果調(diào)用就出現(xiàn)異常 propagation=Propagation.MANDATORY 二、AOP總結(jié) 反射->動態(tài)代理->AOP->聲明式事務(wù)管理 動態(tài)代理: (1)JDK 動態(tài)代理: java.lang.reflect.Proxy 使用是有前提的,必須有接口!! (2)CGlib動態(tài)代理:基于類的動態(tài)代理 注:Spring的AOP動態(tài)代理會自動利用 JDK Proxy和CGlib,如果有接口就優(yōu)先使用JDK Proxy,其他情況下使用CGlib 三、MBatis高級應(yīng)用 分頁查詢 分頁查詢,其目的在于在查詢結(jié)果較多,需要分批向?yàn)g覽器傳輸數(shù)據(jù)。在查詢結(jié)果多時候經(jīng)常采用。 實(shí)現(xiàn)分頁查詢: (1)數(shù)據(jù)持久層支持分頁查詢功能,主要是才有分頁查詢SQL實(shí)現(xiàn),可以根據(jù)數(shù)據(jù)行范圍,返回一部分查詢結(jié)果。 (2)業(yè)務(wù)層將頁號換算為分頁查詢參數(shù),提交給數(shù)據(jù)層。 (3)表現(xiàn)層控制器與HTML頁面配合顯示出適當(dāng)?shù)捻撁嫘Ч? 案例:分頁查詢筆記本列表 數(shù)據(jù)層 NotebookDao.java :

/** * 分頁查詢,必須傳遞參數(shù): * userId: 用戶的ID * start: 查詢起始行號 * rows: 一次查詢的最多行數(shù) * @param params 封裝參數(shù)的Map * @return List<Map> */List<Map<String, Object>> findNotebooksByPage( Map<String, Object> params);

添加SQL NotebookMapper.java:

<select id="findNotebooksByPage" parameterType="map" resultType="map"> select cn_notebook_id as id, cn_notebook_name as name from cn_notebook where cn_user_id=#{userId} <if test="start != null"> limit #{start}, #{rows} </if></select>

添加業(yè)務(wù)層方法 NotebookService.java:

List<Map<String, Object>> listNotebooks(String userId, int pageNum, int pageSize) throws UserNotFoundException;

實(shí)現(xiàn)業(yè)務(wù)層方法 NotebookServiceImpl.java

@Transactional(readOnly=true)public List<Map<String, Object>> listNotebooks( String userId, int pageNum, int pageSize) throws UserNotFoundException { if(userId==null||userId.trim().isEmpty()){ throw new UserNotFoundException("ID空"); } User user = userDao.findUserById(userId); if(user==null){ throw new UserNotFoundException("木有人"); } //計(jì)算出起始行號 int start = pageNum*pageSize; Map<String, Object> params= new HashMap<String, Object>(); params.put("userId", userId); params.put("start", start); params.put("rows", pageSize); return notebookDao.findNotebooksByPage(params);}

添加控制器方法 NotebookController.java:

@RequestMapping("notebooks.do")@ResponseBodypublic JsonResult<List<Map<String, Object>>> notebooks(String userId, int page){ int size=6; List<Map<String, Object>> list= notebookService.listNotebooks( userId, page, size); return new JsonResult<List<Map<String,Object>>>(list);}

重構(gòu) loadNotebooksAction 方法:

function loadNotebooksAction(){ //獲取 page 數(shù)據(jù) //$(this)是li.more, 顯示li時候,已經(jīng)在LI //上綁定了頁號數(shù)據(jù),這里是獲取頁號數(shù)據(jù) //如果不存在這個數(shù)居說明是第一次顯示 //則顯示第0頁的內(nèi)容 var page=$(this).data('page'); if(! page){ page = 0; } //console.log('loadNotebooksAction()'); //var url='notebook/list.do'; var url='notebook/notebooks.do'; //var data={userId:getCookie('userId')}; var data={userId:getCookie('userId'), page:page}; //console.log(data); //console.log(url); $.getJSON(url, data, function(result){ if(result.state==SUCCESS){ var list=result.data; console.log(list); model.updateNotebooks(list, page); } });}

重構(gòu) updateNotebooks 方法:

model.updateNotebooks=function(list, page){ var template='<li class="online notebook">'+ '<a>'+ '<i class="fa fa-book " title="online" rel="toolt重構(gòu)事件監(jiān)聽js edit_init.js:

...//綁定點(diǎn)擊筆記本列表的事件//showNotesAction函數(shù)定義在edit_note.js中$('#notebooks').on( 'click','li.notebook', showNotesAction);//綁定 More 連接監(jiān)聽 $('#notebooks').on( 'click','li.more', loadNotebooksAction);...

四、關(guān)于全文檢索: (1)數(shù)據(jù)量非常大:搜索引擎技術(shù),進(jìn)行全文檢索,如:org.apache.lucene (2)小數(shù)據(jù)量:可以使用 like 模糊查詢,like是沒有索引支持的順序查詢,性能很差。


發(fā)表評論 共有條評論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 闽侯县| 宝丰县| 华安县| 金塔县| 高邑县| 嘉峪关市| 广州市| 宁海县| 抚远县| 正宁县| 夏河县| 沂水县| 石渠县| 肇源县| 莲花县| 怀安县| 邢台县| 平顺县| 黄大仙区| 荥经县| 八宿县| 余江县| 南京市| 武功县| 顺平县| 团风县| 五寨县| 乐清市| 铜鼓县| 通海县| 尚志市| 泸溪县| 阜城县| 丹阳市| 朝阳市| 尉犁县| 涟水县| 福州市| 龙口市| 稻城县| 西吉县|