文章目录
1. 首先配置pom.xml文件。那么什么是pom.xml?
pom.xml作为项目对象模型。通过xml表示maven项目,使用pom.xml来实现。主要描述了项目:包括配置文件、项目的依赖性等;
配置时,首先确定项目为SpringBoot(虽然本质是个Maven)
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-parent</artifactId>
<version>2.1.5.RELEASE</version>
</parent>
其次,添加Mybatis的依赖jar。
<dependency>
<groupId>org.mybatis.spring.boot</groupId>
<artifactId>mybatis-spring-boot-starter</artifactId>
<version>1.3.1</version> //版本号很容易出问题,具体哪个可以找最新
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>8.0.15</version>//版本号同样注意
</dependency>
2. 创建application.yml。那么为什么创建.yml文件呢?
使用idea开发springboot项目,在做模块开发时,不再使用 默认的配置文件:application.properties而是删除后创建application.yml 配置文件,原因于其拥有天然的树状结构。
那么最初的.properties文件是什么呢?
1.Java中有专门用来装载配置文件的类Properties(Java.util.Properties),配置文件用来保存一些在程序中可能修改的值
2. Java配置文件常为.properties文件,格式为文本文件,文件的内容的格式是“键=值”的格式。
3. 开发中获得连接的4个参数(驱动、URL、用户名、密码)通常都存在配置文件中,方便后期维护,程序如果需要更换数据库,只需要修改配置文件即可。
总之,就是Java通过读取配置文件进行数据库、接口的处理。(因为我就用到了这两个。。。。)
spring:
datasource:
url: jdbc:mysql://localhost:3306/library?useUnicode=true&characterEncoding=UTF-8&serverTimezone=UTC
username: root
password: root
driver-class-name: com.mysql.cj.jdbc.Driver
mybatis:
mapper-locations: classpath:/mapping/*.xml //
type-aliases-package: com.wch.entity
server:
port: 8181
- url、username、password 弄自己的。
- mapper-locations:当mybatis的xml文件和mapper接口不在相同包下时,需要用mapper-locations属性指定xml文件的路径。找到了,才能利用xml映射器来实现映射。
- classpath :src 路径下的文件在编译后都会放到 WEB-INF/classes 路径下。默认classpath 就是指这里。*是个通配符,代表所有的文件,**代表所有目录下。
- port:端口自定,爱啥啥,但你得记得前端从这个端口拿数据
3. 配置mapper.xml文件。那么这里的.xml文件又是什么?
MyBatis 的真正强大在于它的映射语句,也是它的魔力所在。由于它的异常强大,映射器的 XML 文件就显得相对简单。那么映射(ORM)又是什么?
1.对象关系映射(Object Relational Mapping,简称ORM),简单的说ORM是通过使用描述对象和数据库之间映射的元数据,将程序中的对象自动持久化到关系数据库中。
个人理解:Mybatis得用xml实现ORM,再xml中配置SQL语句将元素映射到数据库中,实现持久化。
<?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.wch.repository.BookRepository">
<select id="findAll" resultType="com.wch.pojo.Book">
select id,name,author from book
</select>
<select id="findById" parameterType="int" resultType="com.wch.pojo.Book">
select id,name,author from book where id=#{id}
</select>
<insert id="save" parameterType="com.wch.pojo.Book">
insert into book(name,author) values(#{name},#{author})
</insert>
<update id="update" parameterType="com.wch.pojo.Book">
update book set name=#{name},author=#{author} where id=#{id}
</update>
<delete id="deleteById" parameterType="int">
delete from book where id=#{id}
</delete>
</mapper>
- 在映射文件中通过parameterType指定输入参数的类型。
- 在映射文件中通过resultType指定输出结果的类型。
- #{}表示一个占位符号,#{}接收输入参数,类型可以是简单类型,pojo、hashmap。
4.配置Controller.java。
package com.wch.controller;
import com.wch.entity.Book;
import com.wch.repository.BookRepository;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import java.util.List;
@RestController
public class BookHandler {
@Autowired
private BookRepository bookRepository;
@GetMapping("/findAll")
public List<Book> findAll(){
return bookRepository.findAll();
}
@GetMapping("/findById/{id}")
public Book findById(@PathVariable("id") int id) {
return bookRepository.findById(id);
}
@DeleteMapping("/deleteById/{id}")
public void deleteById(@PathVariable("id") int id){
bookRepository.deleteById(id);
}
@PostMapping("/save")
public void save(@RequestBody Book book){
bookRepository.save(book);
}
@PutMapping("/update")
public void update(@RequestBody Book book){
bookRepository.update(book);
}
}
注解:
- @RestController:
@RestController注解相当于@ResponseBody + @Controller合在一起的作用。如果需要返回JSON,XML或自定义mediaType内容到页面,则需要在对应的方法上加上@ResponseBody注解。
- @Autowired 注释可以在 setter 方法中被用于自动连接 bean。自动注入嘛。
- @Pathvariable:
当使用@RequestMapping URI template 样式映射时, 即 someUrl/{paramId}, 这时的paramId可通过 @Pathvariable注解绑定它传过来的值到方法的参数上。
- @GetMapping("/findAll")/@GetMapping("/findById/{id}")/@DeleteMapping("/deleteById/{id}")/@PostMapping("/save")/@PutMapping("/update")
其中@GetMapping等于@RequestMapping(method = RequestMethod.GET),其他类推,这也是规范rest风格。那么rest是什么?
- REST描述的是在网络中client和server的一种交互形式;REST本身并没有创造新的技术、组件或服务,而隐藏在RESTful背后的理念就是使用Web的现有特征和能力, 更好地使用现有Web标准中的一些准则和约束。
- 别问后面的rest、restful接口啥意思,怎么设计了,我真不懂,这工程跟大佬学着敲的,就这种规范以后习惯用了。。。