SpringBoot项目中MybatisPlus的使用(二)

本文主要内容:

  • 自动生成代码(新)
  • Wrapper的使用

本文在SpringBoot项目中MybatisPlus的使用一文基础上修改,升级为springboot的2.1.0.RELEASE版本。

一、自动生成代码
1、mysql数据库

SpringBoot项目中MybatisPlus的使用中已经有了详细的说明,但是在springboot的2.1.0.RELEASE版本下会报错,需要修改以下内容:

  • pom文件中mysql依赖:
		<dependency>
			<groupId>mysql</groupId>
			<artifactId>mysql-connector-java</artifactId>
		</dependency>
  • 修改CodeGenerator中数据源配置(主要是驱动名称变化):
        // 数据源配置
        DataSourceConfig dsc = new DataSourceConfig();
        dsc.setUrl("jdbc:mysql://localhost:3306/frog?useUnicode=true&useSSL=false&characterEncoding=utf8&serverTimezone=GMT");
        dsc.setDriverName("com.mysql.cj.jdbc.Driver");
        dsc.setUsername("root");
        dsc.setPassword("123456");
2、orcale数据库

orcale的驱动一直下载不下载,于是从其他渠道复制了一个jar包,需要安装到本地maven仓库。

  • 复制jar包到本机,为了方便我直接放在maven\bin目录下:
    在这里插入图片描述
  • 在bin目录下打开cmd,执行安装命令:
mvn install:install-file -DgroupId=com.oracle -DartifactId=ojdbc7 -Dversion=12.1.0.1 -Dpackaging=jar -Dfile=ojdbc7-12.1.0.1.jar
  • 打开maven本地仓库查看已经完成:
    在这里插入图片描述
  • 在pom文件中引入:
		<dependency>
			<groupId>com.oracle</groupId>
			<artifactId>ojdbc7</artifactId>
			<version>12.1.0.1</version>
		</dependency>
  • 修改CodeGenerator中数据源配置:
	    DataSourceConfig dsc = new DataSourceConfig();
		dsc.setUrl("jdbc:oracle:thin:@localhost:1521/frog");
        dsc.setDriverName("oracle.jdbc.OracleDriver");
        dsc.setUsername("frog");
        dsc.setPassword("frog123456");
二、Wrapper的使用(v3.0.1以上)

熟练的使用Wrapper能够减少xml中简单sql语句的重复编写,很大程度上节约了开发时间。例如:

1、全表扫描(参数为null):
    @Autowired
    private FrogMapper frogMapper;

    public void test() {
        Integer count = frogMapper.selectCount(null);
    }

SELECT COUNT(1) FROM frog

2、WHERE条件:
	QueryWrapper<Frog> wrapper = new QueryWrapper<>();
    wrapper.eq("id", 1);
    wrapper.ge("size", 5.1);
    Integer count = frogMapper.selectCount(wrapper);

Preparing: SELECT COUNT(1) FROM frog WHERE id = ? AND size >= ?
Parameters: 1(Integer), 5.1(Double)

下面罗列了常用的where条件(源码中都有注释,可以下载查看):

方法含义sql
eq等于=
ne不等于<>
gt大于>
lt小于<
ge大于等于>=
le小于等于<=
betweenBETWEEN 值1 AND 值2BETWEEN … AND …
likeLIKE ‘%值%’LIKE
likeLeftLIKE ‘%值’LIKE ‘%…’
isNull字段 IS NULLIS NULL
in字段 IN (value.get(0), value.get(1), …)IN (a,b,…)
orderBy排序:ORDER BY 字段, …order by
groupBy分组:GROUP BY 字段, …group by
havingHAVING ( sql语句 )having
3、AND 和 OR

按以上方式组成where条件语句默认都是and逻辑关系,如果是以下条件关系就需要稍作改动。

  • SQL 1:

Preparing: SELECT COUNT(1) FROM frog WHERE id = ? OR size >= ? AND name LIKE ?
Parameters: 1(Integer), 5.1(Double), a%(String)

		QueryWrapper<Frog> wrapper = new QueryWrapper<>();
        wrapper.eq("id", 1);
        wrapper.or();
        wrapper.ge("size", 5.1);
        wrapper.likeRight("name", "a");
        Integer count = frogMapper.selectCount(wrapper);
  • SQL 2:

Preparing: SELECT COUNT(1) FROM frog WHERE id = ? OR ( size >= ? AND name LIKE ? ) AND name LIKE ?
Parameters: 1(Integer), 5.1(Double), b%(String), a%(String)

		QueryWrapper<Frog> wrapper = new QueryWrapper<>();
        wrapper.eq("id", 1);
        wrapper.or(t -> t.ge("size", 5.1).likeRight("name","b"));
        wrapper.likeRight("name", "a");
        Integer count = frogMapper.selectCount(wrapper);
4、使用apply构造复杂SQL

复杂sql可以使用apply方法拼接,但是不推荐这么写,最好还是写在xml更容易阅读,另外还是sql注入的风险。

		QueryWrapper<Frog> wrapper = new QueryWrapper<>();
        wrapper.in("color", "red","blue","yellow");
        wrapper.apply("size = (select max(size) from frog group by color)");
        Integer count = frogMapper.selectCount(wrapper);

Preparing: SELECT COUNT(1) FROM frog WHERE color IN (?,?,?) AND size = (select max(size) from frog group by color)
Parameters: red(String), blue(String), yellow(String)

5、lambda表达式写法
		QueryWrapper<Frog> wrapper = new QueryWrapper<>();
        wrapper.lambda().eq(Frog::getColor, "green")
                .ge(Frog::getSize, 5.2);
        Integer count = frogMapper.selectCount(wrapper);

SELECT COUNT(1) FROM frog WHERE color = ? AND size >= ?
Parameters: green(String), 5.2(Double)

三、总结

本篇主要对mybatisplus代码生成功能中mysql和orcale数据源配置的完善,以及使用wrapper构建简单sql语句常用方法进行总结,因为开发中经常使用,即使简单也值得记录。

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
SpringBoot项目使用Mybatis-Plus进行分页查询有两种方式,一种是手动实现,另一种是使用框架实现。 1. 手动实现分页查询:这种方式需要通过编写SQL语句来实现分页查询。首先需要在Mapper接口定义一个方法,方法接收分页参数,并在SQL语句使用LIMIT关键字来限制查询结果的数量。然后在Service层调用Mapper接口的方法,传入分页参数即可实现分页查询。 引用提到了手动实现分页查询的具体实现流程,你可以参考该引用内容来了解更详细的步骤。 2. 使用框架实现分页查询:Mybatis-Plus框架提供了一个Page类来实现分页查询。首先需要在Mapper接口继承BaseMapper接口,并使用@Mapper注解标注该接口。然后在Service层调用BaseMapper接口的selectPage方法,传入分页参数和查询条件即可实现分页查询。 引用提到了SpringBoot整合Mybatis-Plus实现分页查询的概述,你可以参考该引用内容来了解更多细节。 此外,引用提供了解决Mybatis-Plus插件分页查询不起作用的问题,如果你遇到了这个问题,可以参考该引用内容来解决。 总结来说,SpringBoot项目使用Mybatis-Plus进行分页查询可以通过手动实现或使用框架来实现。手动实现需要编写SQL语句并限制查询结果的数量,而使用框架则可以利用框架提供的Page类来实现分页查询。具体选择哪种方式取决于你的需求和项目的情况。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* [SpringBoot整合mybatis-plus实现分页查询(建议收藏)](https://blog.csdn.net/weixin_65950231/article/details/129075332)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] - *3* [完美解决MybatisPlus插件分页查询不起作用总是查询全部数据问题](https://download.csdn.net/download/weixin_38723753/12821134)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值