初出茅庐~
各位,我是练习零年半的java菜鸟,学到现在第一次写web开发 由于自己一个人乱摸也是踩了很多坑啊也算是终于自己写出来一个接口了,以下是我自己写接口和页面时感觉要记录的东西,有错误的地方欢迎各位鱼友指正,毕竟新手也是很需要指点的嘛~ 希望各位不吝赐教!!
前端部分
- 关于axios的应用
axios.post :
this.$axios.post(
'url',
{<传递给后端的参数名>:<要传递的参数>},
{headers: {
'Content-Type': 'application/x-www-form-urlencoded'
}} //请求头!! (以后接口要是调用成功但是没有正确传参请检查请求头类型)
.then((res) => {
// 请求成功后的操作
})
.catch((error) => {
//请求失败后的操作
})
)
2.
浏览器临时存储的数据方法
sessionStorage.setItem('<存储到浏览器的变量名>'
,JSON.stringify(<传递的值或变量>))
在其他页面获取这个数据:
<要赋值的变量或者对象> = JSON.parse(
sessionStorage.getItem('<你要获取的变量或者对象>'))
例: this.user = JSON.parse(sessionStorage.getItem('user'));
后端部分
1.
application.yml的配置
server: //配置的端口号
port: 1010
spring:
datasource:
driver-class-name: com.mysql.cj.jdbc.Driver // 数据库配置
url: jdbc:mysql://localhost:3306/sms?serverTimezone=GMT%2b8
username: root
password: 111111
mybatis:
configuration: // mybatis打印mapper文件的sql语句在控制台
log-impl: org.apache.ibatis.logging.stdout.StdOutImpl
map-underscore-to-camel-case: true
mapper-locations: classpath:mapper/*.xml #扫描所有mybatis的xml文件 如果不用xml 可以删除
2. 三层架构
-
domain层
这里编写的是实体层,可以在这一层里再创一个文件夹(Vo)用来存放页面所需要的属性
-
Controller层
@RestController // Controller层的固定注解 用来表示这个是一个Controller类 * @RequestMapping("/user") //这个Controller类的顶级路径, 这个类里的所有接口方法的路径都在此基础上 public class xxxController{ @Autowired //注入service层 * private xxxService xxxservice; //xxxservice 这个Service创建出来的对象 //下面就是各种实现方法的编写了 //例: //登录验证返回布尔值 @PostMapping("/login") public boolean login(@RequestBody Map<String, String> student) { String studentNumber = student.get("studentNumber"); String password = student.get("password"); if (studentNumber == null && password == null) { return false; } else { return studentService.login(studentNumber, password); // 这里的返回值是布尔值,因为这个方法在第11行定义的 时候就定义好了,所以后面接口或者方法的返回值都是布尔值 } } //登录验证返回用户对象数据 @PostMapping("/login1") public Student login1(Student student) { //传入的参数是一个Student类的对象 String studentNumber = student.getStudentNumber(); //把账号和密码从这个对象中取出来 String password = student.getPassword(); if (studentNumber == null && password == null) { //后端再一次进行判定账号密码是否为空 return null; } else { return studentService.login1(student); // 这里就进入 service 方法 } } }
3.Service层
一般来说这个Service层都是一个接口,真正实现业务功能在这个Service的实现层也就是ServiceImpl
boolean login(String studentNumber, String password);
4.
ServiceImpl层
@Service // 业务实现层必要!! *
public class xxxServiceImpl implements xxxService {
@Autowired //注入mapper层
private StudentMapper studentMapper;
//login
@Override //重写方法
public boolean login(String studentNumber, String password) {
//有其他需求可以在这里编写
return studentMapper.login(studentNumber,password);
}
}
5.
Mapper层
你可以选择直接在这里写SQL语句 ,也可以选择在对应的映射xml文件里写
示范一下直接在这层写SQL:
@Mapper
public interface StudentMapper {
@Select("select count(*) > 0 from student where student_number = #{studentNumber} and password = #{password}")
boolean login(String studentNumber, String password);
}
使用xml文件:
Mapper层
@Mapper // 必须! *
public interface StudentMapper {
//login
boolean login(String studentNumber, String password);
//login1
Student login1(Student student);
}
首先就是在application.yml 最后一行写的配置代码 写了之后mapper层才能扫描到对应的xml文件
然后在resources目录下创建一个Mapper文件夹 里面用来存放对应的xml文件 比如 xxxMapper.xml
每个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" >
<mapper namespace="com.example.qssmobileserve.Mapper.StudentMapper">
完整代码
<?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" >
<mapper namespace="com.example.qssmobileserve.Mapper.StudentMapper">
<select id="login" resultType="boolean"> //这里的id 要与上面的mapper文件中的方法名对应 不然找不到 *
select count(*) > 0 // resultType 是返回值 要写 *
from student
<where>
student_number = #{studentNumber} and password = #{password} //传入的参数用 #{} 来绑定 *
</where>
</select>
<select id="login1" resultType="com.example.qssmobileserve.domain.Student">
select *
from student
<where>
student_number = #{studentNumber} and password = #{password}
</where>
</select>
</mapper>