Mybatis-Plus

简介: Mybatis-Plus

一、Mybatis-Plus



1.·MyBatis-Plus(简称 MP)是一个 MyBatis 的增强工具

2.·MP在MyBatis 的基础上只做增强不做改变

3.·为简化开发、提高效率而生


二、Mybatis Plus特性



1.@无侵入

2.·@损耗小

3.@强大的CRUD

4.@多种数据库

5.·@内置分页

6.·@内置主键生成策略


三、Mybatis Plus开发套路



  1. Maven依赖mybatis-plus(v3.1.0去掉mybatis与mybatis-spring)


<dependency>
            <groupId>com.baomidou</groupId>
            <artifactId>mybatis-plus</artifactId>
            <version>3.1.0</version>
        </dependency>


  1. SessionFactory设置为MybatisSqlSessionFactoryBean

<bean id="sqlSessionFactory" class="com.baomidou.mybatisplus.extension.spring.MybatisSqlSessionFactoryBean">
        <!--关联数据源-->
        <property name="dataSource" ref="dataSource"/>
        <!--配置文件地址-->
        <property name="configLocation" value="classpath:mybatis-config.xml"/>
        <!--mapper XML文件保存目录-->
        <property name="mapperLocations" value="classpath:mappers/*.xml"/>
        <!-- mapper resource="goods.xml" -->
    </bean>


  1. 实体类增加注解描述映射关系

//@TableName设置实体与表的对应关系
@TableName("t_goods_detail")
public class GoodsDetail {
    //@TableId用于设置主键属性
    //IdType.AUTO是指自动利用Mysql底层的自动生成功能产生主键
    //主键生成后会自动回填到gdId属性
    @TableId(type = IdType.AUTO)
    private Integer gdId;
    private Integer goodsId;//goods_id
    //如果属性与字段名对应不上,则需要使用@TableField进行说明
    @TableField("gd_pic_url")
    private String picUrl;//gd_pic_url
//    @TableField("gd_order")
    private Integer gdOrder;
    public Integer getGdId() {
        return gdId;
    }
    public void setGdId(Integer gdId) {
        this.gdId = gdId;
    }
    public Integer getGoodsId() {
        return goodsId;
    }
    public void setGoodsId(Integer goodsId) {
        this.goodsId = goodsId;
    }
    public String getPicUrl() {
        return picUrl;
    }
    public void setPicUrl(String picUrl) {
        this.picUrl = picUrl;
    }
    public Integer getGdOrder() {
        return gdOrder;
    }
    public void setGdOrder(Integer gdOrder) {
        this.gdOrder = gdOrder;
    }
}


4.Mapper接口继承BaseMapper

//BaseMapper定义了CRUD的方法声明,在运行时会自动根据实体的注解生成对应的SQL语句
public interface GoodsDetailMapper extends BaseMapper<GoodsDetail> {
    /**
     * 自定义SQL分页查询
     * @param page 第一个对象固定为分页对象
     * @param param 第二个参数Map向SQL传递多参数,但要使用@Param()定义前缀
     * @return 返回分页结果
     */
    public IPage<Map> selectMap(IPage page ,@Param("p") Map param);
}


5.xml文件


p对应参数@parm("p")


<!DOCTYPE mapper
        PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
        "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.itlaoqi.ssm.mapper.GoodsDetailMapper">
    <!--使用mybatis-plus分页插件后,必须在引用参数时增加#{前缀.xxx}-->
    <select id="selectMap" parameterType="java.util.Map" resultType="java.util.LinkedHashMap">
        select
          d.* , g.title
        from
         t_goods_detail d , t_goods g
         where
         d.goods_id = g.goods_id
         and d.gd_order = #{p.order}
         and d.goods_id = #{p.goodsId}
    </select>
</mapper>


四、QueryWrapper查询构造器



@GetMapping("/qw")
    @ResponseBody
    public String testQueryWrapper(){
        /*Mybatis使用QueryWrapper对象简化查询过程*/
        QueryWrapper<GoodsDetail> queryWrapper = new QueryWrapper<GoodsDetail>();
        /**
         * eq 代表精准匹配
         * between 范围匹配
         * like 模糊匹配
         */
        queryWrapper.eq("goods_id", 739);
        queryWrapper.between("gd_order", 100, 501);
        queryWrapper.likeLeft("gd_pic_url", "ED");
        List<GoodsDetail> list = goodsDetailMapper.selectList(queryWrapper);
        for (GoodsDetail gd : list) {
            System.out.println(gd.getGoodsId() + ":" + gd.getPicUrl());
        }
        return "SUCCESS";
    }


五、Mybatis-Plus分页查询


@GetMapping("/p")
    @ResponseBody
    public IPage testPagination(Integer p , Integer r){
        QueryWrapper<GoodsDetail> queryWrapper = new QueryWrapper<GoodsDetail>();
        queryWrapper.eq("gd_order", 100);
        IPage page = new Page(p,r);
        IPage pageResult = goodsDetailMapper.selectPage(page, queryWrapper);
        return pageResult;
    }




相关文章
|
SQL 算法 Java
Mybatis-plus超详细讲解(2022)
MyBatis-Plus(简称 MP)是一个 MyBatis 的增强工具,在 MyBatis 的基础上只做增强不做改变,为简化开发、提高效率而生。 我们的愿景是成为 MyBatis 最好的搭档,就像 魂斗罗 中的 1P、2P,基友搭配,效率翻倍。
3872 1
|
SQL Java 数据库连接
Mybatis之discriminator(鉴别器)详解
前言 最近干了一个工作是使用discriminator去写一个新的API,那么写这个新的API原因是什么呢?原因是这样的:我们的项目使用Mybatis,我们项目中有一个实体类叫做User,在User中还含有很多别的实体类,例如Role,Permission,Address等(有经验的肯定知道这种嵌套实体类的情况,使用和)。
4191 0
|
9月前
|
SQL 缓存 Java
浅谈mybatis
浅谈mybatis
35 1
|
XML Java 数据库连接
MyBatis-Plus
MyBatis-Plus
76 0
|
SQL Java 数据库连接
MyBatis(下)
MyBatis(下)
|
SQL Java 数据库连接
mybatis 中的updateByPrimaryKey与updateByPrimaryKeySelective
mybatis 中的updateByPrimaryKey与updateByPrimaryKeySelective
|
SQL Java 数据库连接
|
SQL XML 缓存
MyBatis
MyBatis
133 0
MyBatis
|
SQL 存储 缓存
Mybatis总结
1、MyBatis简介 1.1 MyBatis历史 1.2 MyBatis特性 2、搭建MyBatis 2.1 MySQL不同版本的注意事项 2.2 创建MyBatis的映射文件 3、核心配置文件详解 4、MyBatis获取参数值的两种方式 4.1 单个字面量类型的参数 4.2 多个字面量类型的参数 4.3 map集合类型的参数 4.4 实体类类型的参数 4.5 使用@Param标识参数 5、MyBatis特殊的SQL执行
179 0
Mybatis总结
Mybatis-Plus中or()的使用
Mybatis-Plus中or()的使用
142 0