org.springframework.boot
spring-boot-maven-plugin
说明:由于YML一般都是系统级别的属性配置文件,一般将业务配置放到指定的properties文件中.
1).编辑pro配置文件
#定义测试redis节点信息
redis.host2=redis的IP地址
redis.port2=6379
2).编辑RedisController2
package com.jt.controller;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.PropertySource;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
@RestController
//当程序启动时加载指定的资源
@PropertySource(value = "classpath:/properties/redis.properties",encoding = "utf-8")
public class RedisController2 {
@Value("${redis.host2}")
private String host;
@Value("${redis.port2}")
private int port;
@RequestMapping("/getNode2")
public String getNode(){
return host + "|" +port;
}
}
org.springframework.boot
spring-boot-devtools
由于开发中可能会遇到不同的环境问题.可能随时修改配置信息. 需要准备一套灵活的机制进行修改.
#设定默认的环境
spring:
profiles:
active : dev
---
#语法: 1. key:(空格)value
# 2.YML文件有层级关系 注意缩进
# 3.YML文件中默认utf-8格式编码
#标识配置信息 新版本的写法
spring:
config:
activate:
on-profile: dev
server:
port: 8090
# 利用YML方式赋值
redis:
host: 127.0.0.1
port: 6379
--- #实现配置文件拆分 旧版本的写法
spring:
profiles: prod #为环境起名
server:
port: 8080
redis:
host: 10.0.0.1
port: 7000
4.0.0
org.springframework.boot
spring-boot-starter-parent
2.4.1
com.jt
springboot_demo2
0.0.1-SNAPSHOT
springboot_demo2
Demo project for Spring Boot
1.8
org.springframework.boot
spring-boot-starter-data-jdbc
org.springframework.boot
spring-boot-starter-web
org.mybatis.spring.boot
mybatis-spring-boot-starter
2.1.4
org.springframework.boot
spring-boot-devtools
runtime
true
mysql
mysql-connector-java
runtime
org.projectlombok
lombok
true
org.springframework.boot
spring-boot-starter-test
test
org.springframework.boot
spring-boot-maven-plugin
spring:
datasource:
url: jdbc:mysql://127.0.0.1:3306/jtdb?
serverTimezone=GMT%2B8 配置数据源时区 %2B +
&useUnicode=true&characterEncoding=utf8 使用utf-8编码格式
&autoReconnect=true 是否重新链接
&allowMultiQueries=true 是否允许批量操作
username: root
password: root
面试题: 如果项目需要发布到Linux系统中,问Linux系统内部是否需要安装LOMBOK插件?
答: 不需要
原因: LOMBOK在编译器有效的. 由xx.java文件 动态生成xxx.class文件时 会动态的添加get/set方法
server:
port: 8090
servlet:
context-path: /
spring:
datasource:
url: jdbc:mysql://127.0.0.1:3306/jtdb?serverTimezone=GMT%2B8&useUnicode=true&characterEncoding=utf8&autoReconnect=true&allowMultiQueries=true
username: root
password: root
#springboot整合mybatis
mybatis:
#定义别名包
type-aliases-package: com.jt.pojo
#加载Mapper映射文件
mapper-locations: classpath:/mybatis/mappers/*.xml
#开启驼峰映射
configuration:
map-underscore-to-camel-case: true
对象关系映射(英语:Object Relational Mapping,简称ORM,或O/RM,或O/R mapping),是一种程序设计技术,用于实现面向对象编程语言里不同类型系统的数据之间的转换。从效果上说,它其实是创建了一个可在编程语言里使用的“虚拟对象数据库”。如今已有很多免费和付费的ORM产品,而有些程序员更倾向于创建自己的ORM工具。
实质: 是以对象的方式操作数据库.
MyBatis-Plus (opens new window)(简称 MP)是一个 MyBatis (opens new window)的增强工具,在 MyBatis 的基础上只做增强不做改变,为简化开发、提高效率而生。
com.baomidou
mybatis-plus-boot-starter
3.2.0
问题: 如何实现以对象的方式操作数据库!!!
步骤1: 确定数据库中对象与关系表的映射关系 名称/属性 能否利用注解的方式实现
步骤2: 以统一的方式定义Mapper接口,方便用户的调用.
步骤3: 对象如何转化为Sql语句的环节.
入库操作: userMapper.insert(user);
Sql语句: insert into 表名(字段1,字段2,字段3…) values(值1,值2,值3…)
最终将sql交给Mybatis执行.
package com.jt;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
import com.jt.mapper.UserMapper;
import com.jt.pojo.User;
import org.junit.jupiter.api.Test;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
import javax.management.Query;
import java.util.Arrays;
import java.util.List;
@SpringBootTest
class SpringbootDemo2ApplicationTests {
@Autowired
private UserMapper userMapper;
@Test
public void test01(){
List userList = userMapper.findAll();
System.out.println(userList);
}
@Test
public void testInsert(){
User user = new User();
user.setName("鲁班七号").setAge(3).setSex("男");
userMapper.insert(user);
}
/**
* 测试1: 查询id=5的数据
* 测试2: 根据name="唐僧"查询数据
*/
@Test
public void testSelect(){
User user = userMapper.selectById(5);
System.out.println(user);
//查询所有数据
List userList = userMapper.selectList(null);
System.out.println(userList);
//3.查询name="唐僧"数据 where name ="xxx"
//常见关系运算符 = eq , > gt ,< lt, >= ge ,<= le
QueryWrapper queryWrapper = new QueryWrapper<>();
queryWrapper.eq("name", "唐僧");
List userList2 = userMapper.selectList(queryWrapper); //where条件构造器
System.out.println(userList2);
}
/**
* 查询: id= 1,3,5,6的数据
* Sql: select xxxxx where id in (1,3,5,6)
*/
@Test
public void testSelect02(){
Integer[] ids = {1,3,5,6}; //模拟前端传递的数据
//一般需要将数组.转化为List集合
List idList = Arrays.asList(ids);
QueryWrapper queryWrapper = new QueryWrapper<>();
queryWrapper.in("id", idList);
System.out.println(userMapper.selectList(queryWrapper));
//方式2: 直接批量查询
System.out.println(userMapper.selectBatchIds(idList));
}
/**
* 条件: 查询名字中包含'精'字的数据
* sql: select ..... where name like '%精%'
* '王%'
*/
@Test
public void testSelect03(){
QueryWrapper queryWrapper = new QueryWrapper<>();
queryWrapper.like("name", "精");
System.out.println(
userMapper.selectList(queryWrapper));
//2.模糊查询2
QueryWrapper queryWrapper2 = new QueryWrapper<>();
queryWrapper2.likeRight("name", "王");
System.out.println(userMapper.selectList(queryWrapper2));
}
/**
*
* 将数据按照age降序排列,如果年龄相同 按照ID降序排列
*/
@Test
public void testSelect04(){
QueryWrapper queryWrapper = new QueryWrapper<>();
queryWrapper.orderByDesc("age","id");
System.out.println(userMapper.selectList(queryWrapper));
}
/**
* 查询name中包含"君"字 or sex为女性 ,按照Id降序排列
* sql: where name like "%君%" and xxxx
*/
@Test
public void testSelect05(){
QueryWrapper queryWrapper = new QueryWrapper<>();
queryWrapper.like("name", "君")
.or() //默认是and 如果需要调用or
.eq("sex", "女")
.orderByDesc("id");
System.out.println(userMapper.selectList(queryWrapper));
}
/**
* 将name="测试案例" 修改为 "测试环境"
* 参数说明: entity 需要改为的数据对象
* updateWrapper 更新条件构造器
* 特点: 将对象中不为null的属性当做set条件 */
@Test
public void testUpdate(){
User user = new User();
user.setName("测试环境");
UpdateWrapper updateWrapper = new UpdateWrapper<>();
updateWrapper.eq("name", "测试案例");
userMapper.update(user,updateWrapper);
}
}