一:入门案例
1:先新建一个module ==> java版本设置为8 ==> 找到以下的组件,勾选,Finish
2:按照下图所示编写结构
-
controller层 UserController类 ? package com.mybatis.mybatis.controller;
import com.mybatis.mybatis.entity.User;
import com.mybatis.mybatis.service.UserService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;
import java.util.List;
@Controller
public class UserController {
@Autowired
UserService userService;
@RequestMapping("getusers")
@ResponseBody
public List<User> findAllUser(){
return userService.findAllUser();
}
}
-
dao层 UserMapper类 package com.mybatis.mybatis.dao;
import com.mybatis.mybatis.entity.User;
import org.apache.ibatis.annotations.Mapper;
import java.util.List;
@Mapper
public interface UserMapper {
public List<User> findAllUser();
}
-
entity层 User类 package com.mybatis.mybatis.entity;
import lombok.Data;
@Data
public class User {
private int id;
private String name;
private int age;
}
-
service层 UserServiceImpl类 package com.mybatis.mybatis.service.impl;
import com.mybatis.mybatis.dao.UserMapper;
import com.mybatis.mybatis.entity.User;
import com.mybatis.mybatis.service.UserService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.List;
@Service
public class UserServiceImpl implements UserService {
@Autowired
UserMapper userMapper;
@Override
public List<User> findAllUser() {
return userMapper.findAllUser();
}
}
UserService类 package com.mybatis.mybatis.service;
import com.mybatis.mybatis.entity.User;
import java.util.List;
public interface UserService {
public List<User> findAllUser();
}
3:在resource下新建mappers文件夹,创建UserMapper.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.mybatis.mybatis.dao.UserMapper">
<select id="findAllUser" resultType="com.mybatis.mybatis.entity.User">
select * from user
</select>
</mapper>
4:修改application.properties
如果在新建项目的时候采用的是阿里云的代理的话,这个文件下会有自动生成的代码(也需要修改)
其他的可能没有,可以增加以下代码
# 应用名称
spring.application.name=mybatis
# 应用服务 WEB 访问端口
server.port=8080
# 数据库驱动:
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
# 数据源名称
spring.datasource.name=defaultDataSource
# 数据库连接地址
spring.datasource.url=jdbc:mysql://localhost:3306/mybatis?serverTimezone=UTC
# 数据库用户名&密码:
spring.datasource.username=账号
spring.datasource.password=密码
#下面这些内容是为了让MyBatis映射
#指定Mybatis的Mapper文件
mybatis.mapper-locations=classpath:mappers/*xml
#指定Mybatis的实体目录
mybatis.type-aliases-package=com.mybatis.mybatis.entity
# 打印一些日志,mybatis打印SQL语句
logging.level.com.mybatis.mybatis=debug
修改对应的数据库的账号密码,访问的数据库名、文件路径都对应修改成自己本机的设置。
最后运行MybatisApplication,进入浏览器输入http://localhost:8080/getusers就会显示出数据。
二:入门案例优化
注解的修改
修改Controller层的注解
-
@Controller修改成@RestController, @RestController = @Controller + @ResponseBody 这样写之后,后续就不用每个接口都加一个@ResponseBody了
修改Controller层中查询的接口findAllUser
-
将@RequestMapping(“getusers”)修改为@PostMapping(“getusers”) @RequestMapping的功能很全面,会自动生成包含GET,HEAD,POST等等各种接口 但事实上可以做简化的,比如在查询中我们仅仅需要用到POST就行了
增加删除功能
? 在UserMapper.xml增加对应的sql删除语句
<delete id="deleteUserById" parameterType="Integer">
delete from user where id=#{userid}
</delete>
-
在service层增加代码 UserService public int deleteUserById(int userid);
UserServiceImpl @Override
public int deleteUserById(int userid) {
return userMapper.deleteUserById(userid);
}
-
在controller层增加代码 UserController @GetMapping("deleteUserById/{userid}")
public int deleteUserById(@PathVariable int userid){
return userService.deleteUserById(userid);
}
测试的时候直接在地址栏输入 localhost:8080/deleteUserById/3 (3是需要删除的对应id)
增加新增的功能
<insert id="addUser" parameterType="com.mybatis.mybatis.entity.User">
insert into user (name,age) values (#{name},#{age})
</insert>
@PostMapping("addUser")
public int addUser(@RequestBody User user){
return userService.addUser(user);
}
这样写接口就已经写完了,但是实际上这样不方便检测,所以我们需要用到Swagger工具来方便检测。
Swagger的使用
<dependency>
<groupId>io.springfox</groupId>
<artifactId>springfox-swagger2</artifactId>
<version>2.8.0</version>
</dependency>
<dependency>
<groupId>io.springfox</groupId>
<artifactId>springfox-swagger-ui</artifactId>
<version>2.8.0</version>
</dependency>
package com.mybatis.mybatis.utils;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import springfox.documentation.builders.ApiInfoBuilder;
import springfox.documentation.builders.PathSelectors;
import springfox.documentation.builders.RequestHandlerSelectors;
import springfox.documentation.service.ApiInfo;
import springfox.documentation.spi.DocumentationType;
import springfox.documentation.spring.web.plugins.Docket;
import springfox.documentation.swagger2.annotations.EnableSwagger2;
@Configuration
@EnableSwagger2
public class Swagger2 {
@Bean
public Docket createRestApi() {
return new Docket(DocumentationType.SWAGGER_2)
.apiInfo(apiInfo())
.select()
.apis(RequestHandlerSelectors.basePackage("com.mybatis.mybatis.controller"))
.paths(PathSelectors.any())
.build();
}
private ApiInfo apiInfo() {
return new ApiInfoBuilder()
.title("Spring Boot Swagger2 构建RESTful API")
.termsOfServiceUrl("http://www.github.io/")
.version("1.0")
.description("API 描述")
.build();
}
}
- 在controller层上新增一个 @Api(tags = “用户类”) 注解,和@RestController一个位置
然后访问http://localhost:8080/swagger-ui.html#/就可以进入swagger了,找到其中新增接口,点击try it out ,在中间的编辑框中编写自己要新增的json数据(格式要对应),然后点击 Execute执行,就可以正确的在数据库中新增数据了。
最后还可以增加一个修改的功能,和新增的代码类似度较高,UserMapper.xml中的代码如下,其他层的代码就不罗列了
<update id="updateUser" parameterType="com.mybatis.mybatis.entity.User">
update user set name = #{name},age = #{age} where id = #{id}
</update>
|