zoukankan      html  css  js  c++  java
  • springboot学习笔记-2 一些常用的配置以及整合mybatis

    一.一些常用的配置

    1.1 使用没有父POM的springboot

    通过添加scope=import的依赖,仍然能获取到依赖管理的好处:

    <dependencyManagement>
         <dependencies>
            <dependency>
                <!-- Import dependency management from Spring Boot -->
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-dependencies</artifactId>
                <version>1.4.3.RELEASE</version>
                <type>pom</type>
                <scope>import</scope>
            </dependency>
        </dependencies>
    </dependencyManagement>

    1.2 修改jdk的编译版本

    注意,springboot的默认的编译版本为1.6.我们可以在pom.xml中做出如下设置:

    <properties>
        <java.version>1.8</java.version>
    </properties>

    1.3 @componentScan注解

    通常,我们可以将main类(有main方法的类)放于根包中,即如下所示:

    这样写的好处是使用@ComponentScan注解的时候,在不声明任何参数的时候,默认是会扫描其同一个包,和子包下的类,这样就可以扫描到Controller,Service等类了.

    需要注意,@Import可以导入其他配置类,@ImportResource可以导入其他配置文件.,不过可以通过@ComponentScan去搜索其他bean,包括配置类.

    1.4 禁用特定的自动配置

    使用@EnableAutoConfiguation的exclude属性即可完成:

    @Configuration
    @ComponentScan
    @EnableAutoConfiguration(exclude={DataSourceAutoConfiguration.class})
    public class MyConfiguration {
           public static void main(String[] args) {
          SpringApplication.run(MyConfiguration.class,args);
    }
    }

    1.5 @SpringBootApplication注解

    @springbootapplication注解:它相当于以默认属性使用@Configuration, @EnableAutoConfiguration 和@ComponentScan

    可以用于简化开发.

    二.SpringBoot的热部署插件spring-boot-devtools

    热部署插件主要的作用是避免在修改classpath下面的代码的时候,需要频繁重新启动服务器.spring-boot-devtools将会自动监视classpath下面代码的变化,一旦发生了改变,将会重新部署到服务器中.

    2.1 添加maven依赖

    <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-devtools</artifactId>
                <optional>true</optional>
               <scope>true</scope>
    </dependency>    

    2.2 修改maven插件.添加配置.

    <build>
            <plugins>
                <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
                <configuration>
                      <!--fork :  如果没有该项配置,则devtools不会起作用,即应用不会restart -->
                    <fork>true</fork>
                </configuration>
                </plugin>
            </plugins>
    </build>

    2.3 重新启动

    三.Spring整合mybatis

    3.1 引入mybatis的依赖

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

    3.2 在Application类上面声明Mapper包的扫描

     3.3 application.properties中书写数据源

    这里需要注意的是,springboot在启动服务器的时候会去加载classpath下面的application.properties或application.yml文件,并根据文件的设置为对应的属性赋值.在src/main/resources下建立application.properties并书写以下代码去配置c3p0数据源:

    ##c3p0
    c3p0.jdbcUrl=jdbc:mysql://localhost:3306/test?useUnicode=true&characterEncoding=utf8
    c3p0.user=root
    c3p0.password=root
    c3p0.driverClass=com.mysql.jdbc.Driver
    spring.datasource.type=com.mchange.v2.c3p0.ComboPooledDataSource

    3.4 建立mybatis的配置类,配置c3p0数据源和sessionfactory

    @Configuration
    public class DataSourceConfig {
         @Bean(name = "dataSource")
         @Primary
         @ConfigurationProperties(prefix = "c3p0")
         public DataSource dataSource(){
             return DataSourceBuilder.create().type(com.mchange.v2.c3p0.ComboPooledDataSource.class).build();
         }
         
         @Bean
         public SqlSessionFactoryBean sqlSessionFactory() {
             SqlSessionFactoryBean bean=new SqlSessionFactoryBean();
             bean.setDataSource(dataSource());
             return bean;
         }
    }

    3.5 编写Mapper借口和Mapper配置文件

    <mapper namespace="com.xyy.mapper.DogMapper">
        <select id="findAllDogs" resultType="com.xyy.domain.Dog">
            SELECT * FROM dog;
        </select>
        <select id="findById" resultType="com.xyy.domain.Dog" parameterType="int">
            SELECT * FROM dog WHERE id=#{id};
        </select>
        <insert id="saveDog" parameterType="com.xyy.domain.Dog">
            INSERT INTO dog(age,name) VALUES(#{age},#{name});    
        </insert>
    </mapper>

    3.6 编写service

    注意涉及到增删改的操作需要用@Transactional开启事务

    @Service
    public class DogService {
        @Autowired
        private DogMapper dogMapper;
        
        public Dog findById(Integer id) {
            return dogMapper.findById(id);
        }
        public List<Dog> findAll() {
            return dogMapper.findAllDogs();
        }
        @Transactional
        public void saveDog(Dog dog) {
            dogMapper.saveDog(dog);
        }
    }

    3.7 编写Controller

    @Controller
    public class DogController {
        @Autowired
        private DogService dogService;
        
        @RequestMapping("/findById/{id}")
        @ResponseBody
        public Dog findDogById(@PathVariable("id") Integer id) {
            return dogService.findById(id);
        }
        @RequestMapping("/findAll")
        @ResponseBody
        public List<Dog> findAll() {
            return dogService.findAll();
        }
        @RequestMapping("/saveDog/{name}/{age}")
        public String saveDog(@PathVariable("name")String name,@PathVariable("age")String age) {
            Dog dog=new Dog();
            dog.setName(name);
            dog.setAge(age);
            dogService.saveDog(dog);
            return "addSuccess";
        }
    }

    测试,直接运行Application类即可.

  • 相关阅读:
    python从可迭代对象中取值
    python中可迭代对象和列表
    python中字典生成式
    Redis源码解析之跳跃表(一)
    Redis高可用集群
    Redis主从&哨兵集群搭建
    Java并发之ThreadPoolExecutor源码解析(三)
    Java并发之ThreadPoolExecutor源码解析(二)
    Java并发之ThreadPoolExecutor源码解析(一)
    并发编程之JMM&Volatile(三)
  • 原文地址:https://www.cnblogs.com/hlhdidi/p/6338991.html
Copyright © 2011-2022 走看看