一篇文章带你学习Mybatis-Plus(新手入门)

一篇文章带你学习Mybatis-Plus(新手入门)攻略

1. 什么是Mybatis-Plus

Mybatis-Plus是Mybatis的增强工具,提供了很多实用的功能,比如单表的基本CURD操作、分页查询、条件构造器、代码生成器等等。

2. 如何使用Mybatis-Plus

2.1 引入Mybatis-Plus依赖

在pom.xml中引入以下依赖:

<dependency>
    <groupId>com.baomidou</groupId>
    <artifactId>mybatis-plus-boot-starter</artifactId>
    <version>3.0.7.1</version>
</dependency>

2.2 配置Mybatis-Plus

在application.yml中进行Mybatis-Plus的配置,例如:

mybatis-plus:
  # mapper/xml映射文件地址
  mapper-locations: classpath:mapper/*.xml
  # 主键生成策略
  global-config:
    db-config:
      id-type: auto

2.3 编写实体类

Mybatis-Plus的实体类需要继承Model类或者实现Serializable接口,同时使用注解@TableField指定数据库列名和实体类属性名的映射关系,例如:

@Data
public class User extends Model<User> {

  @TableId(type = IdType.AUTO)
  private Long id;

  @TableField(value = "username")
  private String name;

  private Integer age;

  private String email;

}

2.4 编写Mapper接口和Mapper映射文件

Mybatis-Plus提供了BaseMapper接口,只需要继承它即可继承通用的CRUD操作,例如:

@Mapper
public interface UserMapper extends BaseMapper<User> {
}

对应的Mapper映射文件可以使用Mybatis-Plus自动生成,也可以自己手写,例如:

<mapper namespace="com.example.demo.mapper.UserMapper">

  <resultMap id="BaseResultMap" type="com.example.demo.entity.User">
    <id column="id" property="id" />
    <result column="username" property="name" />
    <result column="age" property="age" />
    <result column="email" property="email" />
  </resultMap>

  <sql id="queryUser">
    select id, username, age, email from user
  </sql>

  <select id="selectById" resultMap="BaseResultMap">
    select * from user where id = #{id}
  </select>

  <select id="selectList" resultMap="BaseResultMap">
    <include refid="queryUser" />
    <where>
      <if test="name != null">
        and username like concat('%',#{name},'%')
      </if>
    </where>
  </select>

  <insert id="insert" parameterType="com.example.demo.entity.User">
    insert into user (username, age, email) 
    values (#{name}, #{age}, #{email})
  </insert>

  <update id="update" parameterType="com.example.demo.entity.User">
    update user set username = #{name}, age = #{age}, email = #{email}
    where id = #{id}
  </update>

  <delete id="deleteById" parameterType="java.lang.Long">
    delete from user where id = #{id}
  </delete>

</mapper>

2.5 编写Service/ServiceImpl

在Service层调用Mapper层的方法,构造查询条件并返回结果,例如:

@Service
public class UserServiceImpl extends ServiceImpl<UserMapper, User> implements UserService {

  @Override
  public List<User> getUserList(String name) {
    QueryWrapper<User> queryWrapper = new QueryWrapper<>();
    queryWrapper.like("username", name);
    return list(queryWrapper);
  }

}

3. Mybatis-Plus的使用示例

3.1 分页查询

Page<User> page = new Page<>(1, 10);
QueryWrapper<User> queryWrapper = new QueryWrapper<>();
queryWrapper.eq("age", 18).orderByDesc("id");
IPage<User> userIPage = userMapper.selectPage(page, queryWrapper);

3.2 插入数据并返回主键ID

User user = new User();
user.setName("zhangsan");
user.setAge(18);
user.setEmail("zhangsan@qq.com");
userMapper.insert(user);
Long id = user.getId();

4. 总结

Mybatis-Plus是一个非常实用的Mybatis增强工具,可以大大提高开发效率。本文简单介绍了Mybatis-Plus的使用步骤和示例,但是Mybatis-Plus提供的功能远不止这些,可以结合官方文档进行深入学习。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:一篇文章带你学习Mybatis-Plus(新手入门) - Python技术站

(0)
上一篇 2023年5月19日
下一篇 2023年5月19日

相关文章

  • 如何实现 Java SpringBoot 自动验证入参数据的有效性

    Java SpringBoot 通过javax.validation.constraints下的注解,实现入参数据自动验证如果碰到 @NotEmpty 否则不生效,注意看下 @RequestBody 前面是否加上了@Valid Validation常用注解汇总 Constraint 详细信息 @Null 被注释的元素必须为 null @NotNull 被注释…

    Java 2023年4月18日
    00
  • SpringBoot Security实现单点登出并清除所有token

    实现单点登出并清除所有token是一个比较常见的需求,Spring Security正是为此而生。下面是实现它的完整攻略: 步骤1:添加依赖 首先,在pom.xml中添加spring-boot-starter-security依赖: <dependencies> … <dependency> <groupId>org.…

    Java 2023年6月3日
    00
  • Java并发编程之LockSupport类详解

    Java并发编程之LockSupport类详解 LockSupport类简介 Java并发编程中,LockSupport类是一个线程阻塞工具,与Object类中的wait()和notify()方法是一样的作用,都可以使线程阻塞或唤醒。不同的是,LockSupport类的唤醒操作不需要持有某个对象的锁,因此可以减少死锁的风险。 LockSupport类主要提供…

    Java 2023年5月19日
    00
  • IDEA项目的依赖(pom.xml文件)导入问题及解决

    下面是详细讲解 IDEA 项目的依赖(pom.xml 文件)导入问题及解决的完整攻略。 一、什么是 pom.xml 文件 pom(Project Object Model)文件是 Maven 中的一个核心概念,也是 Java 项目管理中的重要组成部分。pom.xml 文件主要用来描述 Maven 项目的基本信息、构建信息、依赖信息。 通常情况下,我们在使用 …

    Java 2023年5月20日
    00
  • Apache ActiveMQ任意文件写入漏洞(CVE-2016-3088)复现

    以下是Apache ActiveMQ任意文件写入漏洞(CVE-2016-3088)的完整攻略: 漏洞介绍 Apache ActiveMQ是一款开源的消息队列系统。当使用ActiveMQ的fileserver和http服务时,可以利用该漏洞将任意文件写入至任意路径,从而造成远程代码执行。 漏洞编号:CVE-2016-3088漏洞评级:高危 环境搭建 首先需要搭…

    Java 2023年6月15日
    00
  • Java多线程模拟电影售票过程

    关于Java多线程模拟电影售票过程的攻略,可以分为以下几个步骤: 确定需求 在开始实现之前,需要首先明确需求。在本例中,我们需要模拟一个电影院售票过程。具体而言,要求程序能够模拟多个售票窗口同时对外售票,每个售票窗口需要从已有的电影票中售出一张票。当电影票售罄时,所有售票窗口需要停止售票。最后,统计每个售票窗口售出的票数以及总票数。 实现思路 在明确需求之后…

    Java 2023年5月26日
    00
  • Java生成和解析XML格式文件和字符串的实例代码

    下面我将详细讲解“Java生成和解析XML格式文件和字符串的实例代码”的完整攻略以及其中的两个示例。 1. 什么是XML XML是可扩展标记语言(Extensible Markup Language)的缩写,它是一种用于传输和存储数据的标准格式。XML是自我描述、可扩展的,可以通过文本编辑器或工具生成并解析。在Java应用程序中,XML是一种常见的数据交换格…

    Java 2023年5月20日
    00
  • Mysql到Elasticsearch高效实时同步Debezium实现

    关于Mysql到Elasticsearch高效实时同步Debezium实现的攻略,我可以提供如下具体步骤: 准备工作 安装Mysql、Elasticsearch、Kibana和Debezium Connector并设置好它们的环境变量,确保能正常运行它们。 开启binlog以便Debezium捕获Mysql的数据变更,具体可以在Mysql中修改配置文件my.…

    Java 2023年5月20日
    00
合作推广
合作推广
分享本页
返回顶部