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

金泉网做网站多少钱国际网站建设招标

金泉网做网站多少钱,国际网站建设招标,用例图在线制作网站,中国建筑业协会官网一、MyBatis Generator 为 MyBastis 框架设计的代码生成工具#xff0c;简化持久层编码工作。根据数据库表自动生成 Java 实体类、Mapper 接口、SQL 的 xml 文件。让开发者专注于业务逻辑。 1、引入插件 MyBatis 官网搜索 MyBatis Generator 插件#xff1a;Running MyBatis…一、MyBatis Generator 为 MyBastis 框架设计的代码生成工具简化持久层编码工作。根据数据库表自动生成 Java 实体类、Mapper 接口、SQL 的 xml 文件。让开发者专注于业务逻辑。 1、引入插件 MyBatis 官网搜索 MyBatis Generator 插件Running MyBatis Generator With Maven – MyBatis Generator Corehttps://mybatis.org/generator/running/runningWithMaven.html plugingroupIdorg.mybatis.generator/groupIdartifactIdmybatis-generator-maven-plugin/artifactIdversion1.3.6/versionexecutionsexecutionidGenerate MyBatis Artifacts/idphasedeploy/phasegoalsgoalgenerate/goal/goals/execution/executionsconfiguration!--generator配置文件所在位置--configurationFilesrc/main/resources/generator/generatorConfig.xml/configurationFile!-- 允许覆盖生成的文件xml不会覆盖, 采用追加的方式--overwritetrue/overwriteverbosetrue/verbose!--将当前pom的依赖项添加到生成器的类路径中--includeCompileDependenciestrue/includeCompileDependencies/configuration!--该插件的依赖在 dependencies 中引入的它识别不到--dependenciesdependencygroupIdmysql/groupIdartifactIdmysql-connector-java/artifactIdversion8.0.33/version/dependency/dependencies/plugin 2、修改 generatorConfig.xml 文件 ?xml version1.0 encodingUTF-8? !DOCTYPE generatorConfigurationPUBLIC -//mybatis.org//DTD MyBatis Generator Configuration 1.0//ENhttp://mybatis.org/dtd/mybatis-generator-config_1_0.dtd !-- 配置生成器 -- generatorConfiguration!-- 一个数据库一个context --context idMysqlTables targetRuntimeMyBatis3Simple!--禁用自动生成的注释--commentGeneratorproperty namesuppressDate valuetrue/property namesuppressAllComments valuetrue //commentGenerator!--数据库连接信息--jdbcConnection driverClasscom.mysql.jdbc.DriverconnectionURLjdbc:mysql://127.0.0.1:3306/book_test?serverTimezoneAsia/Shanghaiamp;nullCatalogMeansCurrenttrueuserIdrootpasswordroot/jdbcConnection!-- 生成实体类, 配置路径 --javaModelGenerator targetPackagecom.edu.generator.model targetProjectsrc/main/java property nameenableSubPackages valuefalse/property nametrimStrings valuetrue//javaModelGenerator!-- 生成mapxml文件 --sqlMapGenerator targetPackagegeneratorMapper targetProjectsrc/main/resources property nameenableSubPackages valuefalse //sqlMapGenerator!-- 生成mapxml对应client也就是接口dao --javaClientGenerator targetPackagecom.edu.generator.mapper targetProjectsrc/main/java typeXMLMAPPER property nameenableSubPackages valuefalse //javaClientGenerator!-- table可以有多个,tableName表示要匹配的数据库表 --table tableNameuser_info domainObjectNameUserInfo enableSelectByExampletrueenableDeleteByExampletrue enableDeleteByPrimaryKeytrue enableCountByExampletrueenableUpdateByExampletrue!-- 类的属性是否用数据库中的真实字段名做为属性名, 不指定这个属性会自动转换 _ 为驼峰命名规则 --property nameuseActualColumnNames valuefalse /!-- 数据库表主键 --generatedKey columnid sqlStatementMysql identitytrue //tabletable tableNamebook_info domainObjectNameBookInfo enableSelectByExampletrueenableDeleteByExampletrue enableDeleteByPrimaryKeytrue enableCountByExampletrueenableUpdateByExampletrue!-- 类的属性是否用数据库中的真实字段名做为属性名, 不指定这个属性会自动转换 _ 为驼峰命名规则 --property nameuseActualColumnNames valuefalse /!-- 数据库表主键 --generatedKey columnid sqlStatementMysql identitytrue //table/context /generatorConfiguration targetRuntimeMyBatis3SimpleMyBatis3Simple 生成的 SQL 的 xml 语句比较简单MyBatis3 比较复杂。targetPackagecom.edu.generator.model生成在哪个包。tableNameuser_info数据库对应的表名。domainObjectNameBookInfo对应的实体类名。generatedKey columnid主键名。property nameuseActualColumnNames valuefalse /属性名自动转换成驼峰命名规则。 只生成实体类的版本 ?xml version1.0 encodingUTF-8? !DOCTYPE generatorConfigurationPUBLIC -//mybatis.org//DTD MyBatis Generator Configuration 1.0//ENhttp://mybatis.org/dtd/mybatis-generator-config_1_0.dtd !-- 配置生成器 -- generatorConfiguration!-- 一个数据库一个context --context idMysqlTables targetRuntimeMyBatis3Simple!-- 禁用自动生成的注释 --commentGeneratorproperty namesuppressDate valuetrue/property namesuppressAllComments valuetrue //commentGenerator!-- 数据库连接信息 --jdbcConnection driverClasscom.mysql.jdbc.DriverconnectionURLjdbc:mysql://127.0.0.1:3306/mybatis_test?serverTimezoneAsia/Shanghaiamp;nullCatalogMeansCurrenttrueuserIdrootpassword123456/jdbcConnection!-- 生成实体类配置 --javaModelGenerator targetPackagecom.edu.mybatis.plus.model targetProjectsrc/main/java property nameenableSubPackages valuefalse/property nametrimStrings valuetrue//javaModelGenerator!-- 移除SQL映射文件生成器不生成Mapper XML --!-- 移除Java客户端生成器不生成Mapper接口 --!-- 表配置 --table tableNameuser_info domainObjectNameUserInfoproperty nameuseActualColumnNames valuefalse /generatedKey columnid sqlStatementMysql identitytrue //table/context /generatorConfiguration3、生成代码 在 maven 中运行插件自动生成代码 生成的文件 实体类把 getter、setter 都生成了为了好看可以调整为 Data Mapper 接口、xml 文件生成了一些基础的数据库操作。不建议用mxl 文件代码太乱了看着很复杂 该插件的使用需要配置很多东西比如数据库连接的信息但是这些信息已经在 spring boot 的配置文件中配置过了因此该插件还不够方便。对于 mapper、xml 的编写Mybatis-plus 框架才是我们学习的重点。用用 MyBatis Generator 的实体类自动生成即可。 二、MyBatis-plus MyBatis-plus 在 MyBatis 的基础上扩展功能跟 MyBatis 不冲突。直接在 Spring Boot 项目的POM 文件中引入依赖即可。 官方文档 快速开始 | MyBatis-Plushttps://baomidou.com/getting-started/ 1、快速上手 创建一个 Spring Boot 项目 引入依赖spring boot3 对应的版本 dependencygroupIdcom.baomidou/groupIdartifactIdmybatis-plus-spring-boot3-starter/artifactIdversion3.5.12/version /dependency 配置数据库连接信息.yml。 在启动类中加入 MapperScan指定要扫描的 Mapper 文件路径。或者每个 mapper 类加上 Mapper二选其一。 创建要操作的表对应的实体类。 编写 Mapper 接口类 2、简单 CRUD 单元测试 1查 Testpublic void testSelectAll() {System.out.println((----- 查询所有 ------));ListUserInfo userList userInfoMapper.selectList(null);userList.forEach(System.out::println);}Testvoid testSelectById(){System.out.println((----- 按 主键 查询 ------));UserInfo userInfo userInfoMapper.selectById(2);System.out.println(userInfo);}Testvoid testSelectByIds(){System.out.println((----- 按 主键 集合查询 ------));ListUserInfo userInfos userInfoMapper.selectByIds(List.of(1,2));userInfos.forEach(System.out::println);} 2增 Testvoid testInsert(){System.out.println((----- 插入一条数据 ------));UserInfo userInfo new UserInfo();userInfo.setUserName(Jay);userInfo.setPassword(Chou);int insert userInfoMapper.insert(userInfo);System.out.println(影响行数: insert);} id 生成了随机数 想自增需要使用 TableId 设置 id 会从最大值 2 开始自增 如果想修改最大值表上右键 设计表 选项 修改 3改 Testvoid testUpdate(){System.out.println((----- 按 主键 更新一条数据 ------));UserInfo userInfo new UserInfo();userInfo.setId(2);userInfo.setUserName(lisi);userInfo.setDeleteFlag(1);userInfoMapper.updateById(userInfo);} 4删 Testvoid testDelete(){System.out.println((----- 按 主键 删除一条数据 ------));userInfoMapper.deleteById(-2019921918);} 3、命名映射注解 MyBatis-plus 如何将类名、属性名与数据库表、主键字段、普通字段对应 根据实体类名推断表名。TableName默认 id 属性是主键。TableId驼峰规则的属性名对应的蛇形命名就是表字段。TableField如果 java 命名不符合自动对应的的规则可以用注解进行绑定。 4、打印日志 把 mybatis 改成 mybatis-plus 即可 mybatis-plus:configuration: # 配置打印 MyBatis ⽇志log-impl: org.apache.ibatis.logging.stdout.StdOutImpl 5、自动生成代码了解 参考代码生成器 | MyBatis-Plus 引入依赖generator 模板引擎 dependencygroupIdcom.baomidou/groupIdartifactIdmybatis-plus-generator/artifactIdversion3.5.12/version/dependencydependencygroupIdorg.freemarker/groupIdartifactIdfreemarker/artifactIdversion2.3.31/version/dependency 自动生成代码 ​public void test() {FastAutoGenerator.create(jdbc:mysql://127.0.0.1:3306/book_test?characterEncodingutf8 useSSLfalseallowPublicKeyRetrievaltrue,root, 123456).globalConfig(builder - builder.outputDir(Paths.get(System.getProperty(user.dir)) /src/main/java)).packageConfig(builder - builder.parent(com.edu.mybatis.plus.generator).entity(entity).mapper(mapper).service(service).xml(mapper.xml)).strategyConfig(builder - builder.entityBuilder().enableLombok()).templateEngine(new FreemarkerTemplateEngine()).execute();}​ 6、复杂 CRUD 操作 1什么是条件构造器 条件构造器Wrapper 类允许链式构造条件用 . 的方式直接引用条件构造方法避免编写复杂 SQL同时减少 SQL 注入风险。 AbstractWrapper抽象类提供 Wrapper 类共有的方法和属性。QueryWrapper构造查询条件。UpdateWrapper构造更新条件可以不用构造实体类设置 set。LambdaQueryWrapper基于 Lambda 表达式构造查询条件。LambdaUpdateWrapper基于 Lambda 表达式构造更新条件。 AbstractWrapper 实现了 Compare 接口包含了各种条件构造器比如大于、等于、模糊查询等这些操作是四种 Wrapper 共有的更多详情参考官方文档 (Lambda)QueryWrapper 和 (Lambda)UpdateWrapper 的不同之处就是红框的部分。绿框是构造函数其余方法都是差不多一样的。 2QueryWrapper 增删改查都能用 QueryWrapper 实现。 查询 SELECT id,user_name,password FROM user_info WHERE delete_flag 0 AND user_name LIKE %min% Testvoid testQueryWrapper(){QueryWrapperUserInfo queryWrapper new QueryWrapper();queryWrapper.select(id, user_name, password).eq(delete_flag, 0).like(user_name, min);ListUserInfo userList userInfoMapper.selectList(queryWrapper);userList.forEach(System.out::println);} 更新需要构造实体类设置修改值。 UPDATE user_info SET delete_flag1 WHERE id 3 Testvoid testQueryWrapper2(){QueryWrapperUserInfo queryWrapper new QueryWrapper();UserInfo userInfo new UserInfo();userInfo.setDeleteFlag(1);queryWrapper.lt(id, 3);userInfoMapper.update(userInfo, queryWrapper);} 删 DELETE FROM user_info WHERE user_name Jay2 Testvoid testQueryWrapper3(){QueryWrapperUserInfo queryWrapper new QueryWrapper();queryWrapper.eq(user_name, Jay2);userInfoMapper.delete(queryWrapper);} 3UpdateWrapper 更新不用构造实体类直接 set。 UPDATE user_info SET delete_flag0 WHERE id IN (1,2) Testvoid testUpdateWrapper(){UpdateWrapperUserInfo updateWrapper new UpdateWrapper();updateWrapper.set(delete_flag, 0).in(id, List.of(1,2));userInfoMapper.update(updateWrapper);} 直接 set sql 语句更新 UPDATE user_info SET delete_flagdelete_flag1 WHERE id IN (1,2) Testvoid testUpdateWrapper2(){UpdateWrapperUserInfo updateWrapper new UpdateWrapper();updateWrapper.setSql(delete_flag delete_flag 1).in(id, List.of(1,2));userInfoMapper.update(updateWrapper);} 4LambdaQueryWrapper 字段名容易写错Lambda 的版本就是用 实体类名::get属性名来替代字段名字符串。 可以直接 new Lambda 版本或者 new 普通版本再使用 lambda 方法转为 Lambda 版本。 SQL SELECT id,user_name,password FROM user_info WHERE delete_flag 0 AND user_name LIKE %min% Testvoid testLambdaQueryWrapper(){ // LambdaQueryWrapperUserInfo lambdaQueryWrapper new LambdaQueryWrapper();QueryWrapperUserInfo queryWrapper new QueryWrapper();queryWrapper.lambda().select(UserInfo::getId, UserInfo::getUserName, UserInfo::getPassword).eq(UserInfo::getDeleteFlag, 0).like(UserInfo::getUserName, min);ListUserInfo userList userInfoMapper.selectList(queryWrapper);userList.forEach(System.out::println);} 5LambdaUpdateWrapper SQL UPDATE user_info SET delete_flag0 WHERE id IN (1,2) Testvoid testLambdaUpdateWrapper(){UpdateWrapperUserInfo updateWrapper new UpdateWrapper();updateWrapper.lambda().set(UserInfo::getDeleteFlag, 1).in(UserInfo::getId, List.of(1,2));userInfoMapper.update(updateWrapper);} setIncrBy递增 setDecrBy递减 示例 UPDATE user_info SET delete_flag delete_flag 1 Testvoid testLambdaUpdateWrapper(){UpdateWrapperUserInfo updateWrapper new UpdateWrapper();updateWrapper.lambda().set(UserInfo::getDeleteFlag, 1).in(UserInfo::getId, List.of(1,2));userInfoMapper.update(updateWrapper);} 6自定义 SQL MyBatis-plus 框架提供的操作不能满足所有的需求我们可以利用 Wrapper 构造条件在 Mapper 自定义 SQL。 条件构造器传参参数名 ew 或者重命名 Param(Constants.WRAPPER)。 构造器使用${ew.customSqlSegment} 引用。 SQL select id,username,password FROM user_info WHERE user_name admin 注解方式 Select(SELECT id, user_name, password FROM user_info ${ew.customSqlSegment})UserInfo selectByCustom(Param(Constants.WRAPPER) WrapperUserInfo wrapper); XML 方式 select idselectByCustom2 resultTypecom.edu.mybatis.plus.model.UserInfoSELECT id, user_name, password FROM user_info ${ew.customSqlSegment}/select 测试代码 Testvoid testSelectByCustom(){QueryWrapperUserInfo queryWrapper new QueryWrapper();queryWrapper.lambda().eq(UserInfo::getUserName, admin);userInfoMapper.selectByCustom(queryWrapper);}
http://www.zqtcl.cn/news/984303/

相关文章:

  • 家电网站建设需求分析朔州网络推广
  • 陕西交通建设集团网站体检网络营销中自建网站
  • 做游戏的php网站有哪些微信商城是什么
  • wordpress memcached redux深圳网站优化方法
  • 移动商城 网站建设方法方式韩国导航地图app
  • 企业网站源码是什么瑞安企业做网站
  • 佛山深圳建网站wordpress 段代码
  • 网站备案 强制仿牌网站容易被攻击吗
  • 网站做访问追踪js特效演示网站
  • 建设网站女装名字大全宝宝投票网站怎么做
  • 江苏省建设厅网站首页天津百度网站排名优化
  • 织梦网络设计工作室网站模板镇江市精神文明建设网站
  • 网站管理工具装修公司设计软件有哪些
  • 招标网站的服务费怎么做分录什么网站做玩具的比较多
  • 青海省住房建设厅网站WordPress主题启用出现错误
  • 自己怎么建网站网站的seo 如何优化
  • 博客网站模板下载如何自学美工
  • 哪个免费建站好专业seo要多少钱
  • 做3d建模贴图找哪个网站珠海建设网站公司简介
  • 网站开发过程前端后端qq刷赞网站咋做
  • 湘潭高新区建设局网站旅游做攻略的网站有哪些
  • wordpress网站云备份网站模块插件是怎么做的
  • 郑州市城乡建设规划网站深圳十佳设计公司排名
  • 上海建设项目环保验收公示网站两新支部网站建设
  • 网站开发移动端网络系统软件应用与维护
  • 浙江网站建设营销网站后台管理系统一般用户名是什么
  • 网站 空间 租用wordpress搬家需要修改
  • 做网站推广怎么找客户网站换空间 seo
  • ipad网站开发seo哪家强
  • 昆明网站建设猫咪科技公司资料模板