springboot 入门教程和 mysql 数据库,java 框架面试基础
10:@PathVariable
主要是用于取 url 中的变量的值,比如 @RequestMapping("/student/{studentName}"),那么在对应的方法入参中可以写成:(@PathVariable ?String ?studentName).
11:@RequestParam
将请求参数绑定到 Controller 的方法上面,@RequestParam(value=”参数名”)。
(5) 如何使用 mybaits-plus(用法可以到官网查询 https://baomidou.com/ )
引入 Spring Boot Starter 父工程:
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>undefined</version>
<relativePath/>
</parent>
引入 spring-boot-starter、spring-boot-starter-test、mybatis-plus-boot-starter、h2 依赖:
在 application.yml 配置文件中添加 H2 数据库的相关配置:
# DataSource Config
spring:
datasource:
driver-class-name: org.h2.Driver
schema: classpath:db/schema-h2.sql
data: classpath:db/data-h2.sql
url: jdbc:h2:mem:test
username: root
password: test
在 Spring Boot 启动类中添加 @MapperScan 注解,扫
描 Mapper 文件夹:
@SpringBootApplication
@MapperScan("com.baomidou.mybatisplus.samples.quickstart.mapper")
public class Application {
public static void main(String[] args) {
SpringApplication.run(QuickStartApplication.class, args);
}
}
编写实体类 User.java(此处使用了 Lombok (opens new window)简化代码)
@Data
public class User {
private Long id;
private String name;
private Integer age;
private String email;
}
编写 Mapper 类 UserMapper.java
public interface UserMapper extends BaseMapper<User> {
}
添加测试类,进行功能测试:
@SpringBootTest
public class SampleTest {
@Autowired
private UserMapper userMapper;
@Test
public void testSelect() {
System.out.println(("----- selectAll method test ------"));
List<User> userList = userMapper.selectList(null);
Assert.assertEquals(5, userList.size());
userList.forEach(System.out::println);
}
}
(6) mybaits 常用注解以及作用
1、sql – 可被其他语句引用的可重用语句块
<sql id="valid"> where valid = 1 </sql>
<select id = 'queryUser'>select * from user <include refid = 'valid'></include>
2、insert – 映射插入语句
<insert id = "saveUser">insert into User (id,name,sex) values (#{id},#{name},#{sex})<insert>
3、update – 映射更新语句
<update id="updateUser">
update User set
name = #{name},
sex= #{sex}
where id = #{id}
</update>
4、delete – 映射删除语句
<delete id="deleteUser">
delete from User where id = #{id}
</delete>
(7) 编写一个简单的登陆注册功能
@Api(tags = {"管理员接口"})
@RequestMapping("/admin")
@Controller
@ResponseBody
public class AdminController {
@Autowired
private AdminMapper adminMapper;
@ApiOperation("管理员登录")
@RequestMapping("/login")
public ResponseMessage login(@RequestBody LoginVo loginVo){
QueryWrapper<Admin> queryWrapper=new QueryWrapper<>();
queryWrapper.eq("account",loginVo.getAccount());
queryWrapper.eq("pwd",loginVo.getPwd());
Admin admin=adminMapper.selectOne(queryWrapper);
if (admin==null){
return ResponseMessage.error("请登录");
}else {
admin.setToken(UUID.randomUUID().toString());
adminMapper.updateById(admin);
return ResponseMessage.success(admin);
}
}
@ApiOperation("管理员注册")
@RequestMapping("/register")
public ResponseMessage register(@RequestBody Admin admin){
adminMapper.insert(admin);
return ResponseMessage.success(1);
}
}
2. mysql 数据库
(1) 数据库的安装
参考博客:https://www.cnblogs.com/Eva-J/articles/9664401.html
(2) 数据库常用字段
字符型?
VARCHAR VS CHAR?
文本型?
TEXT?
数值型?
SQL 支持许多种不同的数值型数据。你可以存储整数 INT 、小数 NUMERIC、和钱数 MONEY。?
INT VS SMALLINT VS TINYINT?
逻辑型?
BIT
日期型?
DATETIME VS SMALLDATETIME?
Unsigned
无符号的整数
声明了该列不能声明为负值,否则变为 0
zerofill
0 填充的
不足位数,使用 0 来填充
自增
自动增加,必须是整数
可以自定义自增的起始值和步长
非空 Not Null
假设设置为 not null,如果不给它赋值,就会报错
Null,如果不填值,就是默认 Null
(3) 数据库与表的创建
mysql> CREATE DATABASE 库名;
mysql> CREATE DATABASE IF NOT EXISTS my_db default charset utf8 COLLATE utf8_general_ci;
mysql> USE 库名;
mysql> CREATE TABLE 表名 (字段名 VARCHAR(20), 字段名 CHAR(1));
(4) 增删查改的 SQL 格式
mysql> INSERT INTO 表名 VALUES ("hyq","M");
mysql> DELETE FROM 表名;
mysql> SELECT * FROM 表名;
mysql-> UPDATE 表名 SET 字段名 1='a',字段名 2='b' WHERE 字段名 3='c';
(5) IN 、BETWEEN 、LIKE 用法
//in 条件的用法
select *
from MyClass
where Age=11 or Age =12 or Age =15
order by Age?
//两条 SQL 语句结果一样
select *
from MyClass
where Age ?in(11,12,15)
order by Age ?
select *
from dbo.MyClass
where Age >10 and Age <20
order by Age?
//两个结果完成一样
select *
from MyClass
where Age between 10 and 20
order by Age
//字符串匹配 ? //模糊查寻时用到
//两个匹配通配符 %任意多个任意字符,_任意一个任意字符
select *
from MyClass
where Name ?like '罗 %'
(6) 关联查询
Mysql 中的关联查询(内连接,外连接,自连接)
(7) INNER JOIN 、 LEFT JOIN 、RIGHT JOIN 、FULL JOIN ?用法
INNER JOIN 连接两个数据表的用法:
SELECT * FROM 表 1 INNER JOIN 表 2 ON 表 1.字段号=表 2.字段号
inner join(等值连接) 只返回两个表中联结字段相等的行
left join(左联接) 返回包括左表中的所有记录和右表中联结字段相等的记录
right join(右联接) 返回包括右表中的所有记录和左表中联结字段相等的记录
(8) 数据库常用函数
常用函数 聚合函数
函数名 ? ? ? ? ? ? ?作用
AVG() ? ? ? ? ? ? ?返回某字段的平均值
COUNT() ? ? ? ? 返回某字段的行数
MAX() ? ? ? ? ? ? ?返回某字段的最大值
MIN() ? ? ? ? ? ? ?返回某字段的最小值
SUM() ? ? ? ? ? ? ?返回字段的和
用法:SELECT AVG(字段名) FROM 表名; ? ? ? ? ?
SELECT COUNT(字段名) FROM 表名;
SELECT MAX(字段名) FROM 表名;?
SELECT MIN(字段名) FROM 表名;
SELECT SUM(字段名) FROM 表名;
这些函数可以计算一些数值,用起来会非常方便
字符串函数
函数名 ? ? ? ? ? ? ? ? ? ? ?作用 ? ? ? ? ? ? ? ? ? ? ? ? 举例
CONCAT ? ? ? ? ? ? ? ? ?字符串连接 ? ? ? ? ? ? ? SELECT CONCAT('my','s',ql');
(str1,str2...) ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?返回:mysql
INSERT ? ? ? ? ? ? ? ? ? ? 字符串替换 ? ? ? ? ? ? ? SELECT INSERT('这是 SQL Server 数据库',3,10,'MySQL');
(str,pos,len,newstr) ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 返回:这是 MySQL 数据库
LOWER ? ? ? ? ? ? ? ? ? ?将字符串转为小写 ? ? ? SELECT LOWER(MySQL);
(str) ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?返回:mysql
UPPER ? ? ? ? ? ? ? ? ? ? 将字符串转为大写 ? ? ? SELECT UPPER(MySQL);
(str) ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?返回:MYSQL
SUBSTRING ? ? ? ? ? ? ?字符串截取 ? ? ? ? ? ? ? ?SELECT SUBSTRING('JavaMySQLOracle',5,5);
(str,num,len) ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 返回:MySQL ? ? ?
时间日期函数
函数名 ? ? ? ? ? ? ? ? ? ? 作用 ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?举例
CURDATE() ? ? ? ? ? ? ?获取当前日期 ? ? ? SELECT CURDATE(); ??
返回:2018-01-30
CURTIME() ? ? ? ? ? ? ?获取当前时间 ? ? ? SELECT CURTIME();
返回:15:32:59
NOW() ? ? ? ? ? ? ? ? ? ?获取当前日期和时间 SELECT NOW();
返回:2018-01-30 15:32:59
WEEK(date) ? ? ? ? ? ? 返回日期 date 为一年 SELECT WEEK(NOW());
评论