IDEA+Spring Boot+Mybatis+MySQL整合

准备工作

  • IntelliJ IDEA旗舰版2019.3.2
  • MySQL 8.0.19

创建一个表

在数据库demo中创建一个user表,包含字段id,name,gender

想偷懒的话在MySQL命令行粘贴下面的内容:

    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 from user;

返回如下信息

    mysql> select id,name from user;
	+------+------+
	| id   | name |
	+------+------+
	|    1 | 张三 |
	|    2 | 李四 |
	|    3 | 王五 |
	+------+------+
	3 rows in set (0.00 sec)

搭建Spring Boot框架

参照上一篇文章

pom.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.19 -->
            <version>8.0.19</version>
        </dependency>

resources\application.properties中添加下列语句连接数据库

    spring.datasource.url=jdbc:mysql://localhost:3306/demo?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.example.demo.mapper
  • spring.datasource.url 数据库连接字符串,3306是MySQL的端口,demo是表所在的库,后面的参数直接复制就好了,之前有个时区参数忘记加上去总是报错
  • 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.example.demo.entity;

	public class User {
   		private int id;
    	private String name;
    	private String gender;
		//全都是private那咋处理嘛,不要着急,往下看
	}

右键-Generate…-Getter and Setter

Alt+Insert+Getter and Setter

全都选上点击OK,IDEA就是这么舒服

Mapper接口

我们新建一个mapper包
在这个包新建一个UserMapper接口,利用注解实现SQL指令

    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;
	
	@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},gender=#{gender} where id=#{id}"})
    	void Update(User user);

    	@Delete("delete from user where id=#{id}")
    	void delete(int id);
	}

@Select 查询注解

@Result 结果集标识,用来对应数据库列名的,如果实体类属性和数据库属性名保持一致,可以忽略此参数

@Insert 插入注解

@Update 修改注解

@Delete 删除注解

完成这步之后我们在主程序入口添加一个
@MapperScan("com.example.demo.mapper")
这样就不用每个Mapper都注解一次了,记得改成自己的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;

	@RestController
	public 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);
	    }
	}

测试

查询所有数据

	http://localhost:8080/getAll

在这里插入图片描述

为了美观其实可以写个toString方法变成换行输出,这里纯粹偷懒

增加数据

	http://localhost:8080/install?id=4&name=孙六&gender=男

在这里插入图片描述

删除数据

	http://localhost:8080/delete?id=4

在这里插入图片描述

修改数据

	http://localhost:8080/update?id=3&name=王六&gender=女

在这里插入图片描述

后续可以完善模糊查找之类的

  • 3
    点赞
  • 2
    评论
  • 13
    收藏
  • 一键三连
    一键三连
  • 扫一扫,分享海报

©️2021 CSDN 皮肤主题: 深蓝海洋 设计师:CSDN官方博客 返回首页
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、C币套餐、付费专栏及课程。

余额充值