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

移动互联网开发心得seo产品优化推广

移动互联网开发心得,seo产品优化推广,自己网站制作,php主机网站MyBatis-plus的介绍 MyBatis-plus是MyBatis的增强工具,在MyBatis的基础上做出加强,只要MyBatis有的功能MyBatis-plus都有。 MyBatis-plus的上手 添加依赖 在我们创建项目的时候,我们需要添加MyBatis-plus和mysql的依赖 MyBatis-plus的依赖…

MyBatis-plus的介绍

MyBatis-plus是MyBatis的增强工具,在MyBatis的基础上做出加强,只要MyBatis有的功能MyBatis-plus都有。

MyBatis-plus的上手

添加依赖

在我们创建项目的时候,我们需要添加MyBatis-plus和mysql的依赖

MyBatis-plus的依赖

<dependency><groupId>com.baomidou</groupId><artifactId>mybatis-plus-boot-starter</artifactId><version>3.5.7</version></dependency>

Mysql的依赖 

 <dependency><groupId>com.mysql</groupId><artifactId>mysql-connector-j</artifactId><scope>runtime</scope></dependency>

配置数据库

spring:datasource:url: jdbc:mysql://127.0.0.1:3306/mybatis_test?characterEncoding=utf8&useSSL=false&allowPublicKeyRetrieval=true&serverTimezone=Asia/Shanghaiusername: rootpassword: 123456driver-class-name: com.mysql.cj.jdbc.Drivermybatis-plus:configuration:log-impl: org.apache.ibatis.logging.stdout.StdOutImplmapper-locations: "classpath*:/mapper/**.xml" # Mapper.xml

首先我们创建UserInfo类

实体类中的属性和表中的字段要一一对应。

@Data
@TableName("user_info")
public class UserInfo {@TableId("id" )private Integer id;@TableField("username")private String username;private String password;private Integer age;private Integer gender;private String phone;private Integer deleteFlag;private Date createTime;private Date updateTime;
}

编写一个Mapper接口 

@Mapper
public interface UserInfoMapper extends BaseMapper<UserInfo> {

MyBatis-plus提供一个基础的BaseMapper接口,已经实现了单表的增删改查,我们自己的Mapper接口只需要继承这个BaseMapper接口,就可以实现单表的增删改查了

 

CRUD

我们来简单的测试一下MyBatis-plus的CRUD

@SpringBootTest
class UserInfoMapperTest {@Autowiredprivate UserInfoMapper userInfoMapper;@Testvoid select() {userInfoMapper.selectById(1);}@Testvoid update() {UserInfo userInfo = new UserInfo();userInfo.setId(1);userInfo.setAge(12);userInfo.setPassword("5556666");userInfoMapper.updateById(userInfo);}@Testvoid insert() {UserInfo userInfo = new UserInfo();userInfo.setId(27);userInfo.setAge(3);userInfo.setPassword("3");userInfo.setUsername("123333");userInfoMapper.insert(userInfo);}@Testvoid delete() {userInfoMapper.deleteById(8);
}

 @TableName

修改实体类名UserInfo为Userinfo

我们可以用@TableName来标识实体类对应的表

@Data@TableName("user_info")public class Userinfo {private Integer id;private String username;private String password;private Integer age;private Integer gender;private String phone;private Integer deleteFlag;private Date createTime;private Date updateTime;}

 @TableField

修改属性名deleteFlag为deleteflag

@TableField("delete_flag")private Integer deleteflag;

@TableId

修改属性名id为userId

我们可以通过@TableId来指定对应的主键

@TableId("id")private Integer userId;

 

条件构造器

QueryWrapper

⽤于构造查询条件,在AbstractWrapper的基础上拓展了⼀个select⽅法,允许指定查询字段,QueryWrapper并不只用于查询语句,无论是修改,删除,查询都可以使用QueryWrapper来构造条件

Select

SELECT id,username,password,age FROM user_info WHERE age = 18 AND username 
"%min%"
 void selectByCondition() {QueryWrapper<UserInfo> queryWrapper = new QueryWrapper<UserInfo>().select("username", "password", "id", "age").eq("age", 18).like("username", "min");List<UserInfo> userInfos = userInfoMapper.selectList(queryWrapper);userInfos.forEach(x -> System.out.println(x));}

Update 

UPDATE user_info SET delete_flag=? WHERE age < 20
@Testvoid updateByCondition() {UserInfo userInfo = new UserInfo();userInfo.setDeleteFlag(1);QueryWrapper<UserInfo> queryWrapper = new QueryWrapper<UserInfo>().lt("age", 20);userInfoMapper.update(userInfo, queryWrapper);}

Delete

 DELETE FROM user_info WHERE age = 18
@Testvoid deleteByCondition(){QueryWrapper<UserInfo> queryWrapper =new QueryWrapper<UserInfo>().eq("age",18);userInfoMapper.delete(queryWrapper);}

 UpdateWrapper

对于更新,我们也可以直接使⽤UpdateWrapper,在不创建实体对象的情况下,直接设置更新字段和条件

UPDATE user_info SET delete_flag=0, age=5 WHERE id IN (1,2,3)
@Testvoid updateByCondition2(){UpdateWrapper<UserInfo> updateWrapper=new UpdateWrapper<UserInfo>().set("delete_flag",0).set("age",5).in("id",List.of(1,2,3));userInfoMapper.update(updateWrapper);}

 

 UPDATE user_info SET age = age+10 WHERE id IN (1,2,3)
@Testvoid updateByCondition3(){UpdateWrapper<UserInfo> updateWrapper=new UpdateWrapper<UserInfo>().setSql("age=age+10").in("id",List.of(1,2,3));userInfoMapper.update(updateWrapper);}

 LambdaQueryWrapper

 QueryWrapper和UpdateWrapper存在⼀个问题,就是需要写死字段名,如果字段名发⽣变更,可能会 因为测试不到位酿成事故。

MyBatis-Plus 给我们提供了⼀种基于Lambda表达式的条件构造器,它通过Lambda表达式来引⽤实体类的属性,从⽽避免了硬编码字段名,也提⾼了代码的可读性和可维护性。

@Testvoid selectByLambdaCondition() {QueryWrapper<UserInfo> queryWrapper=new QueryWrapper<UserInfo>();queryWrapper.lambda().select(UserInfo::getUsername,UserInfo::getPassword).eq(UserInfo::getAge,18);userInfoMapper.selectList(queryWrapper);}

 LambdaUpdateWrapper

@Testvoid updateByLambdaCondition(){UpdateWrapper<UserInfo> updateWrapper=new UpdateWrapper<UserInfo>();updateWrapper.lambda().set(UserInfo::getUsername,"123").set(UserInfo::getAge,12).in(UserInfo::getId,List.of(1,2,3));userInfoMapper.update(updateWrapper);}

 

⾃定义SQL

在实际的开发中,MyBatis-plus提供的操作不能满足我们的实际需求,MyBatis-plus也提供了自定义SQL的功能,我们可以用Wrapper构造查询条件,结合Mapper编写SQL

 select id,username,password,age FROM user_info WHERE username = "admin"
 @Select("select * from user_info ${ew.customSqlSegment}")List<UserInfo> queryUserByCustom(@Param(Constants.WRAPPER)Wrapper wrapper);
@Testvoid testQueryUserByCustom(){QueryWrapper<UserInfo> queryWrapper = new QueryWrapper<UserInfo>().eq("username","admin");userInfoMapper.queryUserByCustom(queryWrapper).forEach(System.out::println);}

注:

参数命名:在⾃定义SQL时,传递Wrapper对象作为参数时,参数名必须为 ew 或者使⽤注解 ${ew.customSqlSegment},明确指定参数为Wrapper对象

使用 ${ew.customSqlSegment} :在SQL语句中,使⽤ ${ew.customSqlSegment}来引⽤Wrapper对象⽣成的SQL⽚段.

不⽀持基于entity的where语句:⾃定义SQL时,Wrapper对象不会基于实体类⾃动⽣成 where⼦句,你需要⼿动编写完整的SQL语句

MyBatis-plus也支持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.blame.mybatisplus.mapper.UserInfoMapper"><select id="queryUserByCustom2" resultType="com.blame.mybatisplus.model.UserInfo">select id,username,password,age FROM user_info ${ew.customSqlSegment}</select></mapper>
List<UserInfo> queryUserByCustom2(@Param(Constants.WRAPPER)Wrapper<UserInfo> wrapper);
 @Testvoid testQueryUserByCustom2(){QueryWrapper<UserInfo> queryWrapper = new QueryWrapper<UserInfo>().eq("username","admin");userInfoMapper.queryUserByCustom2(queryWrapper).forEach(System.out::println);}

如果需要查看更多关于MyBatis-plus 的资料,点击

简介 | MyBatis-Plushttps://baomidou.com/introduce/ 

希望能对大家有所帮助!!!!!

http://www.dtcms.com/wzjs/394240.html

相关文章:

  • 昌平网站建设推广优化seo广告设计与制作需要学什么
  • 网站的登录功能一般是用cookie做的外贸营销型网站制作
  • 重庆经典论坛新闻评论天津网络推广seo
  • 网站模板样式修改注册域名的步骤
  • 网站色彩搭配表搜索引擎优化的实验结果分析
  • wordpress 做淘宝客天津优化代理
  • .net 响应式网站网站查询网
  • 海淀网站建设百度推广的优化软件
  • 学做效果图网站有哪些软件百度搜索指数排行榜
  • 网站开发与经营seo公司彼亿营销
  • 青州做网站东莞网站seo优化托管
  • 网站前台做好以后用什么生成后台管理系统今日头条搜索优化
  • 安阳网站建设.com西点培训学校
  • 济南网站改版云南seo网站关键词优化软件
  • 网站建设flash苏州优化seo
  • 申请建设活动中心网站网络营销策略
  • 有哪些网站做返利模式全球十大搜索引擎排名及网址
  • 嘉兴做网站建设的公司手机推广软文
  • 钉钉小程序开发教程山东搜索引擎优化
  • 建网站培训机构网站搭建公司
  • 重庆市建设政务中心网站池州网络推广
  • 广东手机网站建设哪家好百度免费下载安装
  • e4a怎么做点击跳转网站免费推广软件 推广帮手
  • 云服务器价格seo西安
  • 住房各城乡建设网站网站搜索优化
  • 医院的网站建设目标网上如何做广告
  • 建站公司 万维科技竞价托管一般多少钱
  • 国外优秀论文网站我要登录百度
  • java怎么做网站后台学生个人网页制作成品代码
  • 知乎营销软件seo整体优化