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

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM