当前位置: 首页 > news >正文

聊城做网站网络公司/小红书笔记关键词排名优化

聊城做网站网络公司,小红书笔记关键词排名优化,美国 韩国 日本,网站开发系统是什么一. MP简介 我们知道,Mybatis属于一个半自动的ORM框架。之所以说Mybatis是一个半自动的ORM框架,原因是它还需要我们自己在注解或是映射文件中编写SQL语句,并没有实现完全的自动化。SQL语句的编写,虽然增加了项目和业务需求实现的…

一. MP简介

我们知道,Mybatis属于一个半自动的ORM框架。之所以说Mybatis是一个半自动的ORM框架,原因是它还需要我们自己在注解或是映射文件中编写SQL语句,并没有实现完全的自动化。SQL语句的编写,虽然增加了项目和业务需求实现的灵活性,但对一些基本表的操作而言,无疑增加了数据库操作的复杂度,显得没有那么方便。

而Mybatis-Plus则是全自动的ORM框架,按照开闭原则,在不影响Mybatis现有功能的情况下,实现了对Mybatis的功能增强。如果你之前有过Mybatis的使用经验,现在学习Mybatis-Plus简直就是手到擒来。

 今天壹哥就带大家来学习一下Mybatis-Plus框架的基本使用,请掏出小本本吧。

二. Mybatis-Plus特点

MP具有如下基本特点:

  1. 通过在实体类中与数据库表进行映射;

  2. 无需编写SQL语句,简化了CRUD操作;

  3. 通常适用于单表。

三. MP使用

接下来壹哥会在SpringBoot项目环境中,带着大家一起使用Mybatis-Plus。

1. 新建SpringBoot项目

创建SpringBoot项目的过程,壹哥在这里就给大家省略了,如果有不熟悉的同学,可以参考壹哥之前关于SpringBoot的教程文章,链接如下:

SpringBoot2.x系列教程汇总-从入门到精通

2. 添加核心依赖

我们在SpringBoot项目中添加需要用到的核心依赖包。

<dependencies><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency><!-- MySql --><dependency><groupId>mysql</groupId><artifactId>mysql-connector-java</artifactId><version>5.1.47</version></dependency><dependency><groupId>com.baomidou</groupId><artifactId>mybatis-plus-boot-starter</artifactId><version>3.3.1.tmp</version></dependency><!-- 连接池 --><dependency><groupId>com.alibaba</groupId><artifactId>druid</artifactId><version>1.2.8</version></dependency><!--简化bean代码的工具包--><dependency><groupId>org.projectlombok</groupId><artifactId>lombok</artifactId><optional>true</optional><version>1.18.4</version></dependency><dependency><groupId>junit</groupId><artifactId>junit</artifactId><version>4.12</version></dependency><dependency><groupId>org.slf4j</groupId><artifactId>slf4j-log4j12</artifactId><version>1.6.4</version></dependency>
</dependencies>

在这里面比较重要的依赖包,就是今天我们要使用的mybatis-plus-boot-starter这个依赖了。

3. 创建SpringBoot启动程序

和其他SpringBoot项目的启动程序一样,此处也略过。

4. 配置文件

在配置文件中,我们主要编写的是数据库的连接信息,壹哥在这里使用的是properties格式的配置文件,也就是application.properties。当然大家也可以使用yml文件格式。

spring.datasource.password=数据库账号的登录密码
spring.datasource.username=数据库登录账号
spring.datasource.url=jdbc:mysql://localhost:3306/数据库名?useSSL=false&useUnicode=true&characterEncoding=utf-8&serverTimezone=GMT%2B8
spring.datasource.driver-class-name=com.mysql.jdbc.Driver
server.port=8096
spring.application.name=MYBATISPLUSSERVER

 5. 编写实体类

由于mybatis-plus,可以不编写SQL语句。那么Java中的对象,到底该如何与数据库中的表进行映射呢?答案其实就在实体类中!我们可以通过不同的注解来完成实体类和具体表,以及实体类的属性和表中的列进行映射。这也是mybatis-plus中非常关键的一步,具体实现如下:

@Data
@AllArgsConstructor
@NoArgsConstructor
@TableName("emp")  //告知mybatis-plus和数据库中的哪个表关联
public class User extends Model<User> implements Serializable {//主键idprivate int id;  //当实体类的属性名和和表中的列名相同,无需做任何设置@TableField("name") private String userName; //属性名和列名不一致时设置映射,用userName属性和表中的name列进行关联private int age;private String email;
}

6. 编写dao接口

我们这里的接口中,不必编写任何CRUD方法,只需要继承BaseMapper接口即可。通过阅读源码我们可以发现,在这个接口中其实已经封装了常见的CURD方法,源码如下:

所以,实体类中就可以省去CRUD方法的代码实现。

package com.qf.pro.dao;import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.qf.pro.pojo.User;public interface UserDao extends BaseMapper<User> {//BaseMapper<User> 默认封装了CRUD方法,通过泛型制定了所操作的实体类及表
}

7. 编写配置类

这样当SpringBoot启动时,就可以扫描到dao层代码所在的包。

package com.qf.mp2103.dao;import com.baomidou.mybatisplus.extension.plugins.PaginationInterceptor;
import org.mybatis.spring.annotation.MapperScan;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;@Configuration
@MapperScan("com.qf.mp2103.dao")
public class MybatisPlusConfig {@Beanpublic PaginationInterceptor paginationInterceptor(){return new PaginationInterceptor();}
}

8. 业务实现

我们要在业务逻辑层里调用各种CRUD方法,这也是Mybatis-Plus比较核心、重要的点,MybatisPlus会根据之前的配置自动生成SQL语句。

package com.qf.mp2103.service.impl;import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.qf.mp2103.dao.UsersDao;
import com.qf.mp2103.pojo.Users;
import com.qf.mp2103.service.UsersService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;import java.util.HashMap;
import java.util.List;
import java.util.Map;@Service
public class UserServiceImpl implements UsersService {@Autowiredprivate UsersDao usersDao;@Overridepublic List<Users> findUsers() {//mybatisplus 自动生成/提供的查询方法//由于是无条件查询,参数nullreturn usersDao.selectList(null);}@Overridepublic List<Users> findUsersByCondition(String name) {//创建QueryWrapper对象QueryWrapper<Users> wrapper=new QueryWrapper<Users>();//通过wrapper对象来设置查询条件//参数1:字段表名//参数2:所赋值//eq  等于wrapper.eq("name",name);return usersDao.selectList(wrapper);}@Overridepublic List<Users> findUsersByCondition2(int startAge, int endAge) {QueryWrapper<Users> wrapper=new QueryWrapper<Users>();//年龄的范围wrapper.between("age",startAge,endAge);return usersDao.selectList(wrapper);}@Overridepublic List<Users> findUsersByCondition3(Users users) {//多条件查询QueryWrapper<Users> wrapper=new QueryWrapper<Users>();//where name='' and age <=
//        wrapper.eq(true,"name",users.getUserName());wrapper.le(true,"age",users.getAge());//where name='' or age >=wrapper.eq(true,"name",users.getUserName());wrapper.ge(false,"age",users.getAge());return usersDao.selectList(wrapper);}@Overridepublic List<Users> findUsersByCondition4(Users users) {//模糊查询QueryWrapper<Users> wrapper=new QueryWrapper<Users>();//%关键字%wrapper.like("name",users.getUserName());//%明//wrapper.likeLeft()//李%//wrapper.likeRight();return usersDao.selectList(wrapper);}//排序查询@Overridepublic List<Users> findUsers2() {QueryWrapper<Users> wrapper=new QueryWrapper<Users>();//设置排序条件wrapper.orderByDesc("id");return usersDao.selectList(wrapper);}@Overridepublic List<Users> findUsersByPage(int page, int size) {//用于分页查询//select * from users  limit X,XQueryWrapper<Users> wrapper=new QueryWrapper<Users>();int start=(page-1)*size;//拼接wrapper.last("limit "+start+","+size);return usersDao.selectList(wrapper);}@Overridepublic List<Users> findUsers3() {//查询指定列QueryWrapper<Users> wrapper=new QueryWrapper<Users>();//设置查询的列wrapper.select("id","email");return usersDao.selectList(wrapper);}@Overridepublic boolean addUser(Users users) {//添加用户int result=usersDao.insert(users);return result==1;}@Overridepublic boolean deleteUser(int id) {//删除用户--单个删除int result=usersDao.deleteById(id);//批量删除//usersDao.deleteBatchIds(List<Integer> list);return result==1;}@Overridepublic boolean updateUser(Users users) {//要求表中的主键列是id的名字,使用id列作为条件int result=usersDao.updateById(users);//如果主键列的名字不是id,或者条件不是主键id
//        QueryWrapper<Users> wrapper=new QueryWrapper<Users>();
//        wrapper.eq("email",users.getEmail());
//        int result2=usersDao.update(users,wrapper);return result==1;}@Overridepublic Users findUersById(int id) {//根据主键id查询单个对象return usersDao.selectById(id);}@Overridepublic List<Users> findUsersByIds(List<Integer> list) {//根据id批量查询return usersDao.selectBatchIds(list);}@Overridepublic Map<String,Object> findUsersByPage2(int page, int size) {//如果还有其他条件查询,声明条件构造器进行//创建分页插件对象//参数1:显示第几页数据//参数2:每页显示几条数据Page<Users> page1=new Page<Users>(page,size);//根据分页插件对象里的分页条件查询数据IPage<Users> iPage=usersDao.selectPage(page1,null);Map<String,Object> map=new HashMap<String, Object>();//获取总记录数  iPage.getTotal()map.put("totalCount",iPage.getTotal());//获取总页数 iPage.getPages()map.put("totalPage",iPage.getPages());//获取分页数据map.put("data",iPage.getRecords());return map;}@Overridepublic List<Users> findUsers4(int age1, int age2, String email) {QueryWrapper<Users> queryWrapper=new QueryWrapper<Users>();queryWrapper.ge("age",age1).le("age",age2).or().likeRight("email",email);return usersDao.selectList(queryWrapper);}@Overridepublic Users findUsers5(int id) {//创建实体类对象Users user=new Users();user.setId(id);//声明对象接收查询返回的结果Users getUser=user.selectById(id);return getUser;}@Overridepublic void addUsers2(Users users) {//添加方法users.insert();}@Overridepublic void updateUsers2(Users users) {//根据主键更新users.updateById();}@Overridepublic void deleteUsers2(Users users) {//根据主键删除users.deleteById();}public Users findOne(String name){//根据其他条件查询单个数据,如果多于1条数据,则报异常//条件构造器QueryWrapper queryWrapper=new QueryWrapper();queryWrapper.eq("name",name);return usersDao.selectOne(queryWrapper);}//查询总记录数public int getUserCount(){//可以声明条件构造器return usersDao.selectCount(null);}}

这样通过以上几个步骤,我们就学会了Mybatis-Plus的基本使用,希望今天的文章可以教会大家如何使用Mybatis-Plus。如果你还有疑惑,可以私信我们哦。

http://www.lbrq.cn/news/1038961.html

相关文章:

  • 网站空间到期时间查询/微信朋友圈营销方案
  • 做商城网站哪个好/个人网站免费推广
  • 网站群发软文软件/如何发布自己的网站
  • 广州荔湾做网站/百度搜索引擎排行榜
  • 体育健身网站建设/百度怎么推广自己的作品
  • 网站500m空间够用吗/长沙网络推广小公司
  • 单页网站如何做/百度指数批量获取
  • 福州模板做网站/营销型网站建设哪家好
  • 黑色 网站/百度搜索高级搜索技巧
  • 伊犁网站制作/推广咨询服务公司
  • 成都网站建设 好多科技/首页排名关键词优化
  • 农家乐网站建设/企业营销策划合同
  • 郑州做网站费用/搜索引擎优化是什么意思啊
  • 通过网站做跳板/地推团队联系方式
  • 日本做爰漫画网站/百度双十一活动
  • 网站SEO基础代做/怎么制作网页广告
  • 大型购物网站/中国国际新闻
  • wordpress 搬家 sae/seo网站有优化培训吗
  • 网站建设和编程/哔哩哔哩b站在线看免费
  • 网站建设 微信 app/seo最新优化技术
  • 东莞微信网站建设报价/百度网页版入口
  • 南通高端网站设计开发/广东疫情最新消息
  • 做非法网站要多少钱/如何在网上做销售推广
  • 中国建设银行网站网上银行/优就业seo
  • 青岛 生物类网站建设/夸克搜索网页版
  • 建平台跟建网站/seo关键词如何设置
  • 上海手机网站制作公司/seo推广效果怎么样
  • 怎样做信息收费网站/网络营销的种类
  • 淘宝客网站应该怎么做/销售平台软件有哪些
  • 中国化学工程第九建设公司网站/业务推广网站
  • -bash: ./restart.sh: /bin/bash^M: 坏的解释器: 没有那个文件或目录
  • AI Agent——基于 LangGraph 的多智能体任务路由与执行系统实战
  • Java 工厂方法模式
  • 开源!!! htop移植到OpenHarmony
  • ncurses 6.5 交叉编译移植到OpenHarmomy
  • python面向对象设计模式