热门标签 | HotTags
当前位置:  开发笔记 > 数据库 > 正文

基于Mybatis-Plus的CRUD的实现

这篇文章主要介绍了基于Mybatis-Plus的CRUD的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧

使用mybatis-plus自动生成了5个模块(xml/bean/mapper/service/controller)的代码,这里练习一下mybatis-plus框架下的CRUD.

还是原先的那个springboot项目.

mybatis-plus也是mybatis的增强版,它并未改变mybatis原有功能,只是在传统mybatis原有基础上又新增了一些功能,用以提高开发效率.

比如,在mybatis-plus框架下,项目mapper层接口可通过继承BaseMapper,获取基本的CRUD功能,而无需编写mapper.xml语句.

AutoGenerator自动生成的mapper.xml如下所示:

<&#63;xml version="1.0" encoding="UTF-8"&#63;>



  
  
    
    
    
  

  
  
    soldier_id, soldier_name, join_army_time
  



下面的Mapper接口也是自动生成的,里面什么都不用写:

/**
 * 

* Mapper 接口 *

* * @author gene * @since 2019-09-11 */ public interface SoldierMapper extends BaseMapper { }

项目集成mybatis-plus之后,在大多数CRUD情景下,可以跳过mapper层,直接到业务层接口写接口方法,然后在业务实现类里调用BaseMapper接口内的方法即可.

业务接口(要自己动手写了):

package cn.example.demo.service;

import java.util.List;

import com.baomidou.mybatisplus.core.conditions.Wrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.IService;

import cn.example.demo.bean.Soldier;

/**
 * 

* 服务类 *

* * @author gene * @since 2019-09-11 */ public interface SoldierService extends IService { /** * 增加 * * @param soldier * @return */ int insert(Soldier soldier); /** * 查询全部 * * @return */ List selectAll(Wrapper queryWrapper); /** * 据ID而查 * * @param soldier * @return */ Soldier selectById(Integer soldierId); /** * 更改1行 * * @param soldier * @return */ int updateOne(Soldier soldier); /** * 删除一行 * * @param soldier * @return */ int deleteOne(Soldier soldier); }

实现类:

package cn.example.demo.service.impl;

import com.baomidou.mybatisplus.core.conditions.Wrapper;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;

import cn.example.demo.bean.Soldier;
import cn.example.demo.mapper.SoldierMapper;
import cn.example.demo.service.SoldierService;

import java.util.List;

import org.springframework.stereotype.Service;

/**
 * 

* 服务实现类 *

* * @author gene * @since 2019-09-11 */ @Service public class SoldierServiceImpl extends ServiceImpl implements SoldierService { @Override public int insert(Soldier soldier) { return baseMapper.insert(soldier); } @Override public List selectAll(Wrapper queryWrapper) { return baseMapper.selectList(queryWrapper); } @Override public Soldier selectById(Integer soldierId) { return baseMapper.selectById(soldierId); } @Override public int updateOne(Soldier soldier) { return baseMapper.updateById(soldier); } @Override public int deleteOne(Soldier soldier) { return baseMapper.deleteById(soldier); } }

测试方法,贴一个"增":

  @Autowired
  private SoldierService ss;


  @Test
  public void insertTest() {
    LocalDateTime now = LocalDateTime.now();

    Soldier soldier = new Soldier("yaobuqi", now);

    int affect = ss.insert(soldier);

    System.err.println("affect- " + affect);
  }

收工.

最后是测试期间遇到的异常:

  • java.lang.NoSuchMethodError: org.apache.ibatis.session.Configuration.getDefaultScriptingLanguageInstance() Lorg/apache/ibatis/scripting/LanguageDriver
    • 升级mybatis-spring-boot-starter版本至2.1.0
    • 升级mybatis-generator-core版本至1.3.7
  • dao.InvalidDataAccessApiUsageException: Error attempting to get column 'join_army_time' from result set. Cause: java.sql.SQLFeatureNotSupportedException; null; nested exception is java.sql.SQLFeatureNotSupportedException

简而言之:使用mybatis-plus逆向工程会将数据库中的date类型转换为LocalDateTime,访问接口的时候报错:java.sql.SQLFeatureNotSupportedException.

这是因为druid跟mybatis3.5.1兼容性问题,mybatis-plus-generator 3.1.2引用了mybatis3.5.1版本,而druid-boot-1.1.18尚未与之兼容,应将mybatis-plus版本降至3.1.0或以下即可.

如果上面的法子无效,那就更换druid数据源为hikaricp数据源:

  
    com.zaxxer
    HikariCP
    3.3.1
  

还有一种方法是,把实体类成员的LocalDateTime类型换为Date类型.

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。


推荐阅读
  • BME框架使用中的典型问题解析
    本文主要探讨了BME框架在实际应用中遇到的一些常见问题,包括查询条件为空、动态参数处理及分页查询等场景的解决方案。 ... [详细]
  • 本文档整理了公司内部常用的网站链接和重要资源路径,包括部门周报、内控报销系统、邮件服务等,同时提供了相关数据库的登录信息。 ... [详细]
  • 深入理解Hibernate延迟加载机制
    本文探讨了Hibernate框架中的延迟加载(懒加载)特性,分析其对程序性能的影响及实现原理,同时提供了具体的代码示例来说明如何配置和使用延迟加载。 ... [详细]
  • 本文详细解析了Tomcat服务器的核心配置文件server.xml,包括其主要功能、结构组成及各标签的具体作用。 ... [详细]
  • MyBatis入门指南
    本文详细介绍了MyBatis的基础知识,包括如何整合日志框架(如log4j和logback),使用外部JDBC文件,getMapper()方法的应用,以及别名设置等技巧。 ... [详细]
  • 本文介绍如何使用 Google 开发的 libphonenumber 库在 Java 应用中实现电话号码的有效性验证。该库不仅支持多种国际电话号码的格式化与解析,还提供了一系列强大的验证工具。 ... [详细]
  • 本文详细记录了在Ubuntu 9.10操作系统上从零开始搭建LAMP(Linux, Apache, MySQL, PHP)环境的过程,包括遇到的问题及解决方案。旨在为初次尝试搭建LAMP环境的开发者提供参考。 ... [详细]
  • 本文探讨了Java异常处理的本质,提出了设计模式以优化异常处理,并分析了在AOP模型中异常处理的应用。文章强调了正确使用Java异常对于提升代码质量和维护性的关键作用。 ... [详细]
  • Pikachu平台SQL注入漏洞详解
    本文详细介绍了SQL注入漏洞的基本原理、攻击流程、不同类型注入点的识别与利用方法,以及基于union联合查询、报错信息、布尔盲注、时间盲注等多种技术手段的信息获取方式。同时,探讨了如何通过SQL注入获取操作系统权限,以及HTTP Header注入和宽字节注入等高级技巧。最后,提供了使用SQLMap自动化工具进行漏洞测试的方法和常见的SQL注入防御措施。 ... [详细]
  • 初学者必备:iBATIS入门指南与常见问题解决
    本文旨在为iBATIS初学者提供一份详细的入门指南,并针对官方文档中示例不足的问题提出解决方案。适合零基础学习者。 ... [详细]
  • mybatis相关面试题 ... [详细]
  • 本文介绍了如何在Java中使用`JCheckBoxMenuItem.setMnemonic()`方法,并提供了多个实际应用的代码示例。 ... [详细]
  • 本文探讨了在使用 ClickOnce 部署方式时遇到的自动更新失败问题,包括本地安装与服务器安装的不同表现,并提供了详细的解决方案。 ... [详细]
  • PHP 5.4.8 编译安装指南
    本文详细介绍了如何在Linux环境下编译安装PHP 5.4.8,并配置为FastCGI模式运行。包括所需依赖包的安装、源代码下载、编译配置及启动服务等步骤。 ... [详细]
  • 本文详细介绍了Java中com.sun.xml.bind.v2.runtime.XMLSerializer类下的childAsRoot()方法,并提供了多个实际应用的代码示例,帮助开发者更好地理解和使用该方法。 ... [详细]
author-avatar
firespace
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有