首页 > 代码库 > 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