日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

通用mapper和分类实现

發(fā)布時間:2025/3/15 编程问答 15 豆豆
生活随笔 收集整理的這篇文章主要介紹了 通用mapper和分类实现 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

1?通用Mapper

1.1?通用Mapper介紹

1.1.1?架構(gòu)設(shè)計

?

說明:使用了通用Mapper,單表的增刪改查操作會自動的進(jìn)行維護(hù).

問題:如何才能實(shí)現(xiàn)數(shù)據(jù)的通用并且是動態(tài)的?

?

1.2?JPA介紹

1.2.1?JPA的思想

?

說明:以面向?qū)ο蟮乃季S操作數(shù)據(jù)庫!!

舉例說明:

  • 早期sql語句都需要人為的編輯.
  • 關(guān)系型數(shù)據(jù)庫中數(shù)據(jù)表與pojo一一對應(yīng).所以可以使用對象操作數(shù)據(jù)庫
  • Sql:insert into user values(XXXX);
  • UserMapper.insert(user);

    1.2.2?JPA的發(fā)展

    說明:有了JPA思想后,HaibernateJPA實(shí)現(xiàn).

    特點(diǎn):

  • 能夠?qū)崿F(xiàn)面向?qū)ο蟮牟僮?/li>
  • 能夠?qū)崿F(xiàn)自動的對象關(guān)系映射(orm)
  • ? 問題:

    例子:

    如果做插入操作,先會執(zhí)行查詢操作,之后再插入.

    實(shí)現(xiàn)業(yè)務(wù)邏輯時,會產(chǎn)生大量的冗余的sql語句.數(shù)據(jù)庫的執(zhí)行速度變慢.

    ??2.需要學(xué)習(xí)特定的數(shù)據(jù)庫語句Hql(適用于多表操作)

    ?

    發(fā)展:

    Mybatis的發(fā)展.

    ?特點(diǎn):

  • 能夠?qū)崿F(xiàn)自動的對象關(guān)系映射
  • Sql語句需要自己根據(jù)業(yè)務(wù)邏輯自己實(shí)現(xiàn),性能更高
  • 通用Mapper出現(xiàn)后,Mybatis也有了面向?qū)ο蟮墓δ?/span>.
  • 1.2.3?通用Mapper引入

    <!-- 通用Mapper插件 --><plugin interceptor="com.github.abel533.mapperhelper.MapperInterceptor"><!--主鍵自增回寫方法,默認(rèn)值MYSQL,詳細(xì)說明請看文檔 --><property name="IDENTITY" value="MYSQL" /><!--通用Mapper接口,多個通用接口用逗號隔開 --><property name="mappers" value="com.jt.common.mapper.SysMapper" /></plugin>

    1.2.4?Mapper的接口的注解形式

    /*** Mybatis的接口中可以添加注解,完成特定的操作* 說明:* Mybatis中的直接根據(jù)映射標(biāo)簽后期開發(fā)的.* 功能上與映射文件一致.* @return*/@Select(value="select * from item")//@Insert("")//@Delete("")//@Update("")List<Item> selectAll();

    ?

    1.2.5?通用Mapper調(diào)用規(guī)則

    ?

    方法名稱是對應(yīng)的,可以自動的進(jìn)行調(diào)用

    ?

    ?

    1.3?商品的新增

    1.3.1?商品分類的級數(shù)

    說明:一般的電商網(wǎng)站的商品分類一般都是3.經(jīng)過了科學(xué)的考證的

    ?

    1.3.2?構(gòu)建ItemCat對象

    ?

    1.3.3?構(gòu)建ItemCatMapper

    ?

    1.3.4?定義ItemCatService

    @Service public class ItemCatServiceImpl implements ItemCatService {@Autowiredprivate ItemCatMapper itemCatMapper;/*** 使用通用Mapper(JPA),傳入的對象最終充當(dāng)了查詢的where條件* select * from tb_item_cat where id = 100 and status = 1* * 總結(jié):ItemCat對象會將不為Null的屬性充當(dāng)where條件 * /如果需要添加查詢條件* 為對象的屬性賦值即可!!!* */@Overridepublic List<ItemCat> findItemCat() {//ItemCat itemCat = new ItemCat();//itemCat.setId(100L);//itemCat.setStatus(1);return itemCatMapper.select(null);}

    ?

    1.3.5?編輯ItemCatController

    ?

    1.4?商品分類列表的實(shí)現(xiàn)

    1.4.1?頁面的Url分析

    ?

    ?

    ?

    1.4.2?分析樹形結(jié)構(gòu)

    ?

    {"id":2,"text":"商品名",state:"closed"}

    :state的屬性如果是closed,表示這個是父節(jié)點(diǎn),它還有子節(jié)點(diǎn)。open代表子節(jié)點(diǎn)

    ?

    1.4.3??擴(kuò)展節(jié)點(diǎn)

    ?

    ?

    1.4.4?編輯Pojo對象

    說明:根據(jù)格式要求編輯get方法:

    ?

    1.4.5?編輯Controller

    /*** 1.@ResponseBody * 作用:* 如果返回的數(shù)據(jù)時對象則自動的轉(zhuǎn)化為JSON{key:value}* 如果返回的數(shù)據(jù)為String 則按照字符串原樣返回 String* 注意:轉(zhuǎn)化JSON數(shù)據(jù)時,調(diào)用的是對象中的getXXX()方法* @return*///商品分類實(shí)現(xiàn)@RequestMapping("/list")@ResponseBodypublic List<ItemCat> findItemCat(@RequestParam(value="id",defaultValue="0") Long parentId){//Long parentId = 0L; //定義一級菜單的父級//根據(jù)parentId查詢商品的分類信息return itemCatService.findItemCatByParentId(parentId);}

    ?

    1.4.6?編輯Service

    @Overridepublic List<ItemCat> findItemCatByParentId(Long parentId) {ItemCat itemCat = new ItemCat();itemCat.setParentId(parentId);itemCat.setStatus(1); //正常的分類信息return itemCatMapper.select(itemCat);}

    ?

    1.4.7?效果展現(xiàn)

    ?

    ?

    1.5?商品的新增

    1.5.1?分析頁面url

    ?

    ?

    1.5.2?編輯pojo對象

    說明:pojo對象與數(shù)據(jù)庫表一一對應(yīng)

    ?

    1.5.3?編輯Controller

    ?

    1.5.4?編輯Service

    ?

    1.5.5?效果展現(xiàn)

    ?

    1.5.6?EasyUI的校驗(yàn)

  • 必填項(xiàng)
  • data-options="required:true"

  • 設(shè)定值的范圍
  • data-options="min:1,max:99999999,precision:2,required:true"

  • 定義字符的個數(shù)
  • data-options="validType:'length[1,30]'

    1.6?商品的修改

    1.6.1?頁面js分析

    ?

    ?

    ?

    1.6.2?編輯Controller

    //引入日志工具類private static final Logger logger = Logger.getLogger(ItemController.class);@RequestMapping("/update")@ResponseBodypublic SysResult updateItem(Item item){try {itemService.updateItem(item);logger.info("{~~~~~更新成功}");return SysResult.build(200,"更新成功");} catch (Exception e) {e.printStackTrace();//throw new Exception();//記錄日志//System.out.println("sssssss");logger.error("{更新操作失敗}");return SysResult.build(201, "更新失敗");}}

    ?

    1.6.3?編輯Service

    ?

    1.6.4?動態(tài)更新操作(知識回顧)

    <!--測試的動態(tài)更新 set作用:1.動態(tài)更新時使用2.能夠去除where條件之前的多余的1個逗號--><update id="updateUser">update tb_user set name = #{name} age=#{age} where id = #{id}<set><if test="name !=null">name = #{name},</if><if test="age !=null">age = #{age},</if> </set>where id = #{id}</update>

    ?

    1.7?商品刪除

    1.7.1?頁面分析

    ?

    ?

    ?

    ?

    1.7.2?編輯Controller

    ?

    ?

    1.7.3?編輯Service

    ?

    ?

    1.8?商品上架下架

    1.8.1?上架和下架的頁面分析

    ?

    1.8.2?編輯Controller

    ?

    1.8.3?編輯service

    @Overridepublic void updateStatus(int status, Long[] ids) {/*** 方案1:* 在service層通過循環(huán)遍歷的形式實(shí)現(xiàn)操作* 方案2:* 通過Mybatis實(shí)現(xiàn)一次批量修改數(shù)據(jù)的操作*/itemMapper.updateStatus(status,ids);/*for (Long id : ids) {Item item = new Item();item.setId(id); //封裝主鍵item.setStatus(status);item.setUpdated(new Date());itemMapper.updateByPrimaryKeySelective(item);}*/}

    ?

    1.8.4?編輯Mybatis

    <!--批量修改狀態(tài) collection 的取值有如下的幾種1.如果傳遞的數(shù)據(jù)是數(shù)組 array2.如果傳遞的數(shù)據(jù)是List集合 list3.如果傳遞的數(shù)據(jù)是Map map中的key--><update id="updateStatus">update tb_item set status = #{status} where id in(<foreach collection="ids" item="id" separator=",">#{id}</foreach>)
      </update>

    ?

    1.9?Log4j日志

    1.9.1?說明:

  • 項(xiàng)目可以自動的掃描\resources\log4j.properties.名稱必須固定.
  • 引入jar包文件
  • ?

    2?補(bǔ)充知識

    2.1?快捷配置

    說明:能夠在new中出現(xiàn)class?interfacejava的工具類

    ?

    ?

    2.1.1?jQuery Validate

    ?

    ?

    轉(zhuǎn)載于:https://www.cnblogs.com/xiangyuqi/p/8571530.html

    總結(jié)

    以上是生活随笔為你收集整理的通用mapper和分类实现的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。

    主站蜘蛛池模板: 亚洲色图首页 | 波多野结衣高清电影 | 国产一二三区精品 | 女人17片毛片60分钟 | 国产做爰免费视频观看 | 欧美一级视频免费观看 | 五月婷婷视频在线观看 | 三级伦理视频 | 免费av网站在线看 | 天天操妹子 | 国产精品手机视频 | 高潮无码精品色欲av午夜福利 | 欧美国产日韩在线观看 | 欧美精品久 | 中文字幕一区二区人妻在线不卡 | www日韩视频| 色污网站 | 清冷男神被c的合不拢腿男男 | 丰满少妇麻豆av苏语棠 | 凸凹人妻人人澡人人添 | 日本丰满bbwbbw厨房 | 一极黄色大片 | 五月激情小说网 | 香蕉视频在线网址 | 亚洲一级二级三级 | 精品国产综合区久久久久久 | 日本成人高清 | 黄色av国产 | 中文字幕欧美人妻精品 | 国产精品午夜未成人免费观看 | 天堂av在线资源 | 逼特逼在线视频 | 黄色激情毛片 | 三级精品在线 | 国产精品又黄又爽又色无遮挡 | 老版水浒传83版免费播放 | 日本免费一区二区三区最新 | 久久福利影院 | 二男一女一级一片 | 成人熟女一区二区 | 91热爆视频 | 国产一区色 | 91蜜桃| 日本精品一区二区三区视频 | 中文字幕亚洲在线 | 日韩欧美视频免费在线观看 | 黄色麻豆视频 | 亚洲美女黄色片 | 五十路熟母| 久久福利视频导航 | 不卡av在线免费观看 | 欧美日韩麻豆 | 五月婷中文字幕 | 福利在线视频观看 | 999av| 亚洲欧美日韩久久 | 狠狠干在线 | 天天操一操 | 国产精品一区免费 | 热热热av| 秋霞综合网 | 免费激情网| 精品国产99久久久久久 | 免费拍拍拍网站 | 一级大片黄色 | 中文视频一区 | 性福利视频 | 特一级黄色片 | 欧美视频一区 | 午夜av一区二区 | 无码人妻精品一区二区三区99日韩 | 国产精品久久毛片 | 国产一区视频在线观看免费 | 成人性生交大片免费看r链接 | 色图综合网 | 无码国产精品一区二区高潮 | 人妻丰满熟妇岳av无码区hd | 欧美精品91 | www.四虎在线观看 | 成年人黄色小视频 | 午夜久久精品 | 三级第一页 | 韩国美女av| 一级a性色生活片久久无 | 亚洲欧美激情视频 | 欧美日韩久久精品 | 中文字幕日韩欧美一区二区 | 男人的天堂视频 | 性按摩玩人妻hd中文字幕 | 爆乳熟妇一区二区三区 | 欧美一区二区三区激情 | 日本欧美在线 | 亚洲国产第一 | 久久精品国产亚洲av蜜臀色欲 | 欧美激情综合色综合啪啪五月 | 久热免费视频 | 欧美国产精品一区 | 亚洲精品国产日韩 | 婷婷在线视频 |