SpringBoot+Mybatis+通用Mapper整合security

本文介绍通用Mapper对MyBatis的封装及其在实际项目中的应用,包括配置方法、解决常见问题及如何结合分页插件提升开发效率。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

写在前面

写这篇文章主要是为了纪念下走过的坑,记得老大说过

“如果我早知道通用Mapper是中国人写的框架我就不让你们用了”

通用mapper简介

通用mapper主要是对Mybatis进行了一定的封装,我们在使用mybatis时候面对的一个比较烦的问题就是经常需要使用xml对一些比较简单的单表进行增删改查,通用Mapper提供了这样的一套规范 ,让我们在开发的时候可以通过集成一个写好的Mapper类来减少我们对单表的操作.

讲一下Mybatis

  • 优点:
    • 易于上手和掌握
    • sql写在xml里,便于统一管理和优化。
    • 接触sql与代码的耦合
    • 支持自动映射
    • 提供xml标签,支持动态拼接sql
  • 缺点
    • sql工作量很大,尤其是字段多,关联多表是,更是如此.
    • sql依赖数据库,导师制数据库移植性差.
    • dao层方法不能进行重载
    • dao层过于简单,对象组装的工作量较大
    • 虽然提供了动态拼接sql的功能,但是标签的可读性很差,而且在拼接的时候也是受到限制的
    • 缓存使用不当很容易造成脏数据

总结一下吧

在使用Mybatis的时候前期开发很容易但是对数据库的依赖很严重如果在开发的时候想将数据库从mysql换成Orcale是不可能的,但是如果使用Hibernate就可以很容易的更换过来.mybatis的最大优势就是它上手容易,操作简单,开发人员可以通过优化自己的sql来提高性能,而不是像hibernate那样在使用的时候需要有很多注意的地方.

进入正题吧


# mybatis配置
mybatis:
  type-aliases-package: tk.mybatis.springboot.model
  mapper-locations: classpath:mapper/*.xml
  configuration:
    map-underscore-to-camel-case: true
# mapper配置
mapper:
  mappers:
    - top.jbzm.demo.springsecuritymybatic.mapper
  not-empty: false
  identity: MYSQL
  style: camelhump
  enable-method-annotation: true
# pagehelper配置
pagehelper:
  helperDialect: mysql
  reasonable: true
  supportMethodsArguments: true
  params: count=countSql
        <!-- mysql连接使用 -->
        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <scope>runtime</scope>
        </dependency>
        <!-- 直接引用通用mapper -->
        <dependency>
            <groupId>tk.mybatis</groupId>
            <artifactId>mapper-spring-boot-starter</artifactId>
            <version>1.2.3</version>
        </dependency>
        <!-- 引用分页工具 -->
        <dependency>
            <groupId>com.github.pagehelper</groupId>
            <artifactId>pagehelper-spring-boot-starter</artifactId>
            <version>1.2.3</version>
        </dependency>
        <!-- mybatis -->
        <dependency>
            <groupId>org.mybatis</groupId>
            <artifactId>mybatis</artifactId>
            <version>3.4.5</version>
        </dependency>

简单的介绍下上面的配置,首先引入了通用Mapper的start和分页插件的start,这两个组合起来使用真的是6到飞起.之后会在后面演示.
最上面的yml配置文件(其实都引用了start,理论上来讲是不会需要配置的,这些配置很多都是默认的),上面的配置文件指定了所引用的mapper包,添加Mybatis的驼峰命名法.其他的配置就省略了总之都是从官网粘过来的.

实战Demo

配置entity这里有个小坑

@EqualsAndHashCode(callSuper = true)
@Data
@ToString(callSuper = true)
@Table(name = "t_user")
public class User extends BaseEntity{


    private String username;
    private String password;

}

这里需要指定表明是t_user
配置Mapper里面的内容

@Component
public interface TagMapper extends Mapper<Tag> {
    @Select(value = "select * from t_tag where status=#{status} and channel=#{channel}")
    List<Tag> selectAllTagByPage(@Param("status") Integer status, @Param("channel") Integer channel, @Param("pageNum") int pageNum, @Param("pageSize") int pageSize);

    @Select(value = "select * from t_tag")
    List<Tag> selectAllJBZM(@Param("lol") int lol);
}

这里我都是使用自定义sql进行查询的.

    @Test
    public void test02() {
        PageInfo<Tag> pageInfo = PageHelper.startPage(1, 10).doSelectPageInfo(() -> tagMapper.selectAll());
        Page<Tag> page = PageHelper.startPage(1, 10).doSelectPage(() -> tagMapper.selectAllJBZM(1));
        pageInfo.getList().forEach(System.out::println);
        page.getResult().forEach(System.out::println);
        System.out.println(page.toString());
    }

简单的实现了一个demo
通过分页插件完成了分页
这里写图片描述

先写到这吧目前security遇到了一些坑….

项目描述 在上家公司自己集成的一套系统,用了两个多月的时间完成的:Springboot+Mybatis-plus+ SpringMvc+Shiro+Redis企业级开发系统 Springboot作为容器,使用mybatis作为持久层框架 使用官方推荐的thymeleaf做为模板引擎,shiro作为安全框架,主流技术 几乎零XML,极简配置 两套UI实现(bootstrap+layer ui),可以自由切换 报表后端采用技术: SpringBoot整合SSM(Spring+Mybatis-plus+ SpringMvc),spring security 全注解式的权限管理和JWT方式禁用Session,采用redis存储token及权限信息 报表前端采用Bootstrap框架,结合Jquery Ajax,整合前端Layer.js(提供弹窗)+Bootstrap-table(数据列表展示)+ Bootstrap-Export(各种报表导出SQL,Excel,pdf等)框架,整合Echars,各类图表的展示(折线图,饼图,直方图等),使用了layui的弹出层、菜单、文件上传、富文本编辑、日历、选项卡、数据表格等 Oracle关系型数据库以及非关系型数据库(Redis),Oracle 性能调优(PL/SQL语言,SQL查询优化,存储过程等),用Redis做中间缓存,缓存数据 实现异步处理,定时任务,整合Quartz Job以及Spring Task 邮件管理功能, 整合spring-boot-starter-mail发送邮件等, 数据源:druid 用户管理,菜单管理,角色管理,代码生成 运行环境 jdk8+oracle+redis+IntelliJ IDEA+maven 项目技术(必填) Springboot+Mybatis-plus+ SpringMvc+Shiro+Redis 数据库文件 压缩包内 jar包文件 maven搭建 Springboot+Mybatis-plus+ SpringMvc+Shiro+Redis企业级报表后台管理系统 http://localhost:/8080/login admin admin Springboot+Mybatis-plus+ SpringMvc+Shiro+Redis企业级报表后台管理系统Springboot+Mybatis-plus+ SpringMvc+Shiro+Redis企业级报表后台管理系统Springboot+Mybatis-plus+ SpringMvc+Shiro+Redis企业级报表后台管理系统Springboot+Mybatis-plus+ SpringMvc+Shiro+Redis企业级报表后台管理系统Springboot+Mybatis-plus+ SpringMvc+Shiro+Redis企业级报表后台管理系统
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值