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

做照片书的网站好做网站的数据库的选择

做照片书的网站好,做网站的数据库的选择,创业融资平台,建设银行网站无法登陆1. MyBatis-Plus介绍MyBatis-Plus(简称 MP) 是⼀个 MyBatis 的增强工具, 在 MyBatis 的基础上只做增强不做改变, 为简化开发#xff0c; 为提高效率而生2. 快速上手2.1.项目准备1. 创建springboot工程 2. 添加MyBatis-Plus和MySQL依赖, 配置数据库连接信息dependency 为提高效率而生 2. 快速上手 2.1.项目准备1. 创建springboot工程 2. 添加MyBatis-Plus和MySQL依赖, 配置数据库连接信息dependencygroupIdcom.baomidou/groupIdartifactIdmybatis-plus-spring-boot3-starter/artifactIdversion3.5.5/version /dependencydependencygroupIdcom.mysql/groupIdartifactIdmysql-connector-j/artifactIdscoperuntime/scope /dependency配置数据库 application.yml文件, 配置内容如下# 数据库连接配置 spring:datasource:url: jdbc:mysql://127.0.0.1:3306/mybatis_test?characterEncodingutf8useSSLfalseusername: rootpassword: rootdriver-class-name: com.mysql.cj.jdbc.Driver2.2.编码创建实体类 UserInfo Data 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; }编写Mapper接口类 MybatisPlus提供了⼀个基础的 BaseMapper 接口已经实现了单表的CRUD因此自定义的Mapper只需要继承这个BaseMapper, 就无需自己实现单表CRUD了Mapperpublic interface UserInfoMapper extends BaseMapperUserInfo { }3. MyBatis-Plus复杂操作3.1 常见注解 上面代码中 UserInfoMapper 在继承 BaseMapper 时, 指定了一个泛型, 这个UserInfo就是与数据库表相对应的实体类MyBatis-Plus会根据这个实体类来推断表的信息 就可以知道 要操作的是哪张表, 表中有哪些字段 默认情况下: 1. 表名: 实体类的驼峰表示法转换成蛇形表示法(下划线分割), 比如UserInfo - user_info 2. 字段: 根据实体类的属性名 转换为蛇形表示法. 比如deleteFlag - delete_flag3. 主键: 默认为id如果实体类和数据库不是按照上述规则定义的话  MyBatis-Plus也提供了一些注解, 用于标 识表的信息3.1.1 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; }3.1.2 TableField需求 修改属性名 deleteFlag 为 deleteflag,可以通过 TableField 来标识 对应的字段名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;TableField(delete_flag)private Integer deleteFlag;private Date createTime;private Date updateTime; }3.1.3 TableId需求 修改属性名 id 为 userId可以通过 TableId 来 指定对应的主键 Data TableName(user_info) public class Userinfo {TableId(id)private Integer userId;private String username;private String password;private Integer age;private Integer gender;private String phone;TableField(delete_flag)private Integer deleteflag;private Date createTime;private Date updateTime; }3.2 打印日志可以借助日志, 查看Mybatis-Plus执⾏的SQL语句, 参数和执⾏结果 Mybatis-Plus配置日志如下: mybatis-plus:configuration:# 配置打印MyBatis日志SQL语句log-impl: org.apache.ibatis.logging.stdout.StdOutImpl3.3 条件构造器入门程序中的使用, 都是简单的CRUD, 在实际的应用场景中, 还需要使用更复杂的操作, MyBatis-Plus 也提供了相应的支持. MyBatis-Plus 提供了一套强大的条件构造器(Wrapper),用于构建复杂的数据库查询条件Wrapper 类允许开发者以链式调用的方式构造查询条件, 无需编写繁琐的 SQL 语句, 从而提高开发效率并减少 SQL注入的风险. 以下是主要的 Wrapper 类及其功能 • AbstractWrapper这是⼀个抽象基类, 提供了所有 Wrapper 类共有的方法和属性• QueryWrapper用于构造查询条件, 在AbstractWrapper的基础上拓展了一个select方法, 允许指定查询字段• UpdateWrapper: 用于构造更新条件, 可以在更新数据时指定条件. • LambdaQueryWrapper基于 Lambda 表达式的查询条件构造器, 通过 Lambda 表达式来引用实体类的属性从而避免了硬编码字段名. • LambdaUpdateWrapper: 基于 Lambda 表达式的更新条件构造器, 允许使用 Lambda 表达式来指定更新字段和条件同样避免了硬编码字段名的问题. 3.3.1 QueryWrapperQueryWrapper并不只用于查询语句, 无论是修改, 删除, 查询, 都可以使用QueryWrapper来构建查询条件3.3.1.1.查询需求完成下述SQL查询 SELECT id,username,password,age FROM user_info WHERE age 18 AND username %min%代码实现 Test void testQueryWrapper() {// 创建查询条件构造器QueryWrapperUserInfo queryWrapper new QueryWrapperUserInfo().select(id, username, password, age) // 指定查询字段.eq(age, 18) // 精确匹配年龄18.like(username, min); // 模糊匹配用户名包含min// 执行查询ListUserInfo userList userInfoMapper.selectList(queryWrapper);// 打印结果userList.forEach(System.out::println); }3.3.1.2.更新需求完成下述SQL查询 UPDATE user_info SET delete_flag? WHERE age 20代码实现 Test void testUpdateByQueryWrapper() {QueryWrapperUserInfo userInfoQueryWrapper new QueryWrapperUserInfo().lt(age, 20);UserInfo userInfo new UserInfo();userInfo.setDeleteFlag(1);userInfoMapper.update(userInfo, userInfoQueryWrapper); }• lt : less than 的缩写表示小于. • le : less than or equal to的缩写, 表示小于等于 • ge : greater than or equal to 的缩写, 表示大于等于. • gt : greater than 的缩写, 表示大于. • eq :equals 的缩写, 表示等于. • ne : not equals 的缩写, 表示不等于.3.3.1.3.删除需求完成下述SQL查询 DELETE FROM user_info WHERE age 18代码实现 Test void testDeleteByQueryWrapper() {QueryWrapperUserInfo userInfoQueryWrapper new QueryWrapperUserInfo().eq(age, 18);userInfoMapper.delete(userInfoQueryWrapper); }3.3.2 UpdateWrapper对于更新, 也可以直接使用UpdateWrapper, 在不创建实体对象的情况下, 直接设置更新字段和条 件. 3.3.2.1.基础更新需求完成下述SQL查询 UPDATE user_info SET delete_flag0, age5 WHERE id IN (1,2,3)代码实现 Test void testUpdateByUpdateWrapper() {UpdateWrapperUserInfo updateWrapper new UpdateWrapperUserInfo().set(delete_flag, 0).set(age, 5).in(id, List.of(1, 2, 3));userInfoMapper.update(null, updateWrapper); }3.3.2.2.基于SQL更新需求完成下述SQL查询 UPDATE user_info SET age age10 WHERE id IN (1,2,3)代码实现 Test void testUpdateBySQLUpdateWrapper() {UpdateWrapperUserInfo updateWrapper new UpdateWrapperUserInfo().setSql(age age 10).in(id, List.of(1, 2, 3));userInfoMapper.update(null, updateWrapper); }3.3.3 LambdaQueryWrapperQueryWrapper 和 UpdateWrapper存在一个问题, 就是需要写死字段名, 如果字段名发生变更, 可能会因为测试不到位酿成事故 MyBatis-Plus 提供了一种基于Lambda表达式的条件构造器, 它通过 Lambda 表达式来引用实体 类的属性从而避免了硬编码字段名, 也提高了代码的可读性和可维护性• LambdaQueryWrapper • LambdaUpdateWrapper 分别对应上述的QueryWrapper和UpdateWrapperTest void testLambdaQueryWrapper() {QueryWrapperUserInfo queryWrapper new QueryWrapperUserInfo();queryWrapper.lambda().select(UserInfo::getUsername, UserInfo::getPassword, UserInfo::getAge).eq(UserInfo::getUserId, 1);userInfoMapper.selectList(queryWrapper).forEach(System.out::println); }3.3.4 LambdaUpdateWrapperLambdaUpdateWrapper用法和 LambdaQueryWrapper相似 Test void testLambdaUpdateByUpdateWrapper() {UpdateWrapperUserInfo updateWrapper new UpdateWrapperUserInfo();updateWrapper.lambda().set(UserInfo::getDeleteFlag, 0).set(UserInfo::getAge, 5).in(UserInfo::getUserId, List.of(1, 2, 3));userInfoMapper.update(null, updateWrapper); }3.4 自定义SQL在实际的开发中, MyBatis-Plus提供的操作不能满足实际需求, MyBatis-Plus 也提供了自定义 SQL的功能, 可以利用Wrapper构造查询条件, 再结合Mapper编写SQL3.4.1.注解形式 需求完成下述SQL查询 select id,username,password,age FROM user_info WHERE username adminMapper:Mapper public interface UserInfoMapper extends BaseMapperUserInfo {Select(SELECT id, username, password, age FROM user_info ${ew.customSqlSegment})ListUserInfo queryUserByCustom(Param(Constants.WRAPPER) WrapperUserInfo wrapper); }测试代码Test void testQueryUserByCustom() {QueryWrapperUserInfo queryWrapper new QueryWrapperUserInfo().eq(username, admin);userInfoMapper.queryUserByCustom(queryWrapper).forEach(System.out::println); }注意事项: • 参数命名在自定义 SQL 时, 当传递 Wrapper 对象作为参数, 参数名必须为 ew 或者使用注解 Param(Constants.WRAPPER) 明确指定参数为 Wrapper 对象. • 使用 ${ew.customSqlSegment} 在 SQL 语句中使用${ew.customSqlSegment} 来引用 Wrapper 对象生成的 SQL 片段. • 不支持基于 entity 的 where 语句自定义 SQL 时Wrapper 对象不会基于实体类自动生成where 子句需要手动编写完整的 SQL 语句3.4.2.XML形式1. 配置mapper路径mybatis-plus:mapper-locations: classpath*:/mapper/**/*.xml2. 定义方法Mapper public interface UserInfoMapper extends BaseMapperUserInfo {ListUserInfo queryUserByCustom2(Param(Constants.WRAPPER) WrapperUserInfo wrapper); }3. 编写XML ?xml version1.0 encodingUTF-8? !DOCTYPE mapper PUBLIC -//mybatis.org//DTD Mapper 3.0//ENhttp://mybatis.org/dtd/mybatis-3-mapper.dtd mapper namespacecom.bite.mybatis.plus.mapper.UserInfoMapperselect idqueryUserByCustom2SELECT id, username, password, age FROM user_info ${ew.customSqlSegment}/select/mapper4. 测试Test void updateUserByCustom() {QueryWrapperUserInfo queryWrapper new QueryWrapperUserInfo().in(id, List.of(1, 2, 3));userInfoMapper.updateUserByCustom(10, queryWrapper); }
http://www.pierceye.com/news/868155/

相关文章:

  • 品牌网站建设联系方式网页截图快捷键是哪个键
  • 现在网站一般都是什么语言做的软件著作权证书
  • html5在网站建设中的本地环境wordpress修改php.ini
  • wap电影网站建设宁波谷歌seo推广
  • 中国建设银官方网站WordPress国内开发主题
  • 芜湖seo网站优化域名邮箱免费注册
  • 做宠物网站需要实现什么功能成都建工网站
  • jsp购物网站开发 论文海口澄迈县建设局网站
  • 单页销售网站制作制作花都区网站建设
  • 如何建立自己的购物网站discuz手机模板
  • 网站被刷流量怎么办wordpress fold主题
  • 做的新网站网上搜不到临沂免费做网站
  • 高端大气的网站制作建筑人才网下载
  • 如何快速提升网站关键词排名综合服务平台一站式服务平台网站开发
  • 阿土伯 是做网站的吗建设厅国网查询网站
  • 天长哪个广告公司做网站中国菲律宾汇率换算
  • 动漫在线制作网站wordpress get_template_part
  • 肇庆高端品牌网站建设住建部网站资质查询中宏建设集团
  • 扁平化网站模板下载莱西网站建设哪家好
  • 用vis做的简单网站网站建设需求方案pdf
  • 怎么免费做网站视频教学沈阳网站备案
  • 徐州有哪些网站制作公司太原住房和城乡建设部网站
  • 专门做摩托车的网站注册域名阿里云
  • 做个简单的网站建站公司费用
  • 网站建设举措网站免费建站方法
  • 遵义市双控体系建设网站wamp wordpress安装
  • 厦门的网站建设公司龙岗网站-建设深圳信科
  • 上海网站建设q.479185700強成都上界品牌设计事务所
  • 产品设计优秀网站做网站申请多少类商标
  • 中国行业网站贵州网站建设seo优化