1. Springboot是Spring mvc的升级版,没有必然的联系。
2. 特点:a简化配置 b是下一代框架 c入门级
3. Spring Boot配置文件application.properties
//配置数据库
spring.datasource.url=jdbc:oracle:thin:@//*.*.*.*/*
spring.datasource.username=*
spring.datasource.password=*
spring.datasource.driver-class-name=oracle.jdbc.OracleDriver
spring.datasource.testWhileIdle=true
spring.datasource.validationQuery=SELECT 1
spring.jpa.show-sql=true
//配置Redis
server.port=8080
spring.redis.host=*.*.*.*
spring.redis.password=
spring.redis.port=6379
spring.redis.pool.max-idle=100
spring.redis.pool.min-idle=0
spring.redis.pool.max-active=5000
spring.redis.pool.max-wait=500
//程序中的参数配置
list_sum_count=8
sku=10
real_list_count=4
real_per_count=2
real_list_count2=8
real_per_count2=4
//Spring 配置Mybatis
mybatis.typeAliasesPackage=com.ghs.recommeds.model
mybatis.mapperLocations=classpath:mapper/*.xml
Java 中调用Redis
@Autowired
private StringRedisTemplate template;
String realtime_goodids = template.opsForValue().get(userId);
4. Spring Boot配置文件
application.properties 文件
server.port = 8080 端口
server.context-path=/girl url前加的前缀
application.yml 文件
server:
port: (加空格)8080
context-path: /girl
girl:
cupSize: B
age: 18
content:”cupSize:${cupSize}, age:${age}”
*.java 文件
@Value(“${ content }”) //实现配置内容的注入
private String content;
新建类:
@Component
@ConfigurationProperties(prefix=”girl”)
public class GirlProperties{
private String cupSize;
private Integer age;
// Getter and Setter() 方法
}
使用
@Autowires
private GirlProperties girlProperties;
多环境配置
application.yml 文件
Spring:
profiles:
active: dev(prod)
application-dev.yml (测试环境)
server:
port: 8080
girl:
cupSize: B
age: 18
application-prod.yml (生产环境)
port: 8081
girl:
cupSize: F
age: 18
5. Controller的使用
@Controller 处理http的请求,不加http是无法请求的
@RestController Spring4之后新加的注解,原来返回json需要@ResponseBody配合@Controller也就是
@RestController=@ResponseBody +@Controller
@RequestMapping 配置url映射
若想用多个url同时访问一个方法。则:
@RestController
@RequestMapping(“/hello”)
@RequestMapping(value = {“/hello”,”/hi”},method=RequestMethod.GET)
public String say(){
}
处理url里的参数
@PathVariable 获取url中的数据
@RequestParam 获取请求参数的值
@GetMapping 组合注解
6. springboot配置Mybatis
pom.xml 配置
<!-- 使用数据源 -->
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>druid</artifactId>
<version>1.0.14</version>
</dependency>
<!-- 配置oracle数据库 -->
<dependency>
<groupId>com.oracle</groupId>
<artifactId>ojdbc14</artifactId>
<version>10.2.0.3.0</version>
</dependency>
<!--集成mybatis -->
<!-- 与数据库操作相关的依赖 -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-jdbc</artifactId>
</dependency>
<!-- mybatis -->
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis</artifactId>
<version>3.2.8</version>
</dependency>
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis-spring</artifactId>
<version>1.2.2</version>
</dependency>
<dependency>
<groupId>org.hibernate</groupId>
<artifactId>hibernate-validator</artifactId>
<version>5.2.4.Final</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-jdbc</artifactId>
</dependency>
MybatisConfig.java
package com.ghs.recommend.common;
import java.util.Properties;
import javax.sql.DataSource;
import org.apache.ibatis.session.SqlSessionFactory;
import org.mybatis.spring.SqlSessionFactoryBean;
import org.mybatis.spring.annotation.MapperScan;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.core.env.Environment;
import org.springframework.core.io.support.PathMatchingResourcePatternResolver;
import com.alibaba.druid.pool.DruidDataSourceFactory;
/**
* springboot集成mybatis的基本入口
* 1)创建数据源
* 2)创建SqlSessionFactory
*/
@Configuration //该注解类似于spring配置文件
@MapperScan(basePackages="com.ghs.recommend.mapper")
public class MybatisConfig{
@Autowired
private Environment env;
/**
* 创建数据源
* @Primary 该注解表示在同一个接口有多个实现类可以注入的时候,默认选择哪一个,而不是让@autowire注解报错
*/
@Bean
//@Primary
public DataSource getDataSource() throws Exception{
Properties props = new Properties();
props.put("driverClassName", env.getProperty("spring.datasource.driver-class-name"));
props.put("url", env.getProperty("spring.datasource.url"));
props.put("username", env.getProperty("spring.datasource.username"));
props.put("password", env.getProperty("spring.datasource.password"));
return DruidDataSourceFactory.createDataSource(props);
}
/**
* 根据数据源创建SqlSessionFactory
*/
@Bean
public SqlSessionFactory sqlSessionFactory(DataSource ds) throws Exception{
SqlSessionFactoryBean fb = new SqlSessionFactoryBean();
fb.setDataSource(ds);//指定数据源(这个必须有,否则报错)
//下边两句仅仅用于*.xml文件,如果整个持久层操作不需要使用到xml文件的话(只用注解就可以搞定),则不加
fb.setTypeAliasesPackage(env.getProperty("mybatis.typeAliasesPackage"));//指定基包
fb.setMapperLocations(new PathMatchingResourcePatternResolver().getResources(env.getProperty("mybatis.mapperLocations")));//指定xml文件位置
return fb.getObject();
}
}
UserMapper.xml
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<!-- 指定工作空间,要与接口名相同,源代码没有去看,猜测应该是通过"这里的namespace.下边方法的id"来定位方法的 -->
<mapper namespace="com.ghs.recommend.mapper.UserMapper">
<sql id="Base_Column_List" >
id,price,name,sku,duration
</sql>
<!-- 查询一条记录 -->
<select id="selectInfo" resultType="com.ghs.recommend.model.User">
select id,price,name,sku,duration from temp_product
</select>
</mapper>
UserDao.java
import java.util.List;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Repository;
import com.ghs.recommend.mapper.UserMapper;
import com.ghs.recommend.model.User;
@Repository
public class UserDao {
@Autowired
private UserMapper userMapper;
public List<User> selectUser(){
return userMapper.selectInfo();
}
}
UserService.java
package com.ghs.recommend.service;
import java.util.List;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import com.ghs.recommend.model.User;
import com.ghs.recommend.dao.UserDao;
@Service
public class UserService {
@Autowired
private UserDao userDao;
public List<User> selectUser(){
return userDao.selectUser();
}
}