基于springBoot,,springCloud,mybatis 框架简单 微服开发 ==CRUD
基本结构:父类工程。common工具类。provider提供者。消费者consumer (一般映射地址报错)
1...父类工程:需要配置pom.xml文件。
手动指定pom <packaging>pom</packaging>,
1 <?xml version="1.0" encoding="UTF-8"?>
2 <project xmlns="http://maven.apache.org/POM/4.0.0"
3 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
4 xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
5 <modelVersion>4.0.0</modelVersion>
6
7 <groupId>com.wsc</groupId>
8 <artifactId>spring-cloud-parent</artifactId>
9 <version>1.0-SNAPSHOT</version>
10 <modules>
11 <module>../../common</module>
12 <module>../../provider</module>
13 <module>../../consumer</module>
14 </modules>
15 <!--手动指定pom-->
16 <packaging>pom</packaging>
17 <!--springboot版本 2.0.7-->
18 <parent>
19 <groupId>org.springframework.boot</groupId>
20 <artifactId>spring-boot-starter-parent</artifactId>
21 <version>2.0.7.RELEASE</version>
22 </parent>
23 <properties>
24 <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
25 <maven.compiler.source>1.8</maven.compiler.source>
26 <maven.compiler.target>1.8</maven.compiler.target>
27 <junit.version>4.12</junit.version>
28 <!--spring Cloud 最新的稳定版 Finchley SR2-->
29 <spring.cloud.version>Finchley.SR2</spring.cloud.version>
30 </properties>
31 <!--依赖声明-->
32 <dependencyManagement>
33 <dependencies>
34 <dependency>
35 <groupId>org.springframework.cloud</groupId>
36 <artifactId>spring-cloud-dependencies</artifactId>
37 <version>${spring.cloud.version}</version>
38 <!-- 不可或缺-->
39 <scope>import</scope>
40 <type>pom</type>
41 </dependency>
42 <dependency>
43 <groupId>org.mybatis.spring.boot</groupId>
44 <artifactId>mybatis-spring-boot-starter</artifactId>
45 <version>1.3.2</version>
46 </dependency>
47 <!--数据源-->
48 <dependency>
49 <groupId>com.alibaba</groupId>
50 <artifactId>druid</artifactId>
51 <version>1.1.12</version>
52 </dependency>
53 <!-- 数据库 8.0.13-->
54 <dependency>
55 <groupId>mysql</groupId>
56 <artifactId>mysql-connector-java</artifactId>
57 <version>8.0.13</version>
58 </dependency>
59 <!--测试单元-->
60 <dependency>
61 <groupId>junit</groupId>
62 <artifactId>junit</artifactId>
63 <version>${junit.version}</version>
64 <scope>test</scope>
65 </dependency>
66 </dependencies>
67 </dependencyManagement>
68 </project>
2.....common:
pom不需配置 引入父类即可,创建实体类pojo
1 package com.wsc.core.pojo;
2
3 /**
4 * @version 1.0
5 * @ClassName Product
6 * @Description TODO
7 * @Author WSC
8 * @Date 2019/8/26 14:53
9 **/
10 public class Product {
11 private Long pid;
12 private String productName;
13 private String dbSource;
14
15 public Product(String productName) {
16 this.productName = productName;
17 }
18
19 public Product(Long pid, String productName, String dbSource) {
20 this.pid = pid;
21 this.productName = productName;
22 this.dbSource = dbSource;
23 }
24 public Product() {
25 }
26
27 public Long getPid() {
28 return pid;
29 }
30
31 public void setPid(Long pid) {
32 this.pid = pid;
33 }
34
35 public String getProductName() {
36 return productName;
37 }
38
39 public void setProductName(String productName) {
40 this.productName = productName;
41 }
42
43 public String getDbSource() {
44 return dbSource;
45 }
46
47 public void setDbSource(String dbSource) {
48 this.dbSource = dbSource;
49 }
50 }
3.....provider :
1...pom.xml 依赖common
1 <?xml version="1.0" encoding="UTF-8"?>
2 <project xmlns="http://maven.apache.org/POM/4.0.0"
3 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
4 xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
5 <parent>
6 <artifactId>spring-cloud-parent</artifactId>
7 <groupId>com.wsc</groupId>
8 <version>1.0-SNAPSHOT</version>
9 <relativePath>../springCloud/spring-cloud-parent/pom.xml</relativePath>
10 </parent>
11 <modelVersion>4.0.0</modelVersion>
12
13 <artifactId>provider</artifactId>
14
15
16 <properties>
17 <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
18 <maven.compiler.source>1.8</maven.compiler.source>
19 <maven.compiler.target>1.8</maven.compiler.target>
20 </properties>
21 <dependencies>
22 <dependency>
23 <groupId>com.wsc</groupId>
24 <artifactId>common</artifactId>
25 <version>${project.version}</version>
26 </dependency>
27 <dependency>
28 <groupId>org.springframework.boot</groupId>
29 <artifactId>spring-boot-starter-web</artifactId>
30 </dependency>
31 <dependency>
32 <groupId>mysql</groupId>
33 <artifactId>mysql-connector-java</artifactId>
34 </dependency>
35 <dependency>
36 <groupId>org.mybatis.spring.boot</groupId>
37 <artifactId>mybatis-spring-boot-starter</artifactId>
38 </dependency>
39 <dependency>
40 <groupId>junit</groupId>
41 <artifactId>junit</artifactId>
42 </dependency>
43 <dependency>
44 <groupId>com.alibaba</groupId>
45 <artifactId>druid</artifactId>
46 </dependency>
47 <dependency>
48 <groupId>org.springframework.boot</groupId>
49 <artifactId>spring-boot-starter-test</artifactId>
50 </dependency>
51 </dependencies>
52 </project>
2...resources/mybatis/mybatis.cfg.xml 驼峰命名规则
1 <?xml version="1.0" encoding="UTF-8" ?> 2 <!DOCTYPE configuration 3 PUBLIC "-//mybatis.org//DTD Config 3.0//EN" 4 "http://mybatis.org/dtd/mybatis-3-config.dtd"> 5 <configuration> 6 <settings> 7 <!--开启驼峰命名--> 8 <setting name="mapUnderscoreToCamelCase" value="true"/> 9 </settings> 10 </configuration>
3....resources/mybatis/mapper/ProductMapper : SQL语句
1 <?xml version="1.0" encoding="UTF-8" ?>
2 <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
3 "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
4 <mapper namespace="com.wsc.core.mapper.ProductMapper">
5 <select id="findAll" resultType="Product">
6 select * from product;
7 </select>
8
9 <select id="findById" resultType="Product" parameterType="Long">
10 select * from product where pid=#{pid};
11 </select>
12
13 <insert id="add" parameterType="Product" >
14 insert into product values (null,#{product_name},#{db_source});
15 </insert>
16 </mapper>
resources/application.xml 配置端口号 ,mybatis下的包的扫描 ,数据库的连接及数量 配置
1 server: 2 port: 8001 3 mybatis: 4 config-location: classpath:mybatis/mybatis.cfg.xml #mybatis 配置文件路径 5 type-aliases-package: com.wsc.core.pojo # entity别名类所在包 6 mapper-locations: mybatis/mapper/*.xml # mapper映射文件 7 spring: 8 application: 9 name: microserver-product #这个很重要,这在以后的服务与服务之间相互调用一般都是根据这个name 10 datasource: 11 type: com.alibaba.druid.pool.DruidDataSource 12 driver-class-name: com.mysql.cj.jdbc.Driver 13 url: jdbc:mysql://127.0.0.1:3306/springcloud_db01?serverTimezone=GMT%2B8 14 password: wsc 15 username: root 16 dbcp2: 17 min-idle: 5 # 数据库连接池的最小维持连接数 18 initial-size: 5 # 初始化连接数 19 max-total: 5 # 最大连接数 20 max-wait-millis: 150 # 等待连接获取的最大超时时间
4...mapper/ProductMapper 与mapper映射文件类名相同
1 package com.wsc.core.mapper;
2
3 import com.wsc.core.pojo.Product;
4
5 import java.util.List;
6
7 public interface ProductMapper {
8 //查询全部
9 public List<Product> findAll();
10 //id查询
11 public Product findById(Long id);
12 //插入数据
13 public Boolean add(Product product);
14 }
5...service 接口
1 package com.wsc.core.service;
2
3 import com.wsc.core.pojo.Product;
4
5 import java.util.List;
6
7 public interface ProductService {
8 public List<Product> findAll();
9
10 public Product findById(Long id);
11
12 public Boolean add(Product product);
13 }
6...impl/ProductServiceImpl 注入 ProductMapper
1 package com.wsc.core.service.impl;
2
3 import com.wsc.core.mapper.ProductMapper;
4 import com.wsc.core.pojo.Product;
5 import com.wsc.core.service.ProductService;
6 import org.springframework.beans.factory.annotation.Autowired;
7 import org.springframework.stereotype.Service;
8
9 import java.util.List;
10
11 /**
12 * @version 1.0
13 * @ClassName ProductServiceImpl
14 * @Description TODO
15 * @Author WSC
16 * @Date 2019/8/27 10:53
17 **/
18 @Service
19 public class ProductServiceImpl implements ProductService {
20 @Autowired
21 private ProductMapper productMapper;
22 @Override
23 public List<Product> findAll() {
24 return productMapper.findAll();
25 }
26
27 @Override
28 public Product findById(Long id) {
29 return productMapper.findById(id);
30 }
31
32 @Override
33 public Boolean add(Product product) {
34 return productMapper.add(product);
35 }
36 }
7...controller/ProductController 写入访问地址
1 package com.wsc.core.controller;
2
3 import com.wsc.core.pojo.Product;
4 import com.wsc.core.service.ProductService;
5 import org.springframework.beans.factory.annotation.Autowired;
6 import org.springframework.web.bind.annotation.*;
7
8 import java.util.List;
9
10 /**
11 * @version 1.0
12 * @ClassName ProductController
13 * @Description TODO
14 * @Author WSC
15 * @Date 2019/8/27 11:06
16 **/
17 @RestController //返回json数据
18 public class ProductController {
19 @Autowired
20 private ProductService productService;
21 //查询全部
22 @RequestMapping(value ="/product/get/list",method = RequestMethod.GET)
23 public List<Product> getAll(){
24 return productService.findAll();
25 }
26
27 //查询id
28 @RequestMapping(value = "/product/get/{pid}",method = RequestMethod.GET)
29 public Product getById(@PathVariable("pid")Long pid){
30 return productService.findById(pid);
31 }
32
33 //添加
34 @RequestMapping(value ="/product/get/add",method = RequestMethod.POST)
35 public boolean add(@RequestBody Product product){
36 return productService.add(product);
37 }
38 }
8...start启动类
1 package com.wsc.core;
2
3 import org.mybatis.spring.annotation.MapperScan;
4 import org.springframework.boot.SpringApplication;
5 import org.springframework.boot.autoconfigure.SpringBootApplication;
6 import org.springframework.boot.autoconfigure.jdbc.DataSourceAutoConfiguration;
7
8 /**
9 * @version 1.0
10 * @ClassName Start
11 * @Description TODO
12 * @Author WSC
13 * @Date 2019/8/27 10:54
14 **/
15
16 @MapperScan("com.wsc.core.mapper") //mapper扫描包 类 ProductMapper
17 @SpringBootApplication(exclude = {DataSourceAutoConfiguration.class}) //数据库设置访问 可以不加 exclude
18 public class Start {
19 public static void main(String[] args) {
20 SpringApplication.run(Start.class,args);
21 }
22 }
4.....consumer
1...pom.xml
1 <?xml version="1.0" encoding="UTF-8"?>
2 <project xmlns="http://maven.apache.org/POM/4.0.0"
3 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
4 xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
5 <parent>
6 <artifactId>spring-cloud-parent</artifactId>
7 <groupId>com.wsc</groupId>
8 <version>1.0-SNAPSHOT</version>
9 <relativePath>../springCloud/spring-cloud-parent/pom.xml</relativePath>
10 </parent>
11 <modelVersion>4.0.0</modelVersion>
12
13 <artifactId>consumer</artifactId>
14
15
16 <properties>
17 <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
18 <maven.compiler.source>1.8</maven.compiler.source>
19 <maven.compiler.target>1.8</maven.compiler.target>
20 </properties>
21 <dependencies>
22 <dependency>
23 <groupId>com.wsc</groupId>
24 <artifactId>common</artifactId>
25 <version>${project.version}</version>
26 </dependency>
27 <!--springboot web启动器-->
28 <dependency>
29 <groupId>org.springframework.boot</groupId>
30 <artifactId>spring-boot-starter-web</artifactId>
31 </dependency>
32
33 </dependencies>
34 </project>
2...resources/application.xml 配置端口号
1 server: 2 port: 800
3....ConfigBean 向容器中添加RestTemplate 组件 直接该组件调用EREST接口
1 package com.wsc.core.config;
2
3 import org.springframework.context.annotation.Bean;
4 import org.springframework.context.annotation.Configuration;
5 import org.springframework.web.client.RestTemplate;
6
7 /**
8 * @version 1.0
9 * @ClassName ConfigBean
10 * @Description TODO
11 * @Author WSC
12 * @Date 2019/8/27 14:32
13 **/
14 @Configuration
15 public class ConfigBean {
16 // 向容器中添加RestTemplate 组件 直接该组件调用EREST接口
17 @Bean
18 public RestTemplate getRestTemplate(){
19 return new RestTemplate();
20 }
21 }
4....ConfigBeanController 访问地址
1 package com.wsc.core.controller;
2
3 import com.wsc.core.pojo.Product;
4 import org.springframework.beans.factory.annotation.Autowired;
5 import org.springframework.web.bind.annotation.PathVariable;
6 import org.springframework.web.bind.annotation.RequestBody;
7 import org.springframework.web.bind.annotation.RequestMapping;
8 import org.springframework.web.bind.annotation.RestController;
9 import org.springframework.web.client.RestTemplate;
10
11 import java.util.List;
12
13 /**
14 * @version 1.0
15 * @ClassName ConfigBeanController
16 * @Description TODO
17 * @Author WSC
18 * @Date 2019/8/27 14:33
19 **/
20 @RestController
21 public class ConfigBeanController {
22 //provider的访问 端口
23 private static final String REST_URL_PREFIX="http://localhost:8001";
24 @Autowired
25 private RestTemplate restTemplate;
26 @RequestMapping("/consumer/get/add")
27 public boolean add(@RequestBody Product product){
28 return restTemplate.postForObject(REST_URL_PREFIX+"/product/get/add",product,boolean.class);
29 }
30
31 @RequestMapping("/consumer/get/findAll")
32 public List<Product> getAll(){
33 return restTemplate.getForObject(REST_URL_PREFIX+"/product/get/list",List.class);
34 }
35
36 @RequestMapping("/consumer/getById/{pid}")
37 public Product getById(@PathVariable("pid") Long pid){
38 return restTemplate.getForObject(REST_URL_PREFIX+"/product/get/"+pid,Product.class);
39 }
40 }
5....启动类
1 package com.wsc.core;
2
3 import org.springframework.boot.SpringApplication;
4 import org.springframework.boot.autoconfigure.SpringBootApplication;
5
6 /**
7 * @version 1.0
8 * @ClassName Start_80
9 * @Description TODO
10 * @Author WSC
11 * @Date 2019/8/27 14:31
12 **/
13 @SpringBootApplication
14 public class Start_80 {
15 public static void main(String[] args) {
16 SpringApplication.run(Start_80.class,args);
17 }
18 }
package com.wsc.core;
import org.mybatis.spring.annotation.MapperScan;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.boot.autoconfigure.jdbc.DataSourceAutoConfiguration;
/**
* @version 1.0
* @ClassName Start
* @Description TODO
* @Author WSC
* @Date 2019/8/27 10:54
**/
@MapperScan("com.wsc.core.mapper") //mapper扫描包 类 ProductMapper
@SpringBootApplication(exclude = {DataSourceAutoConfiguration.class}) //数据库设置访问 可以不加 exclude
public class Start {
public static void main(String[] args) {
SpringApplication.run(Start.class,args);
}
}
注: @SpringBootApplication(exclude = {DataSourceAutoConfiguration.class}) //这段要删掉
package com.wsc.core;
import org.mybatis.spring.annotation.MapperScan;import org.springframework.boot.SpringApplication;import org.springframework.boot.autoconfigure.SpringBootApplication;import org.springframework.boot.autoconfigure.jdbc.DataSourceAutoConfiguration;
/** * @version 1.0 * @ClassName Start * @Description TODO * @Author WSC * @Date 2019/8/27 10:54 **/
@MapperScan("com.wsc.core.mapper") //mapper扫描包 类 ProductMapper@SpringBootApplication(exclude = {DataSourceAutoConfiguration.class}) //数据库设置访问 可以不加 excludepublic class Start { public static void main(String[] args) { SpringApplication.run(Start.class,args); }}

浙公网安备 33010602011771号