@RestController
@RequestMapping("/books")
public class BookController {
@GetMapping("/{id}")
public String getById(@PathVariable Integer id){
System.out.println(id);
return "hello springboot";
}
}
SpringApplication.run(SpringBootDemoApplication.class, args);//直接启动springboot项目应用
<parent>
<groupId>org.springframework.bootgroupId>
<artifactId>spring-boot-starter-parentartifactId>
<version>2.7.2version>
<relativePath/>
parent>
找到application.properties文件
server.port=80
//修改端口为80
新建application.yml,修改文件
server:
port: 80
#有一个空格,一定要注意
新建application.yaml,修改文件
server:
port: 80
application.properties:主启动文件
application.yml :第二启动文件
application.yaml:第三启动文件
logging:
level:
root: info
属性值前面添加空格(属性名与属性值之间使用冒号+空格作为分割)#subject是一个数组
subject:
- java
- 前端
- 大数据
@Value("${lesson}")
private String lesson;
@Value("${subject[0]}")
private String subject0;
//自动注入
@Value("${lesson}")
private String lesson;
@Value("${subject[0]}")
private String subject0;
//自动装配
@Autowired
private Environment environment;//可以用来加载所有的环境信息
System.out.println(environment.getProperty("lesson"));
System.out.println(environment.getProperty("subject[1]"));
//定义实体类并且配置注解
@Component
@ConfigurationProperties(prefix = "enterprise")//与yaml中的数据要对应
public class Enterprise {
private String name;
private Integer age;
private String tel;
private String[] subjects;
@Override
public String toString() {
return "domain{" +
"name='" + name + '\'' +
", age=" + age +
", tel='" + tel + '\'' +
", subjects=" + Arrays.toString(subjects) +
'}';
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public Integer getAge() {
return age;
}
public void setAge(Integer age) {
this.age = age;
}
public String getTel() {
return tel;
}
public void setTel(String tel) {
this.tel = tel;
}
public String[] getSubjects() {
return subjects;
}
public void setSubjects(String[] subjects) {
this.subjects = subjects;
}
}
enterprise:
name: itcast
age: 16
tel: 123456
subject:
- java
- 前端
- 大数据
@Autowired
private Enterprise enterprise;//成bean后自动装配
#设置启用的环境,在active后加环境名称
spring:
profiles:
active: test
---
#多环境开发配置,使用---来分割环境
spring:
profiles: dev
server:
port: 80
---
spring:
profiles: pro
server:
port: 81
---
spring:
profiles: test
server:
port: 82
#修改环境
java -jar spring-boot-demo-0.0.1-SNAPSHOT.jar --spring.profiles.active=test
#修改端口号,通过--就可以同时修改多个配置
java -jar spring-boot-demo-0.0.1-SNAPSHOT.jar --spring.profiles.server.port=88 --spring.profiles.active=test
控制版本号,再让Spring来加载这些版本[最高][最低]//Spring整合JUnit
@RunWith(SpringJUnit4ClassRunner.class)//设置运行器
@ContextConfiguration(classes = SpringConfig.class)//加载环境
/**
* 测试代码
/*
@SpringBootTest(classes = SpringBootDemoApplication.class)//可以指定其启动类
class SpringBootDemoApplicationTests {
//如果测试类是在SpringBoot启动类的包或者子包中,可以省略启动类的设置,也就是省略classes的指定
@Autowired
private BookService bookService;
@Test
void contextLoads() {
bookService.save(new Book());
}
}
@Mapper//为接口添加Mapper注解
public interface BookDao {
@Select("select * from book where id =#{id} ")
Book getById(Integer id);
}
spring:
datasource:
driver-class-name: com.mysql.jdbc.Driver
url: jdbc:mysql://127.0.0.1:3306/db1?serverTimezone=GMT&useSSL=false&allowPublicKeyRetrieval=true
username: root
password: 123456
type: com.alibaba.druid.pool.DruidDataSource
#配置数据源
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-iCBxF3fa-1659780981021)(./image/mp-01.png)]
@Configuration
public class MPConfig {
@Bean
public MybatisPlusInterceptor mybatisPlusInterceptor(){
//1.定义mp拦截器
MybatisPlusInterceptor mybatisPlusInterceptor = new MybatisPlusInterceptor();
//2.添加具体的拦截器
mybatisPlusInterceptor.addInnerInterceptor(new PaginationInnerInterceptor());
return mybatisPlusInterceptor;
}
}
void testGetAll() {
IPage page = new Page(1,2);//查第几页,后边是页的尺寸
bookDao.selectPage(page,null);
System.out.println(page.getCurrent());//表示当前是第几页
System.out.println(page.getTotal());//一共多少条数据
System.out.println(page.getPages());//表示总共有多少页
System.out.println(page.getSize());//每页显示数
System.out.println(page.getRecords());//真正的数据
}
void testGetAll() {
QueryWrapper wrapper = new QueryWrapper();
wrapper.eq("type","计算机");//equals
wrapper.lt("id",5);//less than
wrapper.gt("id",5);//greater than
List list = bookDao.selectList(wrapper);
System.out.println(list);
}
void testGetAll() {
//使用lambda
QueryWrapper<Book> queryWrapper = new QueryWrapper();//需要先执行泛型才能使用
queryWrapper.lambda().lt(Book::getType,"计算机");
queryWrapper.lambda().lt(Book::getId,"5");
queryWrapper.lambda().gt(Book::getId,"5");
}
LambdaQueryWrapper<Book> lambdaQueryWrapper = new LambdaQueryWrapper();
lambdaQueryWrapper.lt(Book::getId,"5");//同理
lambdaQueryWrapper.select(Book::getType,Book::getDescription);//限定了查询的字段
QueryWrapper<Book> queryWrapper = new QueryWrapper<>();
queryWrapper.select("count(*) as count,type");
queryWrapper.groupBy("type");
List<Map<String, Object>> maps = bookDao.selectMaps(queryWrapper);
System.out.println(maps);
@TableId(type = IdType.AUTO)
private Long id;
//AUTO:数据库方默认的生成策略
//INPUT:与自增策略矛盾,ID由自己指定,不指定则会报错(id为null)
//ASSIGN_ID:使用雪花算法生成id(可以兼容数值型与字符串类型,64位2进制)
//ASSIGN_UUID:以UUID生成算法作为id生成策略
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-dvQDk9HR-1659780981023)(./image/xh.png)]
做标记@TableLogic(value="0",delval="1")//没有删除是0,删除了是1
private int delete;