MyBatis-Plus框架(8月2号)

持久层

操作数据存储的层

与什么数据库无关

与什么技术无关

ORM

O(Object)R(Relationship)M(Mapping)对象关系映射

MyBatis框架是一款持久层的ORM框架

MyBatis与JDBC的关系

Mybatis的底层是JDBC,基于反射技术在运行时调用JDBC,实现数据库编程

苞米豆(baomidou)

MyBatis-PlusMyBatis-Plus 官方文档https://baomidou.com/

Mybits-Plus与SpringBoot的关系

Mybatis-Plus框架能够与Spring框架无缝整合

学习一门框架

1、搭建环境

        (1)安装哪些依赖(三方库)

        1、创建项目时选择这三个依赖

        2、添加JSP依赖

        <dependency>
            <groupId>org.apache.tomcat.embed</groupId>
            <artifactId>tomcat-embed-jasper</artifactId>
            <scope>provided</scope>
        </dependency>
        <dependency>
            <groupId>jstl</groupId>
            <artifactId>jstl</artifactId>
            <version>1.2</version>
            <scope>provided</scope>
        </dependency>
        <dependency>
            <groupId>taglibs</groupId>
            <artifactId>standard</artifactId>
            <version>1.1.2</version>
            <scope>provided</scope>
        </dependency>

        (2)需要哪些配置

        3、配置maven打包web目录(写在pom.xml的build标签中,把plugins折叠起来,写在plugins后面) 

        <resources>
            <resource>
                <directory>src/main/web</directory>
                <targetPath>META-INF/resources</targetPath>
                <includes>
                    <include>**/*.*</include>
                </includes>
            </resource>
            <resource>
                <directory>src/main/resources</directory>
                <includes>
                    <include>**/*.xml</include>
                    <include>**/*.properties</include>
                </includes>
            </resource>
        </resources>

        4、配置jsp文件的前缀和后缀(写在resources/application.properties配置文件中)

spring.mvc.view.prefix=/jsp/
spring.mvc.view.suffix=.jsp

        5、对application.properties文件进行修改(Mybatis-Plus基础配置参数)

        (3)框架提供了哪些API,怎么用

2、如何应用

3、研究它的底层

Mybatis-Plus替代了原生的JDBC

代码写在工程的哪个包里面

dao包:用原生的jdbc写,包名就叫dao

mapper包:用mybatis-plus框架写,包名建议叫mapper(模块子包,小于等于启动类)

在mapper子包中定义接口

在xml文件中编写SQL语句

        xml文件写在resources目录中

 

 设置xml文件头

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
        "http://mybatis.org/dtd/mybatis-3-mapper.dtd">

        xml文件格式

SQL语句写在mapper标签里面

 

下载MybatisX,设置mapper和xml建立关系

        在Idea的插件市场搜索并安装MybatisX插件

                实现接口与xml绑定后快速访问

                检查接口中的抽象方法在绑定xml文件中是否有对应标签绑定

        File->Settings->Plugins->MarketPlace

在启动类中实现@MapperScan("mapper包的全路径")注解

如何拿到框架创建的Mapper接口的实现类?

拿不到(因为没有物理文件,它存在于JVM内存中

如何拿到框架创建的Mapper接口的实现类的对象?

 框架说:实现类你拿不到的,对象我帮你创建好放在内存中,你直接拿对象

public class UserMapperImpl implements UserMapper{

        @Override

        public int insert(User user) throws Exception{

        根据接口的绑定关系寻址xml文件

        根据方法的绑定关系寻址绑定的SQL语句        

        获取连接

        预编译SQL

        填充参数

        执行SQL

        }

}

UserMapper userMapper=new UserMapperImpl();

 

不需要在启动类中写代码,在test里写

 需要打印SQL语句,可以在application.properties配置文件中添加

mybatis-plus.configuration.log-impl=org.apache.ibatis.logging.stdout.StdOutImpl

修改数据库的SQL语句

 Mybatis写SQL语句的几种方式

1、在绑定xml文件中写

        <insert></insert>

         <update></update>

        <delete></delte>

        <selectt></select>

2、不需要xml文件,使用注解写

        @Insert

        @Delete

        @Update

        @Select

动态SQL语句还是在xml文件中写比较方便

3、不绑定xml文件,继承官方的BaseMapper接口

        实体类中需要写的:

        @TableName("映射表名")        -->写在实体类的类名上一行

        @TableField("映射字段名")        -->写在实体类和父类的每一个字段名的上一行

        @TableId(value="映射主键名",type=IdType.AUTO)        -->写在父类的主键名的上一行

 

BaseMapper的17种SQL语句

public interface BaseMapper<T> extends Mapper<T> {
//1、未写的字段在SQL语句中默认为空
    int insert(T entity);

//2、serializable是接口,根据id删除
    int deleteById(Serializable id);

//3、根据任意条件删除,传一个hashmap给deleteByMap,将参数作为hashmap的key
//HashMap<String,Object> map=new HashMap();
//map.put("mobile","12525536433");
//--底层是where mobile='12525536433'
    int deleteByMap(@Param("cm") Map<String, Object> columnMap);

//4、略过
    int delete(@Param("ew") Wrapper<T> queryWrapper);

//5、根据id删除
//传一个Arraylist给deleteBatchIds方法
//List<Integer> idList=new ArrayList();
//idList.add(10);
//idList.add(11);
//底层是where id in(10,11)
    int deleteBatchIds(@Param("coll") Collection<? extends Serializable> idList);

//只有语句为null的才不会出现在SQL语句中
    int updateById(@Param("et") T entity);

//略过
    int update(@Param("et") T entity, @Param("ew") Wrapper<T> updateWrapper);

//根据id查询一条完整的数据
    T selectById(Serializable id);

//根据一个ArrayList的id批量查询数据
//传一个Arraylist给deleteBatchIds方法
//List<Integer> idList=new ArrayList();
//idList.add(10);
//idList.add(11);
//底层是where id in(10,11)
//返回一个list
    List<T> selectBatchIds(@Param("coll") Collection<? extends Serializable> idList);

//根据hashmap来查,我们传一个hashmap给selectByMap,它根据我们给的hashmap作为条件查
    List<T> selectByMap(@Param("cm") Map<String, Object> columnMap);

//
    T selectOne(@Param("ew") Wrapper<T> queryWrapper);
//
    Integer selectCount(@Param("ew") Wrapper<T> queryWrapper);

//
    List<T> selectList(@Param("ew") Wrapper<T> queryWrapper);
//
    List<Map<String, Object>> selectMaps(@Param("ew") Wrapper<T> queryWrapper);
//
    List<Object> selectObjs(@Param("ew") Wrapper<T> queryWrapper);
//
    <E extends IPage<T>> E selectPage(E page, @Param("ew") Wrapper<T> queryWrapper);
//
    <E extends IPage<Map<String, Object>>> E selectMapsPage(E page, @Param("ew") Wrapper<T> queryWrapper);
}

Wrapper SQL子句构造器父类

        1、QueryWrapper<T> 作为where条件的构造器

        2、UpdateWrapper<T> 作为set子句的构造器

        IPage分页器

        1、Page类

        不同数据库的分页语句不一样,你需要告诉框架你用的是什么数据库

        MySQL:limit ?,?

        Oracle:基于rownum做子查询 

        在启动类中添加下面的方法,即可告诉mybatis,我们使用的是MySQL数据库

@Bean
    public MybatisPlusInterceptor mybatisPlusInterceptor(){
        MybatisPlusInterceptor mybatisPlusInterceptor = new MybatisPlusInterceptor();
        PaginationInnerInterceptor paginationInnerInterceptor = new PaginationInnerInterceptor(DbType.MYSQL);
        mybatisPlusInterceptor.addInnerInterceptor(paginationInnerInterceptor);
        return mybatisPlusInterceptor;
    }

安装lombok依赖(安装依赖后,我们不需要在实体类中手写getter、setter、toString方法),它自己会帮我们写

<dependency>
    <groupId>org.projectlombok</groupId>
    <artifactId>lombok</artifactId>
</dependency>

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
本项目使用 Spring Boot 搭建, 用于加深对 Spring Boot 与 Shiro 的学习, 项目特色是支持 restful 风格权限控制, 支持对同一 URL, 不同 HTTP Mehtod 的权限控制, 适用于更多的场景. 预览地址: http://ewt.186g.cn 默认管理员账号: admin, 密码: 123456. 普通用户账号: user, 密码: 123456. 为了不影响其他人的浏览体验, 请尽量不要进行删除类的敏感操作. admin 为超级管理员, 自动拥有全部权限. 系统特色 支持根据同 URL, 不同 HTTP Method 来校验权限, 更支持 restful 场景. 集成 OAuth2 登录, 且提供了接口易于拓展开发. 全局异常处理. 根据请求方式区分返回 json 数据还是错误页面. Logback MDC 支持, 将当前登录人和操作者 IP 加入日志中. JSR-303 数据校验 运行环境 JDK 1.8 MySQL 5.7 Redis 配置文件 打开 application.properties 修改 MySQL 和 Redis 连接信息. spring.redis.host=127.0.0.1 spring.redis.port=6379 spring.cache.type=redis spring.datasource.username=root spring.datasource.password=123456 spring.datasource.url=jdbc:mysql://127.0.0.1:3306/shiro_action?useSSL=false&characterEncoding=UTF8 启动项目 在完成了上述步骤后,找到 ShiroActionApplication 启动类, 启动即可. 启动后访问地址为:http://localhost:8080 , 用户名:admin, 密码:123456. 技术选型 前端 前端框架: Layui 后台模板: Z-Admin 后端 SpringBoot 2.2.3.RELEASE Shiro 1.4.0 Mybatis-Plus3.1.2 Druid 1.1.10 PageHelper 1.2.9 Shiro-Redis 3.2.3
RuoYi-plus是一个基于RuoYi升级的springcloud版本管理系统。软件由SMP多商户后台管理系统+API后端接口组成,项目支持cms内容管理和商城业务,提供单机版服务、微服务体系双向选择,微服务集成分布式事务解决方案seata,框架基于SpringBoot2.x,springcloudG版本。 RuoYi-plus项目介绍 项目核心: 多商户权限系统+商城平台+CMS内容管理+微服务API系统 架构技术: 基于SpringBoot2.x, springcloud G版本eureka、hystrix、feign、config、gateway微服务架构体系的全新版本,集成分布式事务解决方案seata,集成redis、quartz、tk.mybatis、lombok、各种设计模式等。 项目优势: 架构更清晰、技术更前沿、代码更整洁、页面更美观、学习商用均可。可用于OA系统、 CRM系统、 PDM系统等二次开发,微服务架构学习,非常适用于公司管理平台旧版本升级、新平台搭建快速整合、同时提供API接口服务(供APP、微端、h5等使用)。 RuoYi-plus内置功能 管理平台基础功能 1、用户管理:用户是系统操作者,该功能主要完成系统用户配置。 2、部门管理:配置系统组织机构(公司、部门、小组),树结构展现支持数据权限。 3、岗位管理:配置系统用户所属担任职务。 4、菜单管理:配置系统菜单,操作权限,按钮权限标识等。 5、角色管理:角色菜单权限分配、设置角色按机构进行数据范围权限划分。 6、字典管理:对系统中经常使用的一些较为固定的数据进行维护。 7、参数管理:对系统动态配置常用参数。 8、通知公告:系统通知公告信息发布维护。 9、操作日志:系统正常操作日志记录和查询;系统异常信息日志记录和查询。 10、登录日志:系统登录日志记录查询包含登录异常。 11、在线用户:当前系统中活跃用户状态监控。 12、定时任务:在线(添加、修改、删除)任务调度包含执行结果日志。 13、代码生成:前后端代码的生成(java、html、xml、sql)支持CRUD下载 。 14、系统接口:根据业务代码自动生成相关的api接口文档。 15、服务监控:监视当前系统CPU、内存、磁盘、堆栈等相关信息。 16、在线构建器:拖动表单元素生成相应的HTML代码。 17、连接池监视:监视当前系统数据库连接池状态,可进行分析SQL找出系统性能瓶颈。 商城业务基础功能 1、商户管理:多商户系统核心业务,商户管理对应权限数据。 2、类别管理:商品类别配置,为商品区分类别。 3、商品管理:每个商户下的商品信息。 CMS内容基础功能 1、文章类别管理:文章列表信息,为文章区分不同类别。 2、文章信息管理:文章具体信息,直接生成文章html页面。 3、素材类别管理:为素材提供类别以区分不同业务的素材图片/视频。 4、素材信息管理:文章信息的素材图片管理。 API接口基础功能 1、业务模块:接收网关gateWay转发请求,api微服务结构处理具体业务,解决分布式事务。 2、订单模块:订单相关业务处理。 3、商品模块:商品相关业务处理。 商用须知 本项目遵循MIT协议,无需授权,留言备注公司信息即可。 演示地址账号:tecom  密码:123456

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值