一、快速入门
MyBatisPlus官方提供了starter,其中集成了Mybatis和MybatisPlus的所有功能,并且实现了自动装配效果。
1.1 引入MyBatisPlus起步依赖
<dependency> <groupId>com.baomidou</groupId> <artifactId>mybatis-plus-boot-starter</artifactId> <version>3.4.2</version> </dependency>
1.2 自定义的Mapper继承MyBatisPlus的BaseMapper接口
public interface UserMapper extends BaseMapper<User> { }
1.3 对比Mybatis
- 要操作的数据库表结构:
create table user ( id int not null primary key, account int null );
- Mybatis的UserMapper.java:
public interface UserMapper { int insert(User row); int insertSelective(User row); User selectByPrimaryKey(Integer id); int updateByPrimaryKeySelective(User row); int updateByPrimaryKey(User row); }
- Mybatis的UserMapper .xml:
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> <mapper namespace="com.demo.mapper.UserMapper"> <resultMap id="BaseResultMap" type="com.demo.po.User"> </resultMap> <sql id="Base_Column_List"> id, account </sql> <select id="selectByPrimaryKey" parameterType="java.lang.Integer" resultMap="BaseResultMap"> select <include refid="Base_Column_List" /> from user where id = #{id,jdbcType=INTEGER} </select> <insert id="insert" parameterType="com.demo.po.User"> insert into user (id, account) values (#{id,jdbcType=INTEGER}, #{account,jdbcType=INTEGER}) </insert> <insert id="insertSelective" parameterType="com.demo.po.User"> insert into user <trim prefix="(" suffix=")" suffixOverrides=","> <if test="id != null"> id, </if> <if test="account != null"> account, </if> </trim> <trim prefix="values (" suffix=")" suffixOverrides=","> <if test="id != null"> #{id,jdbcType=INTEGER}, </if> <if test="account != null"> #{account,jdbcType=INTEGER}, </if> </trim> </insert> <update id="updateByPrimaryKeySelective" parameterType="com.demo.po.User"> update user <set> <if test="account != null"> account = #{account,jdbcType=INTEGER}, </if> </set> where id = #{id,jdbcType=INTEGER} </update> <update id="updateByPrimaryKey" parameterType="com.demo.po.User"> update user set account = #{account,jdbcType=INTEGER} where id = #{id,jdbcType=INTEGER} </update> </mapper>
- MyBatisPlus只需UserMapper.java继承 BaseMapper<>即可:
public interface UserMapper extends BaseMapper<User> { }
1.4 MyBatisPlus的增删改查方法
@SpringBootTest class DemoApplicationTests { @Autowired private UserMapper userMapper; @Test void testInsert() { User user = new User(); user.setId(5); user.setAccount(2000); userMapper.insert(user); } @Test void testSelectById() { User user = userMapper.selectById(5); System.out.println(user); } @Test void testUpdateById() { User user = new User(); user.setId(5); user.setAccount(8000); userMapper.updateById(user); } @Test void testDeleteById() { userMapper.deleteById(5); } }
二、MyBatisPlus常用注解
MyBatisPlus:通过扫描实体类,并基于反射获取实体类信息作为数据库表信息。
- 类名驼峰转下划线作为表名
- 名为id的字段作为主键
- 变量名驼峰转下划线作为表的字段名
2.1 MyBatisPlus常用注解如下
- @TableName:用来指定表名
- @TableId:用来指定表中的主键字段信息
- @TableFiled:用来指定表中的普通字段信息
MyBatisPlus官网:https://www.baomidou.com/pages/223848/#tablename
三、MyBatisPlus常用配置
MyBatisPlus中的配置大都是默认配置好的,我们使用的时候基本不用修改大量的配置,除非遇到特殊的情况需要设置一些配置,可以参考MyBatisPlus的官方文档进行修改。
mybatis-plus: type-aliases-package: com.demo.po mapper-locations: classpath*:mapper/**/*.xml # 默认 global-config: db-config: id-type: auto # id类型自增长