通用Mapper

1.1 通用Mapper介绍

1.1.1 架构设计

说明:使用了通用Mapper后,单表的增删改查操作会自动的进行维护.

问题:如何才能实现数据的通用并且是动态的?

1.2 JPA介绍

1.2.1 JPA的思想

说明:以面向对象的思维操作数据库!!

举例说明:

  1. 早期sql语句都需要人为的编辑.
  2. 关系型数据库中数据表与pojo一一对应.所以可以使用对象操作数据库
  3. Sql:insert into user values(XXXX);

UserMapper.insert(user);

1.2.2 JPA的发展

说明:有了JPA思想后,Haibernate将JPA实现.

特点:

  1. 能够实现面向对象的操作
  2. 能够实现自动的对象关系映射(orm)

问题:

例子:

如果做插入操作,先会执行查询操作,之后再插入.

实现业务逻辑时,会产生大量的冗余的sql语句.数据库的执行速度变慢.

2.需要学习特定的数据库语句Hql(适用于多表操作)

发展:

Mybatis的发展.

特点:

  1. 能够实现自动的对象关系映射
  2. Sql语句需要自己根据业务逻辑自己实现,性能更高
  3. 通用Mapper出现后,Mybatis也有了面向对象的功能.

1.2.3 通用Mapper引入

<!-- 通用Mapper插件 --><plugin interceptor="com.github.abel533.mapperhelper.MapperInterceptor"><!--主键自增回写方法,默认值MYSQL,详细说明请看文档 --><property name="IDENTITY" value="MYSQL" /><!--通用Mapper接口,多个通用接口用逗号隔开 --><property name="mappers" value="com.jt.common.mapper.SysMapper" /></plugin>

1.2.4 Mapper的接口的注解形式

/*** Mybatis的接口中可以添加注解,完成特定的操作* 说明:*     Mybatis中的直接根据映射标签后期开发的.*  功能上与映射文件一致.* @return*/@Select(value="select * from item")//@Insert("")//@Delete("")//@Update("")List<Item> selectAll();

1.2.5 通用Mapper调用规则

方法名称是对应的,可以自动的进行调用

1.3 商品的新增

1.3.1 商品分类的级数

说明:一般的电商网站的商品分类一般都是3级.经过了科学的考证的

1.3.2 构建ItemCat对象

1.3.3 构建ItemCatMapper

1.3.4 定义ItemCatService

@Service
public class ItemCatServiceImpl implements ItemCatService {@Autowiredprivate ItemCatMapper itemCatMapper;/*** 使用通用Mapper(JPA),传入的对象最终充当了查询的where条件* select * from tb_item_cat where id = 100 and status = 1* * 总结:ItemCat对象会将不为Null的属性充当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 商品分类列表的实现

1.4.1 页面的Url分析

1.4.2 分析树形结构

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

注:state的属性如果是closed,表示这个是父节点,它还有子节点。open代表子节点

1.4.3  扩展节点

1.4.4 编辑Pojo对象

说明:根据格式要求编辑get方法:

1.4.5 编辑Controller

/*** 1.@ResponseBody *  作用:*      如果返回的数据时对象则自动的转化为JSON{key:value}*      如果返回的数据为String  则按照字符串原样返回 String*  注意:转化JSON数据时,调用的是对象中的getXXX()方法* @return*///商品分类实现@RequestMapping("/list")@ResponseBodypublic List<ItemCat> findItemCat(@RequestParam(value="id",defaultValue="0") Long parentId){//Long parentId = 0L;    //定义一级菜单的父级//根据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 效果展现

1.5 商品的新增

1.5.1 分析页面url

1.5.2 编辑pojo对象

说明:将pojo对象与数据库表一一对应

1.5.3 编辑Controller

1.5.4 编辑Service

1.5.5 效果展现

1.5.6 EasyUI的校验

  1. 必填项

data-options="required:true"

  1. 设定值的范围

data-options="min:1,max:99999999,precision:2,required:true"

  1. 定义字符的个数

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 动态更新操作(知识回顾)

<!--测试的动态更新 set作用:1.动态更新时使用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层通过循环遍历的形式实现操作* 方案2:*     通过Mybatis实现一次批量修改数据的操作*/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

<!--批量修改状态 collection 的取值有如下的几种1.如果传递的数据是数组              array2.如果传递的数据是List集合      list3.如果传递的数据是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 说明:

  1. 项目可以自动的扫描\resources\log4j.properties.名称必须固定.
  2. 引入jar包文件

补充知识

2.1 快捷配置

说明:能够在new中出现class interface等java的工具类

2.1.1 jQuery Validate

转载于:https://www.cnblogs.com/xiangyuqi/p/8571530.html

通用mapper和分类实现相关推荐

  1. 使用通用mapper实现条件查询_【微服务】152:Stream流和通用mapper批量查询的使用...

    今天是刘小爱自学Java的第152天. 感谢你的观看,谢谢你. 学习计划安排如下: 补充完昨天商品查询中关于分类和品牌的部分,其中牵扯到了两个非常重要的知识点: Stream流的使用,这个学过后基本就 ...

  2. 【通用mapper】项目升级通用Mapper引发的一连串问题以及问题解决

    项目环境 通用Mapper版本 <dependency><groupId>tk.mybatis</groupId><artifactId>mapper- ...

  3. Mybatis之通用Mapper使用

    增加Maven依赖 <!-- mybatis 通用mapper --> <dependency><groupId>tk.mybatis</groupId> ...

  4. MyBatis 为什么需要通用 Mapper ?

    一.通用 Mapper 的用途 ? 我个人最早用 MyBatis 时,先是完全手写,然后用上了 MyBatis 代码生成器(简称为 MBG),在使用 MBG 过程中,发现一个很麻烦的问题,如果数据库字 ...

  5. Mybatis 通用 Mapper 使用 ①

    简介 官网链接:https://mapperhelper.github.io/docs/ 通用Mapper都可以极大的方便开发人员.可以随意的按照自己的需要选择通用方法,还可以很方便的开发自己的通用方 ...

  6. MyBatis 通用Mapper 入门教程

    通用Mapper 简单教程 Mapper 项目地址: [http://git.oschina.net/free/Mapper] 本教程代码地址: [https://github.com/oakshar ...

  7. 如何使用通用Mapper

    集成方法请看上面的文档,集成后,可以继续阅读本页文档. 1. 继承通用的Mapper<T>,必须指定泛型<T> 例如下面的例子: public interface UserIn ...

  8. Mybatis通用Mapper

    极其方便的使用Mybatis单表的增删改查 项目地址:http://git.oschina.net/free/Mapper 优点? 不客气的说,使用这个通用Mapper甚至能改变你对Mybatis单表 ...

  9. SpringBoot整合Mybatis,使用通用mapper和PageHelper进行分页

    乐哉码农 上节介绍了如何整合Security,这节就说下如何再Springboot下使用持久层框架mybatis和牛人封装的通用mapper与mybatis的整合,直接进入正题吧! 1.首先引入我们需 ...

最新文章

  1. luogu P1231 教辅的组成(建图、拆点、最大流)
  2. 基于动态代码生成技术的动态对象工厂
  3. zzuliOJ 2536: 绿绿学姐与AI 1
  4. mongoose查询不到数据表中的数据的问题
  5. HDU2255(带权二分图的最大匹配)
  6. 用pycharm搭建odoo 12, 11,10 开发调试环境
  7. javap 指令集 (转)
  8. EDA技术及应用实验2运行结果截图
  9. LABVIEW 学习-温度采集系统
  10. 如何解决移动硬盘/U盘无法打开并在电脑上显示为“本地磁盘”的问题
  11. 【Java面试系列】ElasticSearch面试题
  12. 麻省理工大学线性代数1806(2)消元法及矩阵消元法 矩阵行变换、列变换 置换矩阵 逆矩阵 如沐春风、如饮甘露、醍醐灌顶的线性代数
  13. iOS上架详细通关教程(提交到AppStore)
  14. win7安全模式计算机管理在哪里,Win7怎么进入安全模式 3种方法轻松进入Win7安全模式...
  15. 推荐一款开源的ICO制作神器——greenfish
  16. 关于ext4文件系统概述
  17. Actin机器人控制软件,专注于机器人路径规划
  18. CodeForces 520B Two Buttons
  19. c# Byte解压,压缩
  20. 「融云政企数智办公解决方案」入选「大信创产品目录」

热门文章

  1. 异步请求时有时会让js不起作用,那么重新加载js
  2. gns3 1.3.9升级到gns3 1.3.11后,升级gns3 iouvm解决版本不匹配问题
  3. mysql常用命令及问题汇总
  4. Juniper NetScreen 基于源NAT转换
  5. 怎么取消任意Windows窗口总在最前
  6. BS Model in option
  7. 关于什么事情能做到和不能做到的思考
  8. 上海启动5G试用!104页PPT,为你深度解析5G终端的创新和机遇
  9. sql server的远程连接
  10. string与char*的转换(转载)