Spring-boot + MySQL + MyBatis
准备工作
- IntelliJ IDEA旗舰版2019.1.4
- MySQL 8.0.12
创建一个user表
- 在数据库demo中创建一个user表,包含字段id,name,gender
数据库的基本知识可查看:小磊福利 - 命令如下:
create database if not exists demo character set utf8;use demo;create table user(id int,name varchar(20),gender varchar(1));insert into user(id,name,gender) values(01,'张三','男');insert into user(id,name,gender) values(02,'李四','女');insert into user(id,name,gender) values(03,'王五','男');select id,name,gender from user;
- 返回如下信息:
搭建Spring Boot框架
pox.xml中添加如下依赖,注意自己的MySQL版本
<!-- 添加 MyBatis --><dependency> <groupId>org.mybatis.spring.boot</groupId> <artifactId>mybatis-spring-boot-starter</artifactId> <!-- 注意官网的更新,旧版也不是不可以 --> <version>1.3.2</version></dependency> <!-- 添加 MySQL --> <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> <!-- 我的版本是8.0.12 --> <version>8.0.12</version> </dependency>
在 resources/application.properties中添加下列语句连接–数据库
spring.datasource.url=jdbc:mysql://localhost:3306/demo?useUnicode=true&characterEncoding=UTF-8&serverTimezone=Asia/Shanghaispring.datasource.username=rootspring.datasource.password=rootspring.datasource.driver-class-name=com.mysql.cj.jdbc.Drivermybatis.type-aliases-package=com.example.demo.mapperserver.port=8081
- spring.datasource.url数据库连接字符串,3306是MySQL的默认端口,demo是表所在的数据库,后面的参数直接复制即可,之前有个时区参数忘记加上去总是报错
- spring.datasource.username:数据库用户名
- spring.datasource.password:用户名密码
- spring.datasource.driver-class-name 驱动类型
- mybatis.type-aliases-package 配置mapper包名
源码来了
分为三部分:实体类、Mapper接口、Controller类,Controller类直接调用Mapper接口进行数据持久化处理。
实体类
- 新建一个entity包,在里面新建一个User类
package com.example.demo.entity;public class User { private int id; private String name; private String gender;}
右键-Generate…-Getter and Setter 或 Alt+Insert+Getter and Setter,全都选上点击OK。
![](https://i-blog.csdnimg.cn/blog_migrate/2237de1d7b214f37229395536f5c2522.png)
![](https://i-blog.csdnimg.cn/blog_migrate/ad4eef7d31ad533b14c3e5fac57c582e.png)
Mapper接口
- 新建一个mapper包,在这个包中新建一个UserMapper接口。具体代码如下:
package com.example.demo.mapper;import com.example.demo.entity.User;import org.apache.ibatis.annotations.*;import org.springframework.stereotype.Repository;import java.util.List;@Repositorypublic 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},gender=#{gender} where id=#{id}"}) void Update(User user); @Delete("delete from user where id=#{id}") void delete(int id);}
- @Select查询注解
- @Results结果集标识,用来对应数据库列名,如果实体类属性和数据库属性名保持一致,可以 忽略此参数
- @Insert插入注解
- @Update修改注解
- @Delete删除注解
完成上述操作后,在主程序入口添加@Mapper(‘com.example.demo.mapper’)。
Controller类
package com.example.demo.web;import com.example.demo.entity.User;import com.example.demo.mapper.UserMapper;import org.springframework.beans.factory.annotation.Autowired;import org.springframework.web.bind.annotation.GetMapping;import org.springframework.web.bind.annotation.RestController;import java.util.List;@RestControllerpublic class UserController { @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); }}
测试阶段
- 查询所有数据 :localhost:8081/getAll
- 查询单挑记录 : localhost:8081/get?id=3
- 增加数据 : localhost:8081/install?id=4&name=石磊&gender=男
- 删除数据 : localhost:8081/delete?id=1
- 修改数据 : localhost:8081/update?id=4&name=小磊真帅&gender=男
别忘了打赏哟
![](https://i-blog.csdnimg.cn/blog_migrate/93163605d395c0c4a936e280a47f66b9.png)
转载请注明来源,欢迎对文章中的引用来源进行考证,欢迎指出任何有错误或不够清晰的表达。可以在下面评论区评论,也可以邮件至 2113132982@qq.com