网站建设做一个要多久网站建设微信文章

bicheng/2026/1/19 19:56:34/文章来源:
网站建设做一个要多久,网站建设微信文章,上海公共招聘网站,天河高端网站建设1.MyBatis-Plus 1.1特性 无侵入#xff1a;只做增强不做改变#xff0c;引入它不会对现有工程产生影响#xff0c;如丝般顺滑损耗小#xff1a;启动即会自动注入基本 CURD#xff0c;性能基本无损耗#xff0c;直接面向对象操作强大的 CRUD 操作#xff1a;内置通用 M…1.MyBatis-Plus 1.1特性 无侵入只做增强不做改变引入它不会对现有工程产生影响如丝般顺滑损耗小启动即会自动注入基本 CURD性能基本无损耗直接面向对象操作强大的 CRUD 操作内置通用 Mapper、通用 Service仅仅通过少量配置即可实现单表大部分 CRUD 操作更有强大的条件构造器满足各类使用需求支持 Lambda 形式调用通过 Lambda 表达式方便的编写各类查询条件无需再担心字段写错支持主键自动生成支持多达 4 种主键策略内含分布式唯一 ID 生成器 - Sequence可自由配置完美解决主键问题支持 ActiveRecord 模式支持 ActiveRecord 形式调用实体类只需继承 Model 类即可进行强大的 CRUD 操作支持自定义全局通用操作支持全局通用方法注入 Write once, use anywhere 内置代码生成器采用代码或者 Maven 插件可快速生成 Mapper 、 Model 、 Service 、 Controller 层代码支持模板引擎更有超多自定义配置等您来使用内置分页插件基于 MyBatis 物理分页开发者无需关心具体操作配置好插件之后写分页等同于普通 List 查询分页插件支持多种数据库支持 MySQL、MariaDB、Oracle、DB2、H2、HSQL、SQLite、Postgre、SQLServer 等多种数据库内置性能分析插件可输出 SQL 语句以及其执行时间建议开发测试时启用该功能能快速揪出慢查询内置全局拦截插件提供全表 delete 、 update 操作智能分析阻断也可自定义拦截规则预防误操作 1.2支持数据库 任何能使用 MyBatis 进行 CRUD, 并且支持标准 SQL 的数据库具体支持情况如下如果不在下列表查看分页部分教程 PR 您的支持。 MySQLOracleDB2H2HSQLSQLitePostgreSQLSQLServerPhoenixGauss ClickHouseSybaseOceanBaseFirebirdCubridGoldilockscsiidbinformixTDengineredshift达梦数据库虚谷数据库人大金仓数据库南大通用(华库)数据库南大通用数据库神通数据库瀚高数据库优炫数据库 1.3框架结构 2.MP快速上手 官网地址https://baomidou.com/pages/24112f/ 2.1导入依赖 pom.xml !--MyBatisPlus-- dependencygroupIdcom.baomidou/groupIdartifactIdmybatis-plus-boot-starter/artifactIdversion3.5.3.1/version /dependency 1234562.2修改配置 application.yml 2.2.1单源 #mybatis-plus mybatis-plus:#配置类型别名所对应的包type-aliases-package: com.example.domain#设置mybatis-Plus的统全局配置global-config:db-config:#设置实体类对应的统一前缀table-prefix: tb_# 生成统一的主键生成策略id-type: autoconfiguration:# 打印Mybatis-plus的执行日志log-impl: org.apache.ibatis.logging.stdout.StdOutImpl 1234567891011121314type-aliases-package: com.example.domain 2.2.2多源 spring:datasource:dynamic:#设置默认的数据源或者数据源组,默认值即为masterprimary: master #严格匹配数据源,默认false. true未匹配到指定数据源时抛异常,false使用默认数据源strict: false datasource:master:url: jdbc:mysql://xx.xx.xx.xx:3306/dynamicusername: rootpassword: 123456driver-class-name: com.mysql.cj.jdbc.Driver # 3.2.0开始支持SPI可省略此配置mysql2:url: jdbc:mysql://xx.xx.xx.xx:3307/dynamicusername: rootpassword: 123456driver-class-name: com.mysql.cj.jdbc.Drivermysql2:url: ENC(xxxxx) # 内置加密,使用请查看详细文档username: ENC(xxxxx)password: ENC(xxxxx)driver-class-name: com.mysql.cj.jdbc.Driver#......省略 1234567891011121314151617181920212223242.3注解使用 Service、Mapper、TableName、TableId、TableFild、TableLogic、EnumValue、DS Service public interface IBookService extends IServiceBook {} 1Service public class BookServiceImpl extends ServiceImplBookDao, Book implements IBookService {} 12实现接口继承Service 如果多源 DS(master) Service public class BookServiceImpl extends ServiceImplBookDao, Book implements IBookService { } 1234需要使用DS注解使用源 Mapper Mapper public interface BookDao extends BaseMapperBook { } 123继承实体类 TableName //设置实体类对应的表名 TableName(t_user) public class Book { } 1234若在yml文件中进行了配置此步骤可省略 TableId public class Book {//将属性对应的字段作为主键//TableId注解的value属性用于指定主键的字段//TableId注解的type属性设置主键生成策略TableId(value uid, type IdType.AUTO)//private Integer id;private Integer uid; } 12345678设置数据库对应主键ID TableFild Data public class Book {private String type;//指定属性所对应的字段名TableField(book_name)private String name; } 1234567设置对应数据库的字段名 TableLogic Data public class Book {//设置属性是否逻辑删除TableLogicprivate int isDelete; } 123456是否逻辑删除 需要添加数据库字段 EnumValue Getter public enum SexEnum {MALE(1, 男),FEMALE(2, 女);;//将注解所标识的属性的值存储到数据库中EnumValueprivate Integer sex;private String sexName;SexEnum(Integer sex, String sexName) {this.sex sex;this.sexName sexName;} } 123456789101112131415使用枚举存入值 2.4条件构造器使用 2.4.1分页使用 若需要使用mp的分页工则需要添加配置类 Configuration public class MpConfig {Beanpublic MybatisPlusInterceptor mInterceptor() {//1.定义Mp拦截器MybatisPlusInterceptor mpInterceptor new MybatisPlusInterceptor();//2.添加具体的拦截器添加分页拦截器实现分页查询的动态SQLmpInterceptor.addInnerInterceptor(new PaginationInnerInterceptor(DbType.MYSQL));return mpInterceptor;} } 1234567891011 Test public void testPage(){ PageUser page new Page( current: 2,size: 3);userMapper.selectPage(pagequeryWrapper: null);system.out.println(page); } 1234562.4.2查询 2.4.2.1selectMaps Test public void test06(){//查询用户的用户名、年龄、邮箱信息QuerywrapperUser querywrapper new Querywrapper();querywrapper.select( user_name age,email );ListMapString,object maps userMapper.selectMaps(querywrapper);maps.forEach(system.out: :println); } 123456782.4.2.2动态查询 public void test10(){string username a;Integer ageBegin null;Integer ageEnd 30;QuerywrapperUser querywrapper new Querywrapper();querywrapper.like(stringutils.isNotBLank(username)column: user_name username).ge( condition: ageBegin ! nullcolumn: age, ageBegin).le( condition: ageEnd l nullcolumn: age, ageEnd);Listuser list userMapper.selectList(querywrapper);list.forEach(system.out : :println); } 1234567891011加个条件判断 3.MP基本内容 3.1配置application.yml spring: # 设置数据源datasource:# 设置驱动类driver-class-name: com.mysql.cj.jdbc.Driver#配置连接数据库的各个信息url: jdbc:mysql://localhost:3306/ssm_db?serverTimezoneUTCusername: rootpassword: qweasdzxc 123456789流程 设置数据源设置驱动类配置连接数据库的各个信息 注意 MySQL5.7版本的url: jdbc:mysql://localhost:3306/mybatis_plus?characterEncodingutf-8usesSLfalse MySQL8.0版本的url: jdbc:mysql://localhost:3306/mybatis_plus?serverTimezoneGMT%2B8characterEncodingutf-8useSSLfalse 否则运行测试用例报告如下错误: java.sql.SQLException: The server time zone value ‘OD1uzé×E士14a’ is unrecognized or representsmore 3.2Mapper接口✳ Mapper public interface BookDao extends BaseMapperBook { } 123使用Mapper注解。在IOC容器中只能存在类所存在的Bean不能存在接口所存在的Bean。因此将动态生成的代理类交给了IOC容器管理 Mapeper将当前接口标为持久层并为Springboot所管理 3.3加入日志功能 mybatis-plus:configuration:log-impl: org.apache.ibatis.logging.stdout.StdOutImpl 123加入日志功能可打印出相关的sql语句。注意sql语句的生成是mybatis-plus将实体类对应的泛型反射为SQL语句。 例如BaseMapper此处的Book就为实体类 3.4测试自定义功能 ?xml version1.0 encodingUTF-8 ? !DOCTYPE mapper PUBLIC -//mybatis.org//DTD Mapper 3.0//ENhttp://mybatis.org/dtd/mybatis-3-mapper.dtd mapper namespacecom.example.mapper.BookDao!--定义接口方法对应的 SQL 语句--/mapper 123456783.5Service接口✳ public interface IBookService extends IServiceBook {} 1IService T为泛型填写对象 Service public class BookServiceImpl extends ServiceImplBookDao, Book implements IBookService {} 12ServiceImplBookDao, Book M为MapperT为泛型 3.6TableName注解 //设置实体类对应的表名 TableName(t_user) Data public class Book {private Integer id;private String type;private String name;private String description; } 123456789同时我们也可以在yml文件中对表的前缀进行统一处理 #mybatis-plus mybatis-plus:#设置mybatis-Plus的统全局配置global-config:db-config:#设置实体类对应的统一前缀table-prefix: tb_ 12345673.7TableId注解 Data public class Book {//将属性对应的字段作为主键TableId// private Integer id;private Integer uid;private String type;private String name;private String description; } 12345678910mybatis-plus会将表中的属性作为数据库中的字段名 当数据库的表中的主键id没有设置为默认自增长时而实体类的唯一标识为“ uid”而不是“id”那么MyBatis-Plus就不能通过反射实体类的属性来找到表中字段的唯一标识就需要通过注解来指明 3.7.1Value属性 Data public class Book {//将属性对应的字段作为主键//TableId注解的value属性用于指定主键的字段TableId(uid)private Integer id;private String type;private String name;private String description; } 12345678910当数据库中的字段名与实体类的类名对应不上时进行使用。vaule默认可以省略 3.7.2Type属性 Data public class Book {//将属性对应的字段作为主键//TableId注解的value属性用于指定主键的字段//TableId注解的type属性设置主键生成策略TableId(value uid, type IdType.AUTO)private Integer id;private String type;private String name;private String description; } 1234567891011常用的主键策略 ldType.ASSIGN_ID(默认)基于雪花算法的策略生成数据id与数据库id是否设置自增无关 ldType.AUTO使用数据库的自增策略注意该类型请确保数据库设置了id自增否则无效 #mybatis-plus mybatis-plus:#设置mybatis-Plus的统全局配置global-config:db-config:#设置实体类对应的统一前缀table-prefix: tb_# 生成统一的主键生成策略id-type: autoconfiguration:# 打印Mybatis-plus的执行日志log-impl: org.apache.ibatis.logging.stdout.StdOutImpl 123456789101112Type属性也可以根据yml文件的 id-type: auto来进行统一生成 3.8雪花算法 背景 需要选择合适的方案去应对数据规模的增长以应对逐渐增长的访问压力和数据量。数据库的扩展方式主要包括:业务分库、主从复制数据库分表。 雪花算法中在分布式中应用非常的广泛因为雪花算法的有点性 3.9TableFild注解 Data public class Book {//将属性对应的字段作为主键//TableId注解的value属性用于指定主键的字段//TableId注解的type属性设置主键生成策略TableId(value uid, type IdType.AUTO)private Integer id;private String type;//指定属性所对应的字段名TableField(book_name)private String name;private String description; } 12345678910111213TableField不是特别的常用若数据库中的字段名是这样的形式“book_name”那么mybatis-plus会自动的将下划线转换为bookName如此大驼峰的命名方式反之亦然 3.10TableLogic注解 物理删除:真实删除将对应数据从数据库中删除之后查询不到此条被删除的数据逻辑删除:假删除将对应数据中代表是否被删除字段的状态修改为被删除状态”之后在数据库中仍旧能看到此条数据记录使用场景:可以进行数据恢复 Data public class Book {//将属性对应的字段作为主键//TableId注解的value属性用于指定主键的字段//TableId注解的type属性设置主键生成策略TableId(value uid, type IdType.AUTO)private Integer id;private String type;//指定属性所对应的字段名TableField(book_name)private String name;private String description;//设置属性是否逻辑删除TableLogicprivate int isDelete; } 12345678910111213141516当数据库中的字段有isDelete字段时给对应的实体类加上此注解。在后续的mybatis-plus的删除功能中实际会执行sql中的update的修改操作将isDelete变为1。与此同时mybatis-plus的查询的操作实际在执行sal中自动加上and is_delete 0的操作查询出未删除的数据 4.MP条件构造器✳ 4.1Wapper介绍 Wrapper:条件构造抽象类最顶端父类AbstractWrapper : 用于查询条件封装生成sql 的where条件 QueryWrapper :查询条件封装UpdateWrapper : Update条件封装AbstractLambdaWrapper:使用Lambda语法 LambdaQueryWrapper:用于Lambda语法使用的查询WrapperLambdaUpdateWrapper : Lambda更新封装wrapper 4.2QuerryWrapper 4.2.1组装查询 Test public void testo1(){//查询用户名包含a年龄在20到3o之间邮箱信息不为nuLl的用户信息QuerywrapperUser querywrapper new Querywrapper();querywrapper.like( user_name, a).between( age, 20 30).isNotNull( email);Listuser list userMapper.selectList(querywrapper);list.forEach(system.out: : println) ; } 123456789注: querywrapper.like中的参数 column是数据库中的字段名并不是实体类中的属性名 4.2.2组装排序 Test public void test02(){//查询用户信息按照年龄的降序排序若年龄相同则按照id升序排序QuerywrapperUser querywrapper new Querywrapper();querywrapper.orderByDesc(age).orderByAsc(uid);Listuser list userMapper.selectListlquerywrapper);list.forEach(system.out::println); } 123456789注: querywrapper.orderByDesc中的参数 column是数据库中的字段名并不是实体类中的属性名 4.2.3组装删除 Test public void test03(){ //删除邮箱地址为null的用户信息 QuerywrapperUser querywrapper new Querywrapper();querywrapper.isNull( email ); int result userMapper.delete(querywrapper);system.out.print1n(result: result); } 1234567注: querywrapper.isNull中的参数 column是数据库中的字段名并不是实体类中的属性名 4.2.4组装修改 Test public void test04(){//将年龄大于20并且用户名中包含有a或邮箱为nuLl的用户信息修改QuerywrapperUser querywrapper new Querywrapper();querywrapper.gt( age, 20).like( user_name, a).or().isNul1( email);user user new User();user.setName(小明);user.setEmail( testatguigu.com );int result userMapper.update(user,querywrapper);system.out.println(result: result);} 12345678910111213注: querywrapper.gt中的参数 column是数据库中的字段名并不是实体类中的属性名 gt大于or或许like 模糊匹配 4.2.5条件的优先级条件优先级查询 Testpublic void test05(){//将用户名中包含有a并且年龄大于20或邮箱为null的用户信息修改// Lambda中的条件优先执行QuerywrapperUser querywrapper new Querywrapper();querywrapper.like( column: user_name,val: a).and(i-i.gt( column: age , val: 20).or( ).isNull( column: email));User user new User();user.setName(小红);user.setEmail(testatguigu.com ) ;int result userMapper.update(user,querywrapper);system.out.println( result: result); } 123456789101112注意Lambada表达式优先执行 参考资料深入浅出 Java 8 Lambda 表达式 - 姚春辉 - 博客园 (cnblogs.com) 4.2.6组装select字句排除某些字段查询 Test public void test06(){//查询用户的用户名、年龄、邮箱信息QuerywrapperUser querywrapper new Querywrapper();querywrapper.select( user_name age,email );ListMapString,object maps userMapper.selectMaps(querywrapper);maps.forEach(system.out: :println); } 12345678如果想要查询数据库中的某些值可用select进行组装 4.2.7组装字查询 public void test07(){//查询id小于等于100的用户信息QuerywrapperUser querywrapper new Querywrapper();querywrapper.inSql( column: uidinValue: select uid from t_user where uid 100)ListUser list userMapper.selectList(querywrapper);list.forEach(system.out : :print1n); 123456嵌套子查询如需要用到字查询类的值可使用嵌套子查询进行 4.2.8动态查询✳ public void test10(){string username a;Integer ageBegin null;Integer ageEnd 30;QuerywrapperUser querywrapper new Querywrapper();querywrapper.like(stringutils.isNotBLank(username)column: user_name username).ge( condition: ageBegin ! nullcolumn: age, ageBegin).le( condition: ageEnd l nullcolumn: age, ageEnd);Listuser list userMapper.selectList(querywrapper);list.forEach(system.out : :println); } 1234567891011当需要使用动态Sql来进行条件拼接时可使用mp的condition功能 4.3UpdateWrapper public void testo8(){//将用户名中包含有a并且年龄大于20或邮箱为null的用户信息修改UpdatewrapperUser updatewrapper new updatewrapper();updatewrapper.like( column: user_name,val: a).and(i - i.gt( column: ageval: 20).or( ).isNull( column: email));updatewrapper.set(user_name,小黑).set(email , abcatguigu.com );int result userMapper.update( entity: nullupdatewrapper);system.out.println(result: resulth); } 12345678910修改功能的使用 4.4LambdaQueWrapper Test public void test11(){ string username a;Integer ageBegin null;Integer ageEnd 30; LambdaQuerywrapperUserquerywrapper new LambdaQuerywrapper(); querywrapper.like(stringutils.isNotBLank(username),user::getName,username); .ge( ageBegin ! null,user::getAge,ageBegin); .le( ageEnd ! null,user::getAge,ageEnd); ListUser list userMapper.selectList(querywrapper); list.forEach(system.out::print1n); } 123456789101112当使用LambadaQuerapper时配置参数的第二个参数是与QuerryWrepper不相同的它是函数式的接口其中第二个参数可设置为user::getAge为了防止程序员将查询的名字写错 4.5LambdaUpdateWrapper Test public void test12(){//将用户名中包含有a并且年龄大于20或邮箱为null的用户信息修改LambdaUpdatewrapperUser updatewrapper new LambdaUpdatewrapper();updatewrapper.like(User: :getNameval: a).and(i - i.gt(User : :getAgeval: 20).or().isNull(User::getEmail));updatewrapper.set(User::getName,小黑).set(User::getEmail,abcatguigu.com);int result userMapper.update( entity: nullupdatewrapper);System.out.println(result: result); } 12345678910当使用LambdaUpdateWrapper时配置参数的第二个参数是与updatewrapper不相同的它是函数式的接口其中第二个参数可设置为user::getAge为了防止程序员将查询的名字写错 跟LambdaQueWrapper类似 5.MP分页插件✳ 5.1常规分页 若需要使用mp的分页工则需要添加配置类 Configuration public class MpConfig {Beanpublic MybatisPlusInterceptor mInterceptor() {//1.定义Mp拦截器MybatisPlusInterceptor mpInterceptor new MybatisPlusInterceptor();//2.添加具体的拦截器添加分页拦截器实现分页查询的动态SQLmpInterceptor.addInnerInterceptor(new PaginationInnerInterceptor(DbType.MYSQL));return mpInterceptor;} } 1234567891011 Test public void testPage(){ PageUser page new Page( current: 2,size: 3);userMapper.selectPage(pagequeryWrapper: null);system.out.println(page); } 123456MP分页功能的其余方法 iPage.getPages(); iPage.getSize(); iPage.getCurrent(); iPage.getRecords(); iPage.getTotal(); 123455.2自定义分页 在自定义的sql查询后实现分页功能 UserMapper.java /** *通过年龄查询用户信息并分页 *param page MyBatis-PLus所提供的分页对象必须位于第一个参数的位訇param age *return */ PageUser selectPagevo(Param( page) PageUser pageParam(age) Integer age); 123456application.yml mybatis-plus:#配置类型别名所对应的包type-aliases-package: com.example.domain#设置mybatis-Plus的统全局配置global-config:db-config:#设置实体类对应的统一前缀table-prefix: tb_ # 生成统一的主键生成策略id-type: autoconfiguration:# 打印Mybatis-plus的执行日志log-impl: org.apache.ibatis.logging.stdout.StdOutImpl 12345678910111213type-aliases-package: com.example.domain 对应映射文件UserMapper.xml select idselectPagevo resultTypeUserselect uid,user_name,age,email from t_user where age #{age} /select 123返回值类型 设置返回的为User因为最终是返回为User对象 注意此处需要在yml文件中进行配置别名 测试 Test public void testPagevo(){PageUser page new Page( 1, 3);userMapper.selectPagevo(page 20);system.out.println(page.getRecords());system.out.println(page.getPages());system.out.println(page.getTotal());system.out.println(page.hasNext());system.out.println(page.hasPrevious()); } 123456789106.MP乐观锁和悲观锁 6.1乐观锁插件 乐观锁实现流程 数据库中添加version字段取出记录时获取当前version SELECT id, name,price, version FROM product WHERE id1 1更新时version 1如果where语句中的version版本不对则更新失败 UPDATE product SET priceprice50‘version version 1 WHERE id1 AND‘version1 11.数据库中添加version字段 2.实体类添加Version注解 Data public class Book {private Integer id;private String type;private String name;private String description;Version //标识乐观锁版本号字段private Integer version; } 1234567893.配置类中添加乐观锁拦截器 Configuration public class MpConfig {Beanpublic MybatisPlusInterceptor mInterceptor() {//1.定义Mp拦截器MybatisPlusInterceptor mpInterceptor new MybatisPlusInterceptor();//2.添加具体的拦截器添加分页拦截器实现分页查询的动态SQLmpInterceptor.addInnerInterceptor(new PaginationInnerInterceptor(DbType.MYSQL));//3.添加具体的拦截器添加乐观锁拦截器实现乐观锁的查询mpInterceptor.addInnerInterceptor(new OptimisticLockerInnerInterceptor());return mpInterceptor;} } 123456789101112136.2悲观锁插件 一个人在操作时另一个人不能同时进行操作 7.MP通用枚举EnumValue 1.假设数据库中存储age字段类型为int(类型不相匹配的字段) 2.枚举类添加EnumValue注解 Getter public enum SexEnum {MALE(1, 男),FEMALE(2, 女);;//将注解所标识的属性的值存储到数据库中EnumValueprivate Integer sex;private String sexName;SexEnum(Integer sex, String sexName) {this.sex sex;this.sexName sexName;} } 123456789101112131415注意需要添加EnumValue来实现数据库的存值某则会将汉字存入数据库中 Data public class Book {private Integer id;private String type;private String name;private String description;private SexEnum sex;} 123456789补充在实体类中使用枚举类时需要将类型设定为枚举类型 3.配置application.yml #mybatis-plus mybatis-plus: #扫描通用枚举包type-enums-package: com.example.enums 12344.使用枚举类型 user.setsex(SexEnum.MALE); 1在使用时需要从枚举类中读取即可 8.MP代码生成器 1.导入依赖 pom.xml dependencygroupIdcom.baomidou/groupIdartifactIdmybatis-plus-generator/artifactIdversion3.5.1/version /dependency dependencygroupIdorg.freemarker/groupIdartifactIdfreemarker/artifactIdversion2.3.31/version /dependency 123456789102.快速生成 FastAutoGenerator.create(url, username, password).globalConfig(builder - {builder.author(baomidou) // 设置作者//.enableSwagger() // 开启 swagger 模式.fileOverride() // 覆盖已生成文件.outputDir(D://); // 指定输出目录}).packageConfig(builder - {builder.parent(com.baomidou.mybatisplus.samples.generator) // 设置父包名.moduleName(system) // 设置父包模块名.pathInfo(Collections.singletonMap(OutputFile.xml, D://)); // 设置mapperXml生成路径}).strategyConfig(builder - {builder.addInclude(t_simple) // 设置需要生成的表名.addTablePrefix(t_, c_); // 设置过滤表前缀}).templateEngine(new FreemarkerTemplateEngine()) // 使用Freemarker引擎模板默认的是Velocity引擎模板.execute();9.MP配置多数据源 1.添加yml配置 application.yml spring:datasource:dynamic:#设置默认的数据源或者数据源组,默认值即为masterprimary: master #严格匹配数据源,默认false. true未匹配到指定数据源时抛异常,false使用默认数据源strict: false datasource:master:url: jdbc:mysql://xx.xx.xx.xx:3306/dynamicusername: rootpassword: 123456driver-class-name: com.mysql.cj.jdbc.Driver # 3.2.0开始支持SPI可省略此配置mysql2:url: jdbc:mysql://xx.xx.xx.xx:3307/dynamicusername: rootpassword: 123456driver-class-name: com.mysql.cj.jdbc.Drivermysql2:url: ENC(xxxxx) # 内置加密,使用请查看详细文档username: ENC(xxxxx)password: ENC(xxxxx)driver-class-name: com.mysql.cj.jdbc.Driver#......省略2.更改数据源 DS(master) Service public class BookServiceImpl extends ServiceImplBookDao, Book implements IBookService { } 123410.MyBatisX插件 使用方法 1.idea中 DataBase右击构造快速生成 2.选择modulepackage实体类忽略前缀和表前缀 3.一般如下选择配置 11.知识加油站 11.1 lombok !--lombok-- dependencygroupIdorg.projectlombok/groupIdartifactIdlombok/artifactId /dependency 12345 Data public class Book {private Integer id;private String type;private String name;private String description; }LomBok不会生成有参构造的方法

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/bicheng/88750.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

seo快速建站哪个网站做的win10系统好

博主:代码菌-CSDN博客 专栏:C杂货铺_代码菌的博客-CSDN博客 目录 🌈前言🌈 📁 类的6个默认成员函数 📁 构造函数 📂 概念 📂 特性(灰常重要) &#x1f4c…

网站建设.c看广告收益最高的软件

目录 一、HTML中Canvas画图strokeStyle 和 fillStyle 的区别是什么? 二、如何设置一幅canvas图中某个颜色透明? 三、H5 canvas中strokeRect参数如果是小数,如何处理? 四、H5 Canvas中如何画圆角矩形框? 一、HTML中…

云南城市建设职业学院spoc网站济南 网站设计公司

介绍 至少6个实例才能组成集群。3主3从会自动分配 Redis集群原理 Redis集群架构 Redis Cluster采用虚拟槽分区,将所有的数据根据算法映射到0~16383整数槽内 Redis Cluster是一个无中心的结构 每个节点都保存数据和整个集群的状态 集群角色 Master:Master…

鹤壁市城市建设投资有限公司网站一学一做动漫视频网站

Macs Fan Control Pro是一款功能全面、易于使用且具有良好兼容性和安全性的风扇控制软件,适用于各种Mac用户。 除了能够调整风扇速度外,Macs Fan Control Pro还支持实时监测硬件传感器的温度,例如CPU、硬盘等,同时显示每个传感器…

佛山网站建设专业苏州工程网站建设

Vojtěch Jarnk 一、Prim算法简史 Prim算法(普里姆算法),是1930年捷克数学家算法沃伊捷赫亚尔尼克(Vojtěch Jarnk)最早设计; 1957年,由美国计算机科学家罗伯特普里姆独立实现; 19…

营销网站建设的价格网站正能量入口

“种一棵树最好的时间是十年前,其次是现在! ” 任何时候,只要开始,一切都来得及,如果你真的想要转行,何时都不会晚,只要你付出相应的努力,坚持下去,一切都会朝着自己希望…

自己做的网站如何让外网访问网站地图生成器

【Spring连载】使用Spring访问 Apache Kafka(十八)----非阻塞重试Non-Blocking Retries 一、这种模式是如何运作的How The Pattern Works二、回退延迟精度Back Off Delay Precision概述和保证Overview and Guarantees 三、配置Configuration四、Programm…

中国教育网站官网如何制作qq小程序

本文主要收录一些大数据不错的实践文章 1、数禾云上数据湖最佳实践 https://blog.51cto.com/u_15089766/2601706 该文章介绍了数禾云的数据胡实践,包含presto以及数据湖等组件的一些部署架构,文章听不错的,里面提到了为了避免presto与yarn计…

无锡市建设银行总行网站广告联盟app下载赚钱

选择专业是一个非常重要的决定,因为它可能会对你的职业生涯产生深远的影响。C#和Java都是非常流行的编程语言,它们都有自己的优点和适用场景。 感觉题主可以从下面几个方面来考虑: 1、就业前景: 就业前景是选择专业时需要考虑的…

o2o网站建设市场网站开发 强制兼容模式

在排查线上异常的过程中,查询日志总是必不可缺的一部分。现今大多采用的微服务架构,日志被分散在不同的机器上,使得日志的查询变得异常困难。工欲善其事,必先利其器。如果此时有一个统一的实时日志分析平台,那可谓是雪…

做网站工作图深圳网站建设 设计首选

分布式和微服务有什么区别 分布式是把一个集中式系统拆分成多个系统,每一个系统单独对外提供部分功能,整个分布式系统整体对外提供一整套服务。对于访问分布式系统的用户来说,感知上就像访问一台计算机一样. 而分布式架构的具体实现有很多种…

做一家新闻媒体网站多少钱聊城网站那家做的好

11月18日-19日,复旦MBA科创青干营二期学生开启了整合实践活动的第三次企业参访,前往位于合肥的蔚来第二先进制造基地、安徽万邦医药科技股份有限公司和合肥国轩高科动力能源有限公司,在学术导师和科创企业家“双导师”的指导下,深…

长沙做医院的网站建设网站制作源码版权

文章目录 0 前言1 一个通信的协议的组成2 常用协议名词解释2.1 UART2.2 RS-2322.3 RS-4852.4 RS-4222.5 比较 3 常用的芯片 0 前言 最近有点想研究USB协议,正好也看到有评论说对如何选择USB转串口模块有些疑惑,其实我也一直很想写一篇关于串口的总结式的…

什么建站程序好收录营销组合策略

接口概览 接口大概理解 接口类型是队其他类型行为的概括与抽象 接口类型中,包含函数声明,但没有数据变量接口的作用通过使用接口,可以写出更加灵活和通用的函数,这些函数不用绑定在一个特定的类型实现上Go 接口特征 很多面向对象…

嘉鱼网站建设前十静态的网页wordpress

Java如何快速将JSONObject转换成实体类 在工作的开展中,会遇到从外部接口中获取到了一大段Json数据的返回,想要将这个Json写入到实体类中的情况。 在遇到这种情况的时候,第一时间我想到的是最笨的遍历方法,采用最基础的方式将Js…

男女做那个视频的网站内容营销方案

1、脏读 「事务B」将 id 为 1 的用户 name 修改为“小卡”,事务未提交。「事务A」查询 id 为 1 的用户数据,此时 name 已为“小卡”。 2、不可重复度 「事务A」第一次读取 id 为 1 的用户,name 是 “卡卡”。「事务B」将 id 为 1 的用户 nam…

建站平台 iis网页制作与网站建设实战大全

创作方向:回顾自己学习编程的过程,分享经历和成长感悟。 当初选择学习计算机,我满怀梦想地说出了成为一名神奇的码农的愿望。我想象着能够像编织魔法一样,通过编写程序创造出炫酷的虚拟世界。然而,我很快就意识到&…

网站建设微享互动传奇网站架设教程

一、文本文件 C中输入输出是通过流对象进行操作,对于文件来说写文件就是将内容从程序输出到文件,需要用到写文件流ofstream;而读文件就是将内容从文件输入到程序,需要用到读文件流ifstream;这两个文件流类都包含在头文…

建站公司咨询做网站网站名字自己设置吗

文章目录 一、操作系统的基本概念1.1操作系统的层次结构1.2操作系统的运行视图1.3操作系统的概念(定义)1.4操作系统的功能和目标1.4.1操作系统的功能和目标——作为系统资源的管理者1.4.2操作系统的功能和目标——向上层提供方便易用的服务1.4.2.1GUI:图形化用户接口…

南昌建网站那家好建设个网站多少钱

网站是企业展示形象、引流营销的重要互联网窗口,因此一定要设计得足够吸睛美观,引起顾客兴趣。今天就来教大家如何做好网页设计与制作。提到网页设计,可能很多小白都要问了:网页设计用什么软件做?网页设计需要学什么&a…