MyBatisX是一个基于MyBatis的增强插件,它提供了一些实用的功能,如自动分页、通用Mapper等。本文将介绍如何安装MyBatisX插件以及如何使用注解进行开发。
一、安装MyBatisX插件
-
MybatisX 是一款基于 IDEA 的快速开发插件,为效率而生。
-
主要功能
XML映射配置文件 和 接口方法 间相互跳转 根据接口方法生成 statement
-
安装方式
点击 file ,选择 settings ,就能看到如下图所示界面
注意:安装完毕后需要重启IDEA
-
插件效果
红色头绳的表示映射配置文件,蓝色头绳的表示mapper接口。在mapper接口点击红色头绳的小鸟图标会自动跳转
到对应的映射配置文件,在映射配置文件中点击蓝色头绳的小鸟图标会自动跳转到对应的mapper接口。也可以在
mapper接口中定义方法,自动生成映射配置文件中的 statement ,如图所示
二,Mybatis注解实现CRUD
MyBatis注解开发是一种基于Java注解的方式来简化MyBatis的配置和操作数据库的方法。相比于传统的XML配置文件方式,注解开发更加简洁、易读、易于维护。
使用注解开发会比配置文件开发更加方便。如下就是使用注解进行开发
@Select(value = "select * from tb_user where id = #{id}")
public User select(int id);
注意:
注解是用来替换映射配置文件方式配置的,所以使用了注解,
就不需要再映射配置文件中书写对应的 statement
Mybatis 针对 CURD 操作都提供了对应的注解,已经做到见名知意。如下:
在MyBatis中,常用的注解有以下几种:
-
@Mapper:用于标识一个接口为MyBatis的Mapper接口,这样MyBatis就可以自动扫描到这个接口并进行相关的配置。
-
@Select:用于标注查询语句的方法,可以指定SQL语句、参数映射等信息。
-
@Insert:用于标注插入语句的方法,可以指定SQL语句、参数映射等信息。
-
@Update:用于标注更新语句的方法,可以指定SQL语句、参数映射等信息。
-
@Delete:用于标注删除语句的方法,可以指定SQL语句、参数映射等信息。
-
@Results:用于标注查询结果集映射的方法,可以指定返回实体类的类型和属性。
-
@Result:用于标注查询结果集中的单个字段映射的方法,可以指定返回实体类的属性和数据库字段名。
-
@Param:用于标注查询方法中的参数,可以指定参数的名称和类型。
接下来我们做一个案例来使用 Mybatis 的注解开发
代码实现:
下面是一个使用注解开发的示例:
@Mapper
public interface UserMapper {
@Select("SELECT * FROM user WHERE id = #{id}")
User getUserById(@Param("id") int id);
@Insert("INSERT INTO user(name, age) VALUES(#{name}, #{age})")
void addUser(User user);
@Update("UPDATE user SET name = #{name}, age = #{age} WHERE id = #{id}")
void updateUser(User user);
@Delete("DELETE FROM user WHERE id = #{id}")
void deleteUser(@Param("id") int id);
}
在上面的示例中,我们定义了一个UserMapper接口,并使用注解标注了查询、插入、更新和删除方法。通过这种方式,我们可以省去编写XML配置文件的步骤,使代码更加简洁和易于理解。
三,利MyBatisX注解实现CRUD
MyBatisX支持多种注解,如@TableName、@TableField、@TableId等。以下是一个简单的例子:
实体类:
package com.example.demo.entity;
import com.baomidou.mybatisplus.annotation.TableName;
import java.io.Serializable;
@TableName("user") // 指定表名
public class User implements Serializable {
private static final long serialVersionUID = 1L;
@TableId("id") // 指定主键字段名
private Long id;
@TableField("name") // 指定非主键字段名
private String name;
// 省略getter和setter方法
}
Mapper接口:
package com.example.demo.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.example.demo.entity.User;
import org.apache.ibatis.annotations.Mapper;
import org.springframework.stereotype.Repository;
@Mapper // 标识为MyBatis的Mapper接口
@Repository // 标识为Spring的组件类
public interface UserMapper extends BaseMapper<User> {
}
在这个例子中,我们使用了@TableName、@TableId和@TableField注解来指定实体类与数据库表之间的映射关系。这样,我们就可以直接使用MyBatisX提供的方法进行CRUD操作了。
注意:在官方文档中 入门 中有这样的一段话:
所以,注解完成简单功能,配置文件完成复杂功能。
下面介绍核心配置文件
四, MyBatis核心配置文件
核心配置文件中现有的配置之前已经给大家进行了解释,而核心配置文件中还可以配置很多内容。我们可以通过查询官网看可以配置的内容
接下来我们先对里面的一些配置进行讲解。
- 多环境配置
在核心配置文件的 environments 标签中其实是可以配置多个 environment ,使用 id 给每段环境起名,在environments 中使用 default=‘环境id’ 来指定使用哪儿段配置。我们一般就配置一个 environment 即可。
<environments default="development">
<environment id="development">
<transactionManager type="JDBC"/>
<dataSource type="POOLED">
<!--数据库连接信息-->
<property name="driver" value="com.mysql.jdbc.Driver"/>
<property name="url" value="jdbc:mysql:///mybatis?useSSL=false"/>
<property name="username" value="root"/>
<property name="password" value="1234"/>
</dataSource>
</environment>
<environment id="test">
<transactionManager type="JDBC"/>
<dataSource type="POOLED">
<!--数据库连接信息-->
<property name="driver" value="com.mysql.jdbc.Driver"/>
<property name="url" value="jdbc:mysql:///mydatabase?useSSL=false"/>
<property name="username" value="root"/>
<property name="password" value="1234"/>
</dataSource>
</environment>
</environments>
- 类型别名
在映射配置文件中的 resultType 属性需要配置数据封装的类型(类的全限定名)。而每次这样写是特别麻烦的,Mybatis提供了 类型别名 (typeAliases) 可以简化这部分的书写。
首先需要现在核心配置文件中配置类型别名,也就意味着给pojo包下所有的类起了别名(别名就是类名),不区分大小写。
内容如下:
<typeAliases>
<!--name属性的值是实体类所在包-->
<package name="com.itheima.pojo"/>
</typeAliases>
通过上述的配置,我们就可以简化映射配置文件中 resultType 属性值的编写
```xml
<mapper namespace="com.itheima.mapper.UserMapper">
<select id="selectAll" resultType="user">
select * from tb_user;
</select>
</mapper>