前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >【原创】007 | 搭上SpringBoot实战专车系列七:集成数据访问层mybatis

【原创】007 | 搭上SpringBoot实战专车系列七:集成数据访问层mybatis

作者头像
java进阶架构师
发布2021-02-22 14:29:20
2380
发布2021-02-22 14:29:20
举报
文章被收录于专栏:Java进阶架构师Java进阶架构师

专车介绍

该趟专车是开往SpringBoot集成Mybatis的实战专车,主要讲解Spring Boot如何集成数据访问层Mybatis框架,从而实现数据增、删、改、查持久化功能。

专车问题

第一个问题:SpringBoot集成数据访问框架Mybatis需要哪些步骤?

专车实战

第一步:在父模块下创建一个名为boot-example-mybatis的子模块

第二步:在子模块中添加需要的依赖

代码语言:javascript
复制
<dependencies>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-web</artifactId>
    </dependency>

    <dependency>
        <groupId>org.projectlombok</groupId>
        <artifactId>lombok</artifactId>
    </dependency>

    <dependency>
        <groupId>mysql</groupId>
        <artifactId>mysql-connector-java</artifactId>
    </dependency>

    <dependency>
        <groupId>org.mybatis.spring.boot</groupId>
        <artifactId>mybatis-spring-boot-starter</artifactId>
    </dependency>
</dependencies>

第三步:配置数据源信息

代码语言:javascript
复制
spring:
  datasource:
    url: jdbc:mysql://127.0.0.1:3306/test?useUnicode=true&characterEncoding=utf-8&useSSL=false
    username: root
    password: root
    type: com.zaxxer.hikari.HikariDataSource
    hikari:
      minimum-idle: 10
      maximum-pool-size: 10
      auto-commit: true
      idle-timeout: 30000
      pool-name: DatebookHikariCP
      max-lifetime: 1800000
      connection-timeout: 30000
      connection-test-query: SELECT 1

第四步:指定mybatis xml文件路径

代码语言:javascript
复制
mybatis:
  mapperLocations: 'classpath*:mapper/**/*.xml'

第五步:编写实体类

代码语言:javascript
复制
@Data
public class User {

    private Integer id;

    private String name;

    private Integer age;
}

第六步:编写mapper接口

代码语言:javascript
复制
@Mapper
public interface UserMapper {

    /**
     * 查询用户列表信息
     * @return 用户列表信息
     */
    List<User> list();

    /**
     * 根据编号查询用户信息
     * @param id 用户id
     * @return 用户信息
     */
    User getById(Integer id);

    /**
     * 新增用户
     * @param user 用户信息
     * @return 受影响的行数
     */
    int save(User user);

    /**
     * 修改用户
     * @param user 用户信息
     * @return 受影响的行数
     */
    int update(User user);
}

特别注意:mapper接口上必须要使用@Mapper注解标注

第七步:编写业务层

代码语言:javascript
复制
@Service
public class UserService {

    @Autowired
    private UserMapper userMapper;

    /**
     * 查询用户列表信息
     * @return 用户列表信息
     */
    public List<User> list() {
        return userMapper.list();
    }

    /**
     * 根据编号查询用户信息
     * @param id 用户id
     * @return 用户信息
     */
    public User getById(Integer id) {
        return userMapper.getById(id);
    }

    /**
     * 新增用户
     * @param user 用户信息
     * @return 受影响的行数
     */
    public int save(User user) {
        return userMapper.save(user);
    }

    /**
     * 修改用户
     * @param user 用户信息
     * @return 受影响的行数
     */
    public int update(User user) {
        return userMapper.update(user);
    }
}

第八步:编写控制器

代码语言:javascript
复制
@RestController
@RequestMapping("/users")
public class UserController {

    @Autowired
    private UserService userService;

    /**
     * 查询用户列表信息
     * @return 用户列表信息
     */
    @GetMapping("/")
    public List<User> list() {
        return userService.list();
    }

    /**
     * 根据编号查询用户信息
     * @param id 用户id
     * @return 用户信息
     */
    @GetMapping("/id/{id}")
    public User getById(@PathVariable("id") Integer id) {
        return userService.getById(id);
    }

    /**
     * 新增用户
     * @param user 用户信息
     * @return 受影响的行数
     */
    @PostMapping("/")
    public int save(@RequestBody User user) {
        return userService.save(user);
    }

    /**
     * 修改用户
     * @param user 用户信息
     * @return 受影响的行数
     */
    @PutMapping("/")
    public int update(@RequestBody User user) {
        return userService.update(user);
    }
}

第九步:编写启动类

代码语言:javascript
复制
@SpringBootApplication
public class MybatisApplication {

    public static void main(String[] args) {
        SpringApplication.run(MybatisApplication.class, args);
    }
}

第十步:在resources目录下创建mapper目录,然后在mapper目录下创建UseMapper.xml

代码语言:javascript
复制
<?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.boot.example.mapper.UserMapper">

    <sql id="BASE_SELECT_COLUMN">
        id,
        name,
        age
    </sql>

    <select id="list" resultType="com.boot.example.entity.User">
        SELECT
            <include refid="BASE_SELECT_COLUMN"/>
        FROM
            user
    </select>

    <select id="getById" parameterType="integer" resultType="com.boot.example.entity.User">
        SELECT
            <include refid="BASE_SELECT_COLUMN"/>
        FROM
            user
        WHERE id = #{id}
    </select>

    <insert id="save" parameterType="com.boot.example.entity.User">
        INSERT INTO user VALUES(#{id}, #{name}, #{age})
    </insert>

    <update id="update" parameterType="com.boot.example.entity.User">
        UPDATE user SET name = #{name}, age = #{age} WHERE id = #{id}
    </update>
</mapper>

第十一步:启动项目

访问用户列表接口:http://localhost:8080/users/ GET

代码语言:javascript
复制
[
    {
        "id": 10001,
        "name": "test",
        "age": 22
    },
    {
        "id": 10008,
        "name": "test88",
        "age": 88
    },
    {
        "id": 20001,
        "name": "boot-upd",
        "age": 24
    },
    {
        "id": 30001,
        "name": "smile",
        "age": 22
    },
    {
        "id": 100011,
        "name": "test101",
        "age": 101
    },
    {
        "id": 100012,
        "name": "test102",
        "age": 102
    },
    {
        "id": 100013,
        "name": "111",
        "age": 22
    }
]

访问查看用户信息接口:http://localhost:8080/users/id/10001 GET

代码语言:javascript
复制
{
    "id": 10001,
    "name": "test",
    "age": 22
}

访问新增用户接口 :http://localhost:8080/users/ POST

请求参数:

代码语言:javascript
复制
{
	"id":"20001",
	"name":"boot-save",
	"age":"28"
}

访问修改用户接口:http://localhost:8080/users/ PUT

请求参数:

代码语言:javascript
复制
{
	"id":"20001",
	"name":"boot-upd",
	"age":"24"
}

专车总结

第一个问题:SpringBoot集成数据访问框架Mybatis需要如下步骤:

①添加Mybatis对应的starter

②添加java操作mysql的依赖

③配置数据源

④配置mybatis xml文件路径

⑤在mapper接口上使用@Mapper注解标注

专车思考

如上示例通过@Mapper注解来标注一个mapper接口,让mybatis starter能够识别mapper接口,从而对mapper接口进行代理,实现数据访问层功能。这也就意味着每写一个mapper接口,就要加上一个@Mapper注解,无疑增加了开发负担,有没有一种实现方式可以避免这种重复的劳动?答案会在下一篇实战专车中揭晓,敬请期待。

专车地址

[SpringBoot集成数据访问框架Mybatis](https://github.com/a601942905git/boot-example/tree/master/boot-example-mybatis)

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2021-02-04,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 java进阶架构师 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 专车介绍
  • 专车问题
  • 专车实战
  • 专车总结
  • 专车思考
  • 专车地址
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档