SpringBoot3(springboot_jdbctemplate以及MyBatis和Dubbo整合)

Posted 婷好

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了SpringBoot3(springboot_jdbctemplate以及MyBatis和Dubbo整合)相关的知识,希望对你有一定的参考价值。

一、JDBCTemplate

  1、导入依赖

     <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-jdbc</artifactId>
        </dependency>

        <!-- https://mvnrepository.com/artifact/mysql/mysql-connector-java -->
        <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>
    </dependencies>

  2、配置application文件

    

 

   3、创建启动类

package com.boot;


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

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

  4、创建实体层

package com.boot.entity;
public class Grade {

    private Integer gradeId;
    private String gradeName;

    public Grade() {

    }

    public Grade(String gradeName) {
        this.gradeName = gradeName;
    }

    public Grade(Integer gradeId, String gradeName) {
        this.gradeId = gradeId;
        this.gradeName = gradeName;
    }

    public Integer getGradeId() {
        return gradeId;
    }

    public void setGradeId(Integer gradeId) {
        this.gradeId = gradeId;
    }

    public String getGradeName() {
        return gradeName;
    }

    public void setGradeName(String gradeName) {
        this.gradeName = gradeName;
    }
}

  5、创建Dao层

package com.boot.dao;

import com.boot.entity.Grade;

import java.util.List;

public interface IGradeDao {
    public int insertGrade(Grade grade);
    public int updateGrade(Grade grade);
    public int deleteGrade(Integer id);
    public List<Grade> getAll();
}

  6、创建Dao层实现类

package com.boot.dao.impl;

import com.boot.dao.IGradeDao;
import com.boot.entity.Grade;
import org.springframework.jdbc.core.JdbcTemplate;
import org.springframework.jdbc.core.RowMapper;
import org.springframework.stereotype.Repository;

import javax.annotation.Resource;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.List;

@Repository
public class IGradeDaoImpl implements IGradeDao {

    //导入JDBCTemplate模板
    @Resource
    private JdbcTemplate jdbcTemplate;

    @Override
    public int insertGrade(Grade grade) {
        return jdbcTemplate.update("insert into Grade(GradeName) values (?)",grade.getGradeName());
    }

    @Override
    public int updateGrade(Grade grade) {
        return jdbcTemplate.update("update Grade set GradeName=? where GradeId=?",grade.getGradeName(),grade.getGradeId());
    }

    @Override
    public int deleteGrade(Integer id) {
        return jdbcTemplate.update("delete from Grade where GradeId=?",id);
    }

    @Override
    public List<Grade> getAll() {
        //fengxhaung封装行数据映射
        RowMapper<Grade> rowMapper=new RowMapper<Grade>() {
            @Override
            public Grade mapRow(ResultSet rs, int i) throws SQLException {
                Grade grade=new Grade(rs.getInt("GradeId"),rs.getString("GradeName"));
                return grade;
            }
        };
        return jdbcTemplate.query("select * from Grade",rowMapper);
    }
}

  7、创建Service层

package com.boot.service;

import com.boot.entity.Grade;

import java.util.List;

public interface IGradeService {
    public int insertGrade(Grade grade);
    public int updateGrade(Grade grade);
    public int deleteGrade(Integer id);
    public List<Grade> getAll();
}

  8、创建Service实现类

package com.boot.service.impl;

import com.boot.dao.IGradeDao;
import com.boot.entity.Grade;
import com.boot.service.IGradeService;
import org.springframework.stereotype.Service;

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

@Service("iGradeService")
public class IGradeServiceImpl implements IGradeService {
    @Resource
    //植入Dao层对象
    private IGradeDao iGradeDao;

    @Override
    public int insertGrade(Grade grade) {
        return iGradeDao.insertGrade(grade);
    }

    @Override
    public int updateGrade(Grade grade) {
        return iGradeDao.updateGrade(grade);
    }

    @Override
    public int deleteGrade(Integer id) {
        return iGradeDao.deleteGrade(id);
    }

    @Override
    public List<Grade> getAll() {
        return iGradeDao.getAll();
    }
}

  9、创建Controller层

package com.boot.controller;

import com.boot.entity.Grade;
import com.boot.service.IGradeService;
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 IGradeController {
    //导入Service层
    @Resource
    private IGradeService iGradeService;

    @RequestMapping("/insertGrade")
    public int insertGrade(Grade grade){
        return iGradeService.insertGrade(new Grade("S1"));
    }

    @RequestMapping("/updateGrade")
    public int updateGrade(Grade grade){
        return iGradeService.updateGrade(new Grade(2,"S1"));
    }

    @RequestMapping("/deleteGrade")
    public int deleteGrade(){
        return iGradeService.deleteGrade(6);
    }

    @RequestMapping("/getAll")
    public List<Grade> getAll(){
        return iGradeService.getAll();
    }
}

  10、实现效果如下

    

二、MyBatis整合

  1、导入依赖

<dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-jdbc</artifactId>
        </dependency>

        <!-- https://mvnrepository.com/artifact/mysql/mysql-connector-java -->
        <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>

        <dependency>
            <groupId>org.mybatis.spring.boot</groupId>
            <artifactId>mybatis-spring-boot-starter</artifactId>
            <version>1.1.1</version>
        </dependency>

  2、配置application文件

    

 

   3、创建entity层

package com.boot.entity;

import java.io.Serializable;

public class Grade implements Serializable {

private Integer gradeId;
private String gradeName;

public Grade() {

}

public Grade(String gradeName) {
this.gradeName = gradeName;
}

public Grade(Integer gradeId, String gradeName) {
this.gradeId = gradeId;
this.gradeName = gradeName;
}

public Integer getGradeId() {
return gradeId;
}

public void setGradeId(Integer gradeId) {
this.gradeId = gradeId;
}

public String getGradeName() {
return gradeName;
}

public void setGradeName(String gradeName) {
this.gradeName = gradeName;
}
}

  4、创建Dao层

package com.boot.dao;

import com.boot.entity.Grade;
import org.springframework.stereotype.Repository;

import java.util.List;

@Repository
public interface IGradeDao {
    public int insertGrade(Grade grade);

    public int updateGrade(Grade grade);

    public int deleteGrade(Integer id);

    public List<Grade> findAll();
}

  5、创建Dao层小配置文件(在resources目录下创建mapper目录)

    

<?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.boot.dao.IGradeDao" >
    <insert id="insertGrade">
        insert into Grade(GradeName) values(#{gradeName})
    </insert>

    <insert id="updateGrade">
         update set GradeName=#{gradeName} from Grade where GradeId=#{gradeId}
    </insert>

    <insert id="deleteGrade">
        delete from Grade where GradeId=#{gradeId}
    </insert>

    <select id="findAll" resultType="com.boot.entity.Grade">
       select * from Grade
    </select>
</mapper>

  6、创建Service层

package com.boot.service;

import com.boot.entity.Grade;

import java.util.List;

public interface IGradeService {
    public int insertGrade(Grade grade);
    public int updateGrade(Grade grade);
    public int deleteGrade(Integer id);
    public List<Grade> findAll();
}

  7、创建Service实现层

package com.boot.service.impl;

import com.boot.dao.IGradeDao;
import com.boot.entity.Grade;
import com.boot.service.IGradeService;
import org.springframework.stereotype.Service;

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

@Service("iGradeService")
public class IGradeServiceImpl implements IGradeService {

    @Resource
    private IGradeDao iGradeDao;

    @Override
    public int insertGrade(Grade grade) {
        return iGradeDao.insertGrade(grade);
    }

    @Override
    public int updateGrade(Grade grade) {
        return iGradeDao.updateGrade(grade);
    }

    @Override
    public int deleteGrade(Integer id) {
        return iGradeDao.deleteGrade(id);
    }

    @Override
    public List<Grade> findAll() {
        return iGradeDao.findAll();
    }
}

  8、创建Controller层

package com.boot.controller;


import com.boot.entity.Grade;
import com.boot.service.IGradeService;
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 MybatisController {

    @Resource(name = "iGradeService")
    private IGradeService iGradeService;

    @RequestMapping("/insertGrade")
    public int insertGrade(){
        return iGradeService.insertGrade(new Grade("S1"));
    }

    @RequestMapping("/updateGrade")
    public int updateGrade(){
        return  iGradeService.updateGrade(new Grade(10012,"S2"));
    }

    @RequestMapping("/deleteGrade")
    public int deleteGrade(){
        return iGradeService.deleteGrade(10012);
    }

    @RequestMapping("/findAll")
    public List<Grade> findAll(){
        return iGradeService.findAll();
    }
}

  9、实现效果如下

    

 三、Dubbo整合

  1、导入依赖

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

    <!--MySQL-->
    <dependency>
      <groupId>mysql</groupId>
      <artifactId>mysql-connector-java</artifactId>
      <version>5.1.38</version>
    </dependency>

  2、创建消费者springboot-dubbo-consumer

    (1)配置application文件

      

    (2)创建启动类

package com.boot;

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);
    }
}

    (3)创建Service层

package com.boot.service;

public interface IDoSomeService {
    public String sayHi();
}

    (4)创建Controller层

package com.boot.controller;

import com.boot.service.IDoSomeService;
import jdk.nashorn.internal.ir.annotations.Reference;
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;
    }
}

  3、创建生产者springboot-dubbo-provider

    (1)配置文件

        

 

     (2)创建DubboProvider层

package com.boot.com.boot.service;

import org.springframework.boot.SpringApplication;

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

    (3)创建IDoSomeService层

package com.boot.com.boot.service;

public interface IDoSomeService {
    public String sayHi();
}

    (4)创建IDoSomeService实现层

package com.boot.com.boot.service.impl;

import com.alibaba.dubbo.config.annotation.Service;
import com.boot.com.boot.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";
    }
}

  4、实现效果如下

    

以上是关于SpringBoot3(springboot_jdbctemplate以及MyBatis和Dubbo整合)的主要内容,如果未能解决你的问题,请参考以下文章

springboot3+r2dbc——响应式编程实践

springboot3+r2dbc——响应式编程实践

SpringBoot3整合MyBatis报错:Property ‘sqlSessionFactory‘ or ‘sqlSessionTemplate‘ are required

还在用 OpenFeign?来试试 SpringBoot3 中的这个新玩意!

SpringBoot3.0源码启动流程源码解析 • 上

SpringBoot3.0源码启动流程源码解析 •下