zoukankan      html  css  js  c++  java
  • springboot 快速搭建 restcontroller

    碰到的坑,

    一个是 service(若没有实现类)不能实现dao接口,否则报错。直接注入就好。若实现了dao接口,会包内存溢出错误,将进行无限循环。

    二是,在启动类上,需要加入扫描mapper的package名称,否则报 mapper里面的bean没有实例化。

    在controller里,映射文件,不需要加“/”斜杠,只需要加名称即可。

    需要注意的是,在application文件中,需要指定mapper的xml的位置。否则也报错。

    @SpringBootApplication
    @MapperScan(basePackages = {"cn.taotao.dao"})       //需要指定!!
    public class TransactionalTestApplication {
    
        public static void main(String[] args) {
            SpringApplication.run(TransactionalTestApplication.class, args);
        }
    
    }

    在pom中必须引入web的starter,即使是json的restcontroller,也必须引入web starter

    其他的都和之前一篇一样。参阅:

    springboot的事务管理的一个完整demo

    这个的代码如下:

    UserService 

    package cn.taotao.service;
    
    import java.util.List;
    
    import org.springframework.beans.factory.annotation.Autowired;
    import org.springframework.stereotype.Service;
    
    import cn.taotao.bean.User;
    import cn.taotao.dao.UserMapper;
    
    @Service
    public class UserService  {
    
        @Autowired
        private UserMapper userMapper;
        
        public int deleteByPrimaryKey(Integer id) {
            // TODO Auto-generated method stub
            return 0;
        }
    
        
        public int insert(User record) {
            // TODO Auto-generated method stub
            return 0;
        }
    
        
        public int insertSelective(User record) {
            // TODO Auto-generated method stub
            return 0;
        }
    
        
        public User selectByPrimaryKey(Integer id) {
            // TODO Auto-generated method stub
            return null;
        }
    
        
        public int updateByPrimaryKeySelective(User record) {
            // TODO Auto-generated method stub
            return 0;
        }
    
        
        public int updateByPrimaryKey(User record) {
            // TODO Auto-generated method stub
            return 0;
        }
    
        
        public List<User> queryAll() {
            // TODO Auto-generated method stub
            return this.userMapper.queryAll();
        }
    
    }

    controller

    package cn.taotao.controller;
    
    import java.util.List;
    
    import org.springframework.beans.factory.annotation.Autowired;
    import org.springframework.context.annotation.Configuration;
    import org.springframework.stereotype.Controller;
    import org.springframework.web.bind.annotation.RequestMapping;
    import org.springframework.web.bind.annotation.ResponseBody;
    import org.springframework.web.bind.annotation.RestController;
    import org.springframework.web.servlet.ModelAndView;
    
    import cn.taotao.bean.User;
    import cn.taotao.service.UserService;
    
    @RestController
    public class IndexController {
    
        @Autowired
        private UserService userService;
        
        @RequestMapping(value= {"/","/index"})
        @ResponseBody
        public List<User> getIndex() {
            ModelAndView mv = new ModelAndView("index");
            List<User> queryAll = this.userService.queryAll();
            mv.addObject("users", queryAll);
        //    return mv;
            return queryAll;
        }
        
    }

    application.yml

    spring:
      datasource:
        type: com.alibaba.druid.pool.DruidDataSource
        druid:
          driver-class-name: com.mysql.cj.jdbc.Driver
          url: jdbc:mysql://localhost:3306/test?useUnicode=true&characterEncoding=utf-8&useSSL=false&serverTimezone=Asia/Shanghai
          username: root
          password: xxxxx
          initial-size: 1
          min-idle: 1
          max-active: 50
          max-wait: 15000
          enable: true
          test-on-borrow: true
          test-on-return: true
          test-while-idle: true
      mvc:
        view:
          suffix: .jsp
          
    mybatis:
      mapper-locations:
       - classpath:mapper/*Mapper.xml              
       #这个需要指出,否则不会加载mapper.xml文件
     
      configuration:
        log-impl: org.apache.ibatis.logging.stdout.StdOutImpl
     

    pom.xml

    <!-- 手动添加 -->
            <dependency>
                <groupId>org.apache.tomcat.embed</groupId>
                <artifactId>tomcat-embed-jasper</artifactId>
                <scope>provided</scope>
            </dependency>
            
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-starter-aop</artifactId>
            </dependency>
            <dependency>
                <groupId>com.alibaba</groupId>
                <artifactId>druid-spring-boot-starter</artifactId>
                <version>1.2.4</version>
            </dependency>
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-starter-jdbc</artifactId>
                <!-- <version>2.4.2</version> -->
            </dependency>
            <!--/mybatis-spring-boot-starter -->
            <dependency>
                <groupId>org.mybatis.spring.boot</groupId>
                <artifactId>mybatis-spring-boot-starter</artifactId>
                <version>2.1.4</version>
            </dependency>
            <!--servlet依赖的jar包 -->
            <dependency>
                <groupId>javax.servlet</groupId>
                <artifactId>javax.servlet-api</artifactId>
                <scope>provided</scope>
            </dependency>
            <!--jsp依赖的jar包 -->
            <!-- https://mvnrepository.com/artifact/javax.servlet.jsp/javax.servlet.jsp-api -->
            <dependency>
                <groupId>javax.servlet.jsp</groupId>
                <artifactId>javax.servlet.jsp-api</artifactId>
                <version>2.3.1</version>
                <scope>provided</scope>
            </dependency>
            <dependency>
                <groupId>javax.servlet</groupId>
                <artifactId>jstl</artifactId>
            </dependency>
            

    入口启动类

    @SpringBootApplication
    @MapperScan(basePackages = {"cn.taotao.dao"})
    public class TransactionalDemoApplication {
    
        
        public static void main(String[] args) {
            SpringApplication.run(TransactionalDemoApplication.class, args);
        }
    
    }
  • 相关阅读:
    java核心技术学习笔记之一程序设计环境
    java核心技术学习笔记之一程序设计概述
    Eclips入门教程
    strict aliasing
    GCC 内联汇编
    文件系统实现
    ucore lab2
    Vim 最强调试插件:vimspector
    X86保护机制
    ucore lab1
  • 原文地址:https://www.cnblogs.com/sdgtxuyong/p/14471055.html
Copyright © 2011-2022 走看看