首页 > 代码库 > springboot学习笔记-2 一些常用的配置以及整合mybatis

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类即可.

 

springboot学习笔记-2 一些常用的配置以及整合mybatis