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);
        }
    
    }
  • 相关阅读:
    CF1454F Array Partition
    leetcode1883 准时抵达会议现场的最小跳过休息次数
    leetcode1871 跳跃游戏 VII
    leetcode1872 石子游戏VIII
    CF1355C Count Triangles
    CF1245D Shichikuji and Power Grid
    CF1368C Even Picture
    CF1368D AND, OR and square sum
    CF1395C Boboniu and Bit Operations
    SpringBoot和开发热部署
  • 原文地址:https://www.cnblogs.com/sdgtxuyong/p/14471055.html
Copyright © 2011-2022 走看看