主项目链接:https://gitee.com/java_wxid/java_wxid
项目架构及博文总结:
- 点击:【使用Spring Boot快速构建应用】
- 点击:【使用Spring Cloud Open Feign基于动态代理动态构造请求实现与其他系统进行交互】
- 点击:【使用Spring Cloud Hystrix实现服务容错、熔断、降级、监控】
- 点击:【使用Spring Cloud Ribbon以库的方式集成到服务的消费方实现客户端负载均衡】
- 点击:【使用Spring Cloud Gateway作为API网关服务进行请求拦截、服务分发、降级、限流】
- 点击:【使用Spring Cloud Security Oauth2作为微服务统一认证中心实现用户认证和授权访问】
- 点击:【使用Spring Cloud Stream作为消息驱动用于动态的切换中间件】
- 点击:【使用Spring Cloud Skywalking基于字节码注入通过探针方式进行链路追踪、分布式追踪、性能指标分析、应用和服务依赖分析】
- 点击:【使用Spring Cloud Alibaba Nacos实现服务注册/发现/续约/剔除/下线、心跳检测、服务配置管理、基于长轮训机制实现配置动态变更】
- 点击:【使用Spring Cloud Alibaba Seata作为对项目代码无入侵的分布式事务解决方案】
- 点击:【使用Spring Cloud Alibaba Sentinel实现高可用流量防护】
- 点击:【使用Apache ShardingSphere作为关系型数据库中间件实现分库分表、读写分离】
- 点击:【使用Apache Mybatis作为持久层框架用于定制化SQL、存储过程以及高级映射】
- 点击:【使用Redis作为高性能分布式缓存数据库】
- 点击:【使用ElasticSearch全文搜索】
- 点击:【使用MongoDB非关系型数据库】
- 点击:【使用xxl-job作为分布式任务调度平台】
- 点击:【使用Elasticsearch + Logstash + Kibana作为日志收集系统】
- 点击:【使用Apifox作为API文档、API调试、API Mock、API自动化测试】
- 点击:【使用Apache Spark作为基于内存计算的大数据分析引擎用于批处理、交互式查询】
- 点击:【使用ETL工具将数据源抽取到HDFS作为高可靠、高吞吐量的分布式文件系统存储,通过Hive清洗、处理和计算原始数据,Hive清洗处理后的结果,将存入Hbase,海量数据随机查询场景从HBase查询数据】
- 点击:【使用领域驱动DDD设计和设计模式进行开发】
- 点击:【使用Netty基于Java NIO封装的高性能的网络通信框架】
- 点击:【使用k8s、docker、docker-compose、宝塔面板进行环境搭建和部署】
- 点击:【使用Vue渐进式JavaScript框架作为适用场景丰富的Web前端框架】
- 点击:【分享人才筛选、工作分配、高效办公、项目推动等团队管理经验】
项目模块:
前期规划,实现部分
java_wxid ├── demo // 演示模块 │ └── 模块名称:apache-mybatis-demo模块 //Apache Mybatis集成(已实现并有博文总结) │ └── 模块名称:apache-shardingsphere-demo模块 //Apache ShardingSphere集成(已实现并有博文总结) │ └── 模块名称:design-demo模块 //设计模式实战落地(已实现并有博文总结) │ └── 模块名称:elasticsearch-demo模块 //ElasticSearch集成(已实现并有博文总结) │ └── 模块名称:mongodb-demo模块 //MongoDB集成(已实现并有博文总结) │ └── 模块名称:redis-demo模块 //Redis集成(已实现并有博文总结) │ └── 模块名称:spring-boot-demo模块 //Spring Boot快速构建应用(已实现并有博文总结) │ └── 模块名称:spring-cloud-alibaba-nacos-demo模块 //Spring Cloud Alibaba Nacos集成(已实现并有博文总结) │ └── 模块名称:spring-cloud-alibaba-seata-demo模块 //Spring Cloud Alibaba Seata集成(已实现并有博文总结) │ └── 模块名称:spring-cloud-alibaba-sentinel-demo模块 //Spring Cloud Alibaba Sentinel集成(已实现并有博文总结) │ └── 模块名称:spring-cloud-gateway-demo模块 //Spring Cloud Gateway集成(已实现并有博文总结) │ └── 模块名称:spring-cloud-hystrix-demo模块 //Spring Cloud Hystrix集成(已实现并有博文总结) │ └── 模块名称:spring-cloud-open-feign-demo模块 //Spring Cloud Open Feign集成(已实现并有博文总结) │ └── 模块名称:spring-cloud-ribbon-demo模块 //Spring Cloud Ribbon集成(已实现并有博文总结) │ └── 模块名称:spring-cloud-security-oauth2-demo模块 //Spring Cloud Security Oauth2集成(已实现并有博文总结) │ └── 模块名称:spring-cloud-security-oauth2-sso-client-demo模块 //Spring Cloud Security Oauth2集成(已实现并有博文总结) │ └── 模块名称:spring-cloud-skywalking-demo模块 //Spring Cloud Skywalking集成(已实现并有博文总结) │ └── 模块名称:spring-cloud-stream-demo模块 //Spring Cloud Stream集成(已实现并有博文总结) │ └── 模块名称:swagger-demo模块 //springfox-swagger2集成(已实现并有博文总结) │ └── 模块名称:xxl-job模块 //xxl-job集成(已实现并有博文总结) │ └── 模块名称:apache-spark-demo模块 //Apache Spark集成 │ └── 模块名称:etl-hdfs-hive-hbase-demo模块 //ETL、HDFS、Hive、Hbase集成 │ └── 模块名称:ddd-mode-demo模块 //DDD领域设计 │ └── 模块名称:netty-demo模块 //Netty集成 │ └── 模块名称:vue-demo模块 //前端vue集成 ├── document // 文档 │ └── JavaKnowledgeDocument //java知识点 │ └── java基础知识点.md │ └── mq知识点.md │ └── mysql知识点.md │ └── redis知识点.md │ └── springcould知识点.md │ └── spring知识点.md │ └── FounderDocument //创始人 │ └── 创始人.md
系列文章:快速集成各种微服务相关的技术,帮助大家可以快速集成到自己的项目中,节约开发时间。
提示:系列文章还未全部完成,后续的文章,会慢慢补充进去的。
文章目录
创建apache-mybatis-demo项目
修改pom.xml
修改application.properties
修改ApacheMybatisDemoApplication
创建DictMapper.xml
创建DictMapper
创建Dict
创建MyBatisTestController
校验Apache Mybatis是否正常工作
启动项目
访问服务接口http://localhost:8092/getDictAll
访问服务接口http://localhost:8092/getDictByDictId?DictId=0
创建apache-mybatis-demo项目
项目代码:https://gitee.com/java_wxid/java_wxid/tree/master/demo/apache-mybatis-demo
项目结构如下(示例):
修改pom.xml
代码如下(示例):
<?xml version="1.0" encoding="UTF-8"?> <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <groupId>com.example</groupId> <artifactId>apache-mybatis-demo</artifactId> <version>0.0.1-SNAPSHOT</version> <name>apache-mybatis-demo</name> <description>Demo project for Spring Boot</description> <build> <plugins> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-compiler-plugin</artifactId> <configuration> <source>8</source> <target>8</target> </configuration> </plugin> </plugins> </build> <dependencyManagement> <dependencies> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-dependencies</artifactId> <version>2.3.1.RELEASE</version> <type>pom</type> <scope>import</scope> </dependency> </dependencies> </dependencyManagement> <dependencies> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter</artifactId> <version>2.4.5</version> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-test</artifactId> <version>2.4.1</version> </dependency> <dependency> <groupId>com.alibaba</groupId> <artifactId>druid</artifactId> <version>1.1.23</version> </dependency> <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> <version>8.0.22</version> </dependency> <dependency> <groupId>com.baomidou</groupId> <artifactId>mybatis-plus-boot-starter</artifactId> <version>3.3.2</version> </dependency> </dependencies> </project>
修改application.properties
代码如下(示例):
server.port=8092 #mysql数据库 spring.datasource.url= jdbc:mysql://139.224.137.74:3306/syncdemo?characterEncoding=UTF-8&allowMultiQueries=true&serverTimezone=GMT%2B8 spring.datasource.username= root spring.datasource.password= ca0a997ee4770063 spring.datasource.driver-class-name=com.mysql.jdbc.Driver #mybatis #开启驼峰 mybatis.configuration.map-underscore-to-camel-case=true #打印日志 mybatis.configuration.log-impl=org.apache.ibatis.logging.stdout.StdOutImpl #mybatis-plus配置 mybatis-plus.mapper-locations=classpath*:/mapper/*.xml #主键类型 0:"数据库ID自增", 1:"用户输入ID",2:"全局唯一ID (数字类型唯一ID)", 3:"全局唯一ID UUID"; mybatis-plus.global-config.id-type=0 #字段策略 0:"忽略判断",1:"非 NULL 判断"),2:"非空判断" mybatis-plus.global-config.field-strategy= 1 #驼峰下划线转换 mybatis-plus.global-config.db-column-underline=true
修改ApacheMybatisDemoApplication
代码如下(示例):
package com.example.apachemybatisdemo; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; import org.mybatis.spring.annotation.MapperScan; @MapperScan("com.example.apachemybatisdemo.mapper") @SpringBootApplication public class ApacheMybatisDemoApplication { public static void main(String[] args) { SpringApplication.run(ApacheMybatisDemoApplication.class, args); } }
创建DictMapper.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.example.apachemybatisdemo.mapper.DictMapper" > <resultMap id="BaseResultMap" type="com.example.apachemybatisdemo.entity.Dict" > <id column="dict_id" property="dictId" jdbcType="INTEGER" /> <result column="ustatus" property="ustatus" jdbcType="VARCHAR" /> <result column="uvalue" property="uvalue" jdbcType="VARCHAR" /> </resultMap> <!-- 用于select查询公用抽取的列 --> <sql id="Base_Column_List"> t.dict_id,t.ustatus,t.uvalue </sql> <!-- 查询数据 --> <select id="getDictByDictId" resultType="com.example.apachemybatisdemo.entity.Dict"> select <include refid="Base_Column_List" /> from t_dict t where t.dict_id = #{dictId} </select> </mapper>
创建DictMapper
代码如下(示例):
package com.example.apachemybatisdemo.mapper; import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.example.apachemybatisdemo.entity.Dict; import org.apache.ibatis.annotations.Param; /** * @Author: liaozhiwei * @Description: TODO * @Date: Created in 21:16 2022/9/2 */ public interface DictMapper extends BaseMapper<Dict> { Dict getDictByDictId(@Param("dictId") String dictId); }
创建Dict
代码如下(示例):
package com.example.apachemybatisdemo.entity; import com.baomidou.mybatisplus.annotation.IdType; import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableName; /** * @Author: liaozhiwei * @Description: TODO * @Date: Created in 21:16 2022/9/2 */ @TableName("t_dict") public class Dict { @TableId(value = "dict_id",type = IdType.AUTO) private Long dictId; private String ustatus; private String uvalue; public Long getDictId() { return dictId; } public void setDictId(Long dictId) { this.dictId = dictId; } public String getUstatus() { return ustatus; } public void setUstatus(String ustatus) { this.ustatus = ustatus; } public String getUvalue() { return uvalue; } public void setUvalue(String uvalue) { this.uvalue = uvalue; } @Override public String toString() { return "Dict{" + "dictId=" + dictId + ", ustatus='" + ustatus + '\'' + ", uvalue='" + uvalue + '\'' + '}'; } }
创建MyBatisTestController
代码如下(示例):
package com.example.apachemybatisdemo.controller; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.example.apachemybatisdemo.entity.Dict; import com.example.apachemybatisdemo.mapper.DictMapper; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.RestController; import java.util.List; /** * @author zhiweiLiao<zhiwei.liao @ sgs.com> * @Description 这里我直接在controller层直接拿数据返回了,没有再参加service层,实战开发不要像我这样写 * @Date create in 2022/9/11 0011 20:32 */ @RestController public class MyBatisTestController { @Autowired private DictMapper dictMapper; /** * 使用通用方法获取所有字典数据 * @return */ @GetMapping("/getDictAll") public List<Dict> getDictAll(){ return dictMapper.selectList(new LambdaQueryWrapper<Dict>().eq(Dict::getUstatus,1)); } /** * 使用XML方式根据字典id获取字典数据 * @return */ @GetMapping("/getDictByDictId") public Dict getDictByDictId(String DictId){ return dictMapper.getDictByDictId(DictId); } }
校验Apache Mybatis是否正常工作
启动项目
如下图(示例):
访问服务接口http://localhost:8092/getDictAll
如下图(示例):
访问服务接口http://localhost:8092/getDictByDictId?DictId=0
如下图(示例):
Apache Mybatis可以正常工作