# 任务
通过spring boot实现一个简单的报名系统。
1.了解下mysql数据库,能够在数据库创建一张数据表user。数据表需要这几个字段,id,name, gender。通过mysql命令插入数据,删除数据,查找数据,修改数据。
2.spring boot如何通过链接传递参数。链接上传递两个参数a和b,返回a和b相加的和。
3.通过spring boot操作mysql数据库。需要用mybatis这个库去操作数据库。通过spring boot去实现user表插入数据,删除数据,查找数据,修改数据。通过链接传参操作增删改查。
# 准备工作
1. IDEA
2. MySQL(关于mysql数据库,及在数据库创建一张数据表,可以参考这个视频教程,链接
# 创建一张表user
create database if not exists exercise character set utf8;
use exercise;
create table user(
id int,
name varchar(20),
gender varchar(1)
);
INSERT INTO USER(id,NAME,gender) VALUES(1,'小王','男');//插入
SELECT * FROM USER; //查看
DELETE FROM USER WHERE id=1; //删除
UPDATE USER SET gender='女' WHERE id=1; //修改
显示
1. 新建项目
(方法一:根据之前博文,点击链接,在之前添加Web的地方再输入MySQL、MyBatis字样)
方法二:勾选图中三个选项
项目建成后可以在**pom.xml**看到如图依赖
2. **application.properties**中添加下列语句连接数据库
spring.datasource.url=jdbc:mysql://localhost:3306/exercise?useUnicode=true&characterEncoding=UTF-8&serverTimezone=Asia/Shanghai
spring.datasource.username=root
spring.datasource.password=root
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
mybatis.type-aliases-package=com.examplemybatis.demo.mapper
(备注:spring.datasource.url 数据库连接字符串,3306是MySQL的端口,exercise是表所在的库,后面的参数直接复制就好了,之前有个时区参数忘记加上去总是报错
spring.datasource.username 数据库用户名
spring.datasource.password 数据库密码
spring.datasource.driver-class-name 驱动类型(注意MySQL 8.0的值是com.mysql.cj.jdbc.Driver和之前不同)
mybatis.type-aliases-package 配置mapper包名,这个到看后面就知道了
#源文件编写
简单一些,我们分为三部分:实体类、Mapper接口、Controller类,Controller类直接调用Mapper接口进行数据持久化处理
如图
##实体类
新建一个entity包,新建一个User类
package com.examplemybatis.demo.entity;
public class User {
private int id;
private String name;
private String gender;
}
全选,右键-Generate…-Getter and Setter
或
Alt
+Insert
+Getter and Setter
全都选上点击OK
,IDEA就是这么舒服
##Mapper接口
新建一个mapper包
在这个包新建一个UserMapper接口,利用注解实现SQL指令
package com.examplemybatis.demo.mapper;
import com.examplemybatis.demo.entity.User;
import org.apache.ibatis.annotations.*;
import org.springframework.stereotype.Repository;
import java.util.List;
@Repository
public interface UserMapper {
@Select("SELECT * FROM user")
@Results({
@Result(property = "name", column = "name")
})
List<User> getAll();
@Select("select * from user where id=#{id}")
User getById(int id);
@Insert({
"insert into user(id,name,gender) values(#{id},#{name},#{gender})"
})
void install(User user);
@Update({"update user set name=#{name},id=#{id} where gender=#{gender}"})
void Update(User user);
@Delete("delete from user where id=#{id}")
void delete(int id);
}
(备注:
@Select 查询注解
@Result 结果集标识,用来对应数据库列名的,如果实体类属性和数据库属性名保持一致,可以忽略此参数
@Insert 插入注解
@Update 修改注解
@Delete 删除注解)
完成这步之后我们在主程序入口(DemoApplication)添加一个
@MapperScan("com.examplemybatis.demo.mapper")
这样就不用每个Mapper都注解一次了,记得改成自己的mapper目录
##Controller类
package com.examplemybatis.demo;
import com.examplemybatis.demo.entity.User;
import com.examplemybatis.demo.mapper.UserMapper;
import org.mybatis.spring.annotation.MapperScan;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.SpringApplication;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;
import java.util.List;
@RestController
public class Controller {
@Autowired
private UserMapper userMapper;
@GetMapping("/getAll")
public List<User> getAll(){
return userMapper.getAll();
}
@GetMapping("/install")
public List<User> install(User user){
userMapper.install(user);
return userMapper.getAll();
}
@GetMapping("/delete")
public List<User> delete(int id){
userMapper.delete(id);
return userMapper.getAll();
}
@GetMapping("/update")
public List<User> update(User user){
userMapper.Update(user);
return userMapper.getAll();
}
@GetMapping("/get")
public User get(int id){
return userMapper.getById(id);
}
}
#测试
查询:
http://localhost:8080/getAll
增加:
http://localhost:8080/install?id=3&name=小张&gender=男
删除(忘记截图了)
http://localhost:8080/delete?id=3
修改
http://localhost:8080/update?gender=男&name=小汤&id=2
(特此声明,以上步骤均借鉴刚才链接中那位博主内容,详情请戳链接)
#解决问题2 返回参数之和
可以在主程序入口写如下代码(根据hello word改变)
package com.examplemybatis.demo;
import org.mybatis.spring.annotation.MapperScan;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
@SpringBootApplication
@RestController
@MapperScan("com.examplemybatis.demo.mapper")
public class DemoApplication {
public static void main(String[] args) {
SpringApplication.run(DemoApplication.class, args);
}
@GetMapping("/sum")
public int sum(@RequestParam(value = "first", defaultValue = "1") int first,@RequestParam(value = "second", defaultValue = "2") int second) {
return first+second;
}
}
end