前言
虽然之前跟着别人的视频做了一个SpringBoot的一个小项目,但是一直不太明白怎么将SpringBoot和Mybatis整合在一起,所以,今天花了一点时间用他们做了一个demo,并作了以下的总结,帮助自己更好的掌握好他们的使用.
项目搭建
创建项目
- 新建一个Spring Initializr项目
- 创建项目的文件结构以及jdk的版本
此demo选择的JDK版本为1.8
- 选择项目所需要的依赖
在WEB里面选择”Spring Web Starter”
在SQL里面选择”Mysql Driver” “JDBC API” “Mybatis Framework”
在Developer Tools里面选择”Lombok” - 完成项目创建
数据库准备
1 create table user 2 ( 3 id INTEGER auto_increment, 4 user_name varchar(30) not null, 5 password varchar(30) not null, 6 constraint user_pk 7 primary key (id) 8 );
项目构建
-
entity类
package com.example.entity; import lombok.Data; @Data public class User { private Integer id; private String userName; private String password; }
原本需要写get\set方法,但是由于使用了lombok下的@Data,再在IDEA中引入一个插件即可便捷管理实体类,不需要繁琐的get\set\toString方法.
插件的安装只需要正在IDEA的设置里面搜索”lombok”即可.
- Controller类
package com.example.controller; import com.example.service.UserService; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.PathVariable; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; @RestController @RequestMapping("/userController") public class UserController { @Autowired private UserService userService; @RequestMapping("getUser/{id}") public String getUser(@PathVariable int id) { String user = userService.selectUserById(id).toString(); return user; } }
通过RequestMapping访问我们控制类中的方法,得到传入id对应的User对象的值.所以,我们就需要定义一个UserService来实现查找的方法.
- Service类
package com.example.service; import com.example.entity.User; import com.example.mapper.UserMapper; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; @Service public class UserService { @Autowired private UserMapper userMapper; public User selectUserById(int id) { return userMapper.selectUserById(id); } }
在Service类中,通过Mapper映射的方式,调用Mapper里的接口,而在Mapper接口里面,我们完成和Mybatis的结合.
- Mapper接口 和 Mapper.xml
package com.example.mapper; import com.example.entity.User; import org.springframework.stereotype.Repository; @Repository public interface UserMapper { User selectUserById(int id); }
此接口和xml文件里面相互对应,使用mybatis简化以往JDBC对数据库的操作,只需要在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.mapper.UserMapper"> <resultMap id="BaseResultMap" type="com.example.entity.User"> <result column="id" jdbcType="INTEGER" property="id" /> <result column="user_name" jdbcType="VARCHAR" property="userName" /> <result column="password" jdbcType="VARCHAR" property="password" /> </resultMap> <select id="selectUserById" resultMap="BaseResultMap"> select * from user where id = #{id} </select> </mapper>
在mapper的xml文件中需要注意namespace要和mapper接口相对应,sql语句的id要和mapper接口中的方法相对应,以及ResultMap里面column要和数据库中表的列名相对应.
- application配置文件
server: port: 8080 spring: datasource: url: jdbc:mysql://localhost:3306/mybatis_user?useUnicode=true&characterEncoding=utf-8&useSSL=true&serverTimezone=UTC driver-class-name: com.mysql.cj.jdbc.Driver username: root password: password mybatis: mapper-locations: classpath:mapping/*Mapper.xml type-aliases-package: com.example.entity
在以上过程中,即可根据需要配置application文件,此项目使用application.yml作为配置文件.
- server.port:表示项目运行在本地的8080端口.
- spring.datasource.*:表示连接数据库的配置
- mybatis:对mybatis的实体类,xml租借进行声明,让xml和mapper接口能对应起来
项目运行
在springboot运行文件上加个@MapperScan(“com.example.mapper”)给出mapper接口的访问路径,可以让springboot能扫描到mapper接口.
最后在访问链接 http://127.0.0.1:8080/userController/getUser/1 即可实现.在网页页面显示user对象的数据内容
原文地址:https://www.cnblogs.com/guming1125/p/11351074.html