springmvc整合mybatis-plus

最近在做项目,最初使用的框架是:spring+mybatis+springmvc+redis+jwt+jsp,后来发现项目中需要编写的sql语句大多重复且简单,为了简化开发,节省开发时间,决定将mybatis换为mybatis-plus进行开发

开始整合

前提:ssm框架已经整合完成

  1. 导入依赖

    导入mybatis-plus的依赖后需要将myabtis和mybatis-spring依赖移除,因为mybatis-plus的依赖中已经集成了,如果不移除可能会产生问题。

    <!--我这里选择导入最新的mybatis-plus依赖,如果导入这个版本的依赖并且你需要使用它的代码生成器,则需要使用最新版的代码生成器-->
    <dependency>
        <groupId>com.baomidou</groupId>
        <artifactId>mybatis-plus</artifactId>
        <version>3.5.1</version>
    </dependency>
    <!--模板引擎,不是必须的-->
    <dependency>
        <groupId>org.apache.velocity</groupId>
        <artifactId>velocity-engine-core</artifactId>
        <version>2.0</version>
    </dependency>
    
  2. 更换spring的xml配置文件中对于mybatis的配置

    重点就是sqlSessionFactory的Class需要更换为com.baomidou.mybatisplus.extension.spring.MybatisSqlSessionFactoryBean

    <bean class="com.baomidou.mybatisplus.extension.spring.MybatisSqlSessionFactoryBean" id="sqlSessionFactory">
        <!--        绑定数据库连接池配置-->
        <property name="dataSource" ref="dataSource"/>
        <!--        mapper.xml文件的位置-->
        <property name="mapperLocations" value="classpath:mapper/*.xml"/>
        <!--        绑定mybatis-config.xml配置文件-->
        <property name="configLocation" value="classpath:mybatis-config.xml"/>
        <!--        设置别名-->
        <property name="typeAliasesPackage" value="com.lzj.entity"/>
        <!-- MP 全局配置注入 -->
        <property name="globalConfig" ref="globalConfig" />
    
    </bean>
    <!-- 定义 MP 全局策略 -->
        <bean id="globalConfig" class="com.baomidou.mybatisplus.core.config.GlobalConfig">
    <!--        全局的主键策略-->
    <!--        <property name="" value="0"/>-->
        </bean>
    
  3. 项目中去使用mybatis-plus简化开发

    1. 创建实体类

    2. 创建mapper层(或者说dao层)

      注意:mapper的接口必需要继承BaseMapper<实体类名称>,否则无法使用mybatis-plus自带的方法

      public interface MenuMapper extends BaseMapper<Menu> {
          /**
           * 获得菜单表全部数据
           * @return
           */
          List<Menu> listMenu();
      
      
      }
      
    3. 创建mapper.xml

    4. 测试类测试

      @RunWith(SpringJUnit4ClassRunner.class)
      @ContextConfiguration(locations = "classpath:applicationContext.xml")
      public class MenuMapperTest {
          @Autowired
          private MenuMapper menuMapper;
      
          @Test
          public void listMenu(){
      
      //        List<Menu> menus = menuMapper.listMenu();
      //        System.out.println(menus);
      //        menuMapper.selectList(null).forEach(menu -> {
      //            System.out.println(menu);
      //        });
      //mapper接口中并没有selectCount方法,这是mybatis-plus所提供的
              System.out.println(menuMapper.selectCount(null));
          }
      }
      

整合时遇到的问题

  1. 无法使用mybatis-plus提供的方法

    出现这个问题后我一直以为是我的mybatis-plus没有整合好,结果到最后发现是我的mapper层接口没有继承BaseMapper类导致的

    image-20220604142239179

  2. 我的实体类中包含了其它实体类的对象,导致查询出错

    这个的解决方法就是在实体类中不是数据库中表的字段上加上注解@TableField(exist = false)即可解决

    image-20220604142616933

  • 1
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

爱学习的大雄

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值