Spring_boot_dubbo

springboot_jdbctemplat

包结构
在这里插入图片描述
poc.xml依赖

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-jdbc</artifactId>
        </dependency>
        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <version>5.1.38</version>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>

编写实体,封装+带参+无参,快捷键alt+insert

public class Dog {

    private int dogid;
    private String dogname;
    private String kind;
    private int age;
    private int sex;
}

DogDao 接口


import com.zzc.entity.Dog;
import java.util.List;

public interface DogDao {
    public int insertGrade(String dogname);
    public int updateGrade(Dog dog);
    public int deleteGrade(Integer dogid);
    public List<Dog> findAll();
}

DogDaoImpl实现DogDao接口
@Repository作用:只能标注在 DAO 类上呢?这是因为该注解的作用不只是将类识别为Bean,同时它还能将所标注的类中抛出的数据访问异常封装为 Spring 的数据访问异常类型。 Spring本身提供了一个丰富的并且是与具体的数据访问技术无关的数据访问异常结构,用于封装不同的持久层框架抛出的异常,使得异常独立于底层的框架。

@Resource和@Autowired都可以作为注入属性的修饰,在接口仅有单一实现类时,两个注解的修饰效果相同,可以互相替换,不影响使用。


@Repository
public class DogDaoImpl implements DogDao {
    //导入JDBCTemplate模板
    @Resource
    private JdbcTemplate jdbcTemplate;

    @Override
    public int insertGrade(String dogname) {
        return jdbcTemplate.update("INSERT INTO dog(dogname) VALUES(?)",dogname);
    }

    @Override
    public int updateGrade(Dog dog) {
        return jdbcTemplate.update("UPDATE dog SET dogname=? WHERE dogid=?",dog.getDogname(),dog.getDogid());
    }

    @Override
    public int deleteGrade(Integer dogid) {
        return jdbcTemplate.update("DELETE FROM dog WHERE dogid=?",dogid);
    }

    @Override
    public List<Dog> findAll() {
        //封装行数据映射

        RowMapper<Dog> rowMapper=new RowMapper<Dog>() {
            @Override
            public Dog mapRow(ResultSet rs, int i) throws SQLException {
                Dog dog=new Dog(rs.getInt("dogid"),rs.getString("dogname"));
                return dog;
            }
        };
        return jdbcTemplate.query("select * from dog",rowMapper);
    }
}

DogService


import com.zzc.entity.Dog;
import java.util.List;

public interface DogService {
    public int insertGrade(String dogname);
    public int updateGrade(Dog dog);
    public int deleteGrade(Integer dogid);
    public List<Dog> findAll();
}

DogServiceImpl

Service注解简单可以了解为标识service

import com.zzc.dao.DogDao;
import com.zzc.entity.Dog;
import com.zzc.service.DogService;
import org.springframework.stereotype.Service;

import javax.annotation.Resource;
import java.util.List;

@Service("dogService")
public class DogServiceImpl implements DogService {
    @Resource
    private DogDao dogDao;
    @Override
    public int insertGrade(String dogname) {
        return dogDao.insertGrade(dogname);
    }

    @Override
    public int updateGrade(Dog dog) {
        return dogDao.updateGrade(dog);
    }

    @Override
    public int deleteGrade(Integer dogid) {
        return dogDao.deleteGrade(dogid);
    }

    @Override
    public List<Dog> findAll() {
        return dogDao.findAll();
    }
}

application.yml

spring:
  datasource:
    driver-class-name: com.mysql.jdbc.Driver
    #mysql数据库名
    url: jdbc:mysql:///dog
    #数据库账号密码
    username: root
    password: root

JspRequestBootjsp

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.boot.autoconfigure.jdbc.DataSourceAutoConfiguration;

@SpringBootApplication
public class JspRequestBootjsp {
    public static void main(String[] args) {
        SpringApplication.run(JspRequestBootjsp.class, args);
    }
}

ThymeleafControllers

import com.zzc.entity.Dog;
import com.zzc.service.DogService;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

import javax.annotation.Resource;
import java.util.List;

@RestController
public class ThymeleafControllers {
    @Resource
    private DogService dogService;

    @RequestMapping("/insertGrade")
    public int insertGrade(){
        return dogService.insertGrade("hahahah");
    }
    @RequestMapping("/updateGrade")
    public int updateGrade(){
        return  dogService.updateGrade(new Dog(1,"S2"));
    }
    @RequestMapping("/deleteGrade")
    public int deleteGrade(){
        return dogService.deleteGrade(2);
    }
    @RequestMapping("/findAll")
    public List<Dog> findAll(){
        return dogService.findAll();
    }
}

运行结果
在这里插入图片描述
其他结果都一样在http://localhost:8080/后输入@RequestMapping括号里的地址就行拉

dubbo_admin

包结构
在这里插入图片描述
编写实体,封装+带参+无参,快捷键alt+insert

public class Dog {

    private int dogid;
    private String dogname;
    private String kind;
    private int age;
    private int sex;
}

创建dog实体

import com.zzc.entity.Dog;
import java.util.List;

public interface DogDao {
    public int insertGrade(String dogname);
    public int updateGrade(Dog dog);
    public int deleteGrade(Integer dogid);
    public List<Dog> findAll();
}

DogService接口


import java.util.List;

public interface DogService {
    public int insertGrade(String dogname);
    public int updateGrade(Dog dog);
    public int deleteGrade(Integer dogid);
    public List<Dog> findAll();
}

DogServiceImpl实现类

import org.springframework.stereotype.Service;
import javax.annotation.Resource;
import java.util.List;
//表示service
@Service("dogService")
public class DogServiceImpl implements DogService {
    @Resource
    private DogDao dogDao;
    @Override
    public int insertGrade(String dogname) {
        return dogDao.insertGrade(dogname);
    }

    @Override
    public int updateGrade(Dog dog) {
        return dogDao.updateGrade(dog);
    }

    @Override
    public int deleteGrade(Integer dogid) {
        return dogDao.deleteGrade(dogid);
    }

    @Override
    public List<Dog> findAll() {
        return dogDao.findAll();
    }
}

StartSpringBoot
@MapperScan可以指定要扫描的Mapper类的包的路径,如:@MapperScan(“com.zzc.dao”),同级下就不需要指定

import org.mybatis.spring.annotation.MapperScan;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;

@SpringBootApplication
@MapperScan("com.zzc.dao")
public class StartSpringBoot {
    public static void main(String[] args) {
        SpringApplication.run(StartSpringBoot.class,args);
    }
}

application.yml

##数据源配置
spring:
  datasource:
    driver-class-name: com.mysql.jdbc.Driver
    #数据库名
    url: jdbc:mysql:///dog
    #数据库账号密码
    username: root
    password: root
##myabtis配置
mybatis:
  #指定实体类
  type-aliases-package: com.zzc.entity
  #sql路径
  mapper-locations: classpath:/mapper/*.xml
##开启日志
logging:
  level:
    com.boot.dao: debug

DogDao.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" >
<!--dao路径-->
<mapper namespace="com.zzc.dao.DogDao" >
    <!--添加数据-->
  <insert id="insertGrade">
        INSERT INTO dog(dogname) VALUES(${dogname})
  </insert>
    <!--删除-->
    <delete id="deleteGrade">
        DELETE FROM dog WHERE dogid=${dogid}
    </delete>
    <!--查询-->
    <select id="findAll" resultType="com.zzc.entity.Dog">
        select * from dog
    </select>
</mapper>

ThymeleafControllers

import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

import javax.annotation.Resource;
import java.util.List;

@RestController
public class ThymeleafControllers {
    @Resource
    private DogService dogService;

    @RequestMapping("/insertGrade")
    public int insertGrade(){
        return dogService.insertGrade("111");
    }
    @RequestMapping("/updateGrade")
    public int updateGrade(){
        return  dogService.updateGrade(new Dog(1,"S2"));
    }
    @RequestMapping("/deleteGrade")
    public int deleteGrade(){
        return dogService.deleteGrade(2);
    }
    @RequestMapping("/findAll")
    public List<Dog> findAll(){
        return dogService.findAll();
    }
}

运行结果

在这里插入图片描述
其他结果都一样在http://localhost:8080/后输入@RequestMapping括号里的地址就行拉

springboot_dubbo_consumer生产者springboot_dubbo_provider消费者

生产者包结构
在这里插入图片描述
依赖

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter</artifactId>
            <!-- 去除对默认日志的依赖 -->
            <exclusions>
                <exclusion>
                    <groupId>org.springframework.boot</groupId>
                    <artifactId>spring-boot-starter-logging</artifactId>
                </exclusion>
            </exclusions>
        </dependency>

DubboController

//切记到得包是import com.alibaba.dubbo.config.annotation.Reference;
import com.alibaba.dubbo.config.annotation.Reference;
import com.zzc.service.IDoSomeService;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

@RestController
public class DubboController {
    @Reference
    private IDoSomeService iDoSomeService;

    @RequestMapping("/dubbo")
    public String dubbo(){
        String returnValue = iDoSomeService.sayHi();
        return returnValue;
    }
}

接口

public interface IDoSomeService {
    public String sayHi();
}

DubboConsumer启动类

import com.alibaba.dubbo.spring.boot.annotation.EnableDubboConfiguration;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;

@SpringBootApplication
@EnableDubboConfiguration
public class DubboConsumer {
    public static void main(String[] args) {
        SpringApplication.run(DubboConsumer.class,args);
    }
}

application.properties

spring.dubbo.application.name=consumer
spring.dubbo.registry.address=zookeeper://127.0.0.1:2181
server.port=8081
spring.datasource.driver-class-name=com.mysql.jdbc.Driver
spring.datasource.url=jdbc:mysql:///dog
spring.datasource.username=root
spring.datasource.password=root

消费这包结构
在这里插入图片描述
依赖

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-jdbc</artifactId>
        </dependency>
        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <version>5.1.32</version>
        </dependency>

        <!--zookeeper-->
        <dependency>
            <groupId>com.101tec</groupId>
            <artifactId>zkclient</artifactId>
            <version>0.10</version>
        </dependency>
        <!--dubbo-->
        <dependency>
            <groupId>com.alibaba.spring.boot</groupId>
            <artifactId>dubbo-spring-boot-starter</artifactId>
            <version>2.0.0</version>
        </dependency>

```java
在这里插入代码片

接口IDoSomeService 

```java
public interface IDoSomeService {
    public String sayHi();
}

IDoSomeServiceImpl

import com.alibaba.dubbo.config.annotation.Service;
import com.zzc.service.IDoSomeService;
import org.springframework.stereotype.Component;

//利用Dubbo暴露出一个接口
@Service(interfaceClass=IDoSomeService.class)
@Component
public class IDoSomeServiceImpl implements IDoSomeService {
    @Override
    public String sayHi() {
        System.out.println("生产者生产的IDoSomeService服务,中的sayHi方法");
        return "SpringBoot Dubbo";
    }
}

DubboProvider

import com.alibaba.dubbo.spring.boot.annotation.EnableDubboConfiguration;
import org.springframework.boot.SpringApplication;

import org.springframework.boot.autoconfigure.SpringBootApplication;

@SpringBootApplication
@EnableDubboConfiguration
public class DubboProvider {
    public static void main(String[] args) {
        SpringApplication.run(DubboProvider.class,args);
        System.out.println("Dubbo接口暴露成功~");
    }
}

application.properties

spring.dubbo.application.name=provider
spring.dubbo.registry.address=zookeeper://127.0.0.1:2181
spring.dubbo.protocol.name=dubbo
spring.dubbo.protocol.port=20880


spring.datasource.driver-class-name=com.mysql.jdbc.Driver
spring.datasource.url=jdbc:mysql:///dog
spring.datasource.username=root
spring.datasource.password=root

运行zookeeper的状况service.cmd
在这里插入图片描述
先运行生产这在运行消费者
在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值