1先建立一个简单的maven项目,添加相应的依赖。其中有spring boot的父依赖<parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>2.0.7.RELEASE</version> </parent>
(主要是用来制裁整个spring boot相关的依赖的版本,也就是只要是 <groupId>org.springframework.boot</groupId>
开头的版本都是2.0.7,以及springboot的启动依赖,用来启动一个web,<dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> <version>8.0.11</version> </dependency>
这个代码帮助java连上数据库,
<dependency> <groupId>org.mybatis.spring.boot</groupId> <artifactId>mybatis-spring-boot-starter</artifactId> <version>2.1.3</version> </dependency>
这是导入mybatis的框架。
org.springframework.boot spring-boot-starter-web org.projectlombok lombok 1.18.6 provided mysql mysql-connector-java 8.0.11
org.mybatis.spring.boot mybatis-spring-boot-starter 2.1.3 ```
2建立如图所示的包目录和文件,开始是一个大的包com.heal,之下是:
controller包为后端控制器包,里面有一个控制器类,用于控制网页的跳转;
entity包是实体类包,里面有一个user类,其中的@Data注解是为了自动生成get和set方法,需要导入依赖中的lombok插件(如果嫌弃麻烦可以直接编写一个最普通的JavaBean即可);respository包是数据层的接口,里面的接口和UserRepository.xml的方法id对应,调用接口的方法会自动映射到xml文件里面的具体方法从而调用具体的sql语句;
resource资源包下有一个mapping包,在mapping包下,有UserRepository.xml是一个映射文件,映射了UserRepository接口的方法。
application.yml为springboot的配置文件,在里面配置如:访问的端口,还有连接的数据库的用户名以及一些基础的配置。
Application(resource目录上的那个不显眼的,又必不可少的类):这是springboot的启动类,来用启动整个springboot程序,,注意这个类必须放在controller类的上层或者同层,因为springboot在启动的时候会向下扫描整个项目,不满足启动类在上方的时候,有些我们编写的类可能没有扫描到。(启动的@MapperScan注解用来标明repository接口类的位置,其他的代码为默认代码)
3数据库的编写
4代码展示
- controller类
package com.heal.controller;
import com.heal.entity.User;
import com.heal.repository.UserRepository;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
@RestController
@RequestMapping("/mapper")
public class UserMapperHandler {
@Autowired
private UserRepository userRepository;
@DeleteMapping("/deleteById/{id}")
public void deleteById(@PathVariable("id") long id){
userRepository.deleteById(id);
}
@GetMapping("/findById/{id}")
public User findById(@PathVariable long id){
User user=userRepository.findById(id);
return user;
}
@PutMapping("/update")
public void update(@RequestBody User user){
userRepository.update(user);
}
@PostMapping("/save")
public void save(@RequestBody User user){
userRepository.save(user);
}
}
- 实体类User
package com.heal.entity;
import lombok.Data;
@Data
public class User {
private Long id;
private String name;
private String password;
private double score;
}
- UserRepository接口
package com.heal.repository;
import com.heal.entity.User;
import java.util.List;
public interface UserRepository {
public List<User> findAll();
public User findById(long id);
public void save(User user);
public void update(User user);
public void deleteById(long id);
public int count();
}
- Application启动类
package com.heal;
import org.mybatis.spring.annotation.MapperScan;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
@MapperScan("com.southwind.repository")
@SpringBootApplication
public class Application {
public static void main(String[] args) {
SpringApplication.run(Application.class,args);
}
}
- UserResitory.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.heal.repository.UserRepository">
<select id="findAll" resultType="User">
select * from user
</select>
<select id="count" resultType="int">
select count(id) from user
</select>
<select id="findById" parameterType="long" resultType="User">
select * from user where id = #{id}
</select>
<insert id="save" parameterType="User">
insert into user(name,password,score) values(#{name},#{password},#{score})
</insert>
<update id="update" parameterType="User">
update user set name = #{name},password=#{password},score = #{score} where id = #{id}
</update>
<delete id="deleteById" parameterType="long">
delete from user where id = #{id}
</delete>
</mapper>
- application.yml配置(严格按照缩进,yml是springboot的配置文件,通过缩进的方法进行层次的表现。server为设置端口,不写也可以默认使用8080端口,mybatis为设置一些相关配置,其中的mapper-location为mapping包下的所有xml文件,classpath为resource资源文件夹。type-aliases-package为包声明,只要这样我们在xml文件中才能直接的使用返回值为User,不然要带上包名。
server:
port: 9090
spring:
datasource:
url: jdbc:mysql://localhost:3306/test?useUnicode=true&characterEncoding=UTF-8
username: root
password: root
driver-class-name: com.mysql.cj.jdbc.Driver
mybatis:
mapper-locations: classpath:/mapping/*.xml
type-aliases-package: com.southwind.entity
7.运行springboot程序,在Application类上,右键直接运行
在浏览器进行测试,输入