MyBatis初级实战之一:Spring Boot集成

simple

org.mybatis.spring.boot

mybatis-spring-boot-starter

2.1.3

  • 至此,准备工作算是全部完成了,接下来咱们开始创建一个典型的Spring Boot集成MyBatis的项目吧;

Spring Boot集成MyBatis

  1. 在父工程mybatis之下新建名为simple的Spring Boot子工程,其pom.xml内容如下:
<?xml version="1.0" encoding="UTF-8"?>

<project xmlns=“http://maven.apache.org/POM/4.0.0” xmlns:xsi=“http://www.w3.org/2001/XMLSchema-instance”

xsi:schemaLocation=“http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd”>

4.0.0

com.bolingcavalry

mybatis

1.0-SNAPSHOT

…/pom.xml

com.bolingcavalry

simple

0.0.1-SNAPSHOT

simple

Demo project for Spring Boot

<java.version>1.8</java.version>

org.springframework.boot

spring-boot-starter-web

org.mybatis.spring.boot

mybatis-spring-boot-starter

2.1.3

mysql

mysql-connector-java

runtime

org.springframework.boot

spring-boot-starter-test

test

org.junit.vintage

junit-vintage-engine

org.springframework.boot

spring-boot-maven-plugin

  1. Spring Boot配置文件是simple/src/main/resources/application.yml,内容如下:

server:

port: 8080

spring:

数据源

datasource:

username: root

password: 123456

url: jdbc:mysql://192.168.50.43:3306/mybatis?useUnicode=true&characterEncoding=utf-8&useSSL=true&serverTimezone=UTC

driver-class-name: com.mysql.cj.jdbc.Driver

mybatis配置

mybatis:

配置文件所在位置

config-location: classpath:mybatis-config.xml

映射文件所在位置

mapper-locations: classpath:mappers/*Mapper.xml

日志配置

logging:

level:

root: INFO

com:

bolingcavalry:

simple:

mapper: debug

  1. 新建user表对应的实体类User.java:

package com.bolingcavalry.simple.entity;

/**

  • @Description: 实体类

  • @author: willzhao E-mail: zq2599@gmail.com

  • @date: 2020/8/4 8:24

*/

public class User {

private Integer id;

private String name;

private Integer age;

public Integer getId() {

return id;

}

public void setId(Integer id) {

this.id = id;

}

public String getName() {

return name;

}

public void setName(String name) {

this.name = name;

}

public Integer getAge() {

return age;

}

public void setAge(Integer age) {

this.age = age;

}

@Override

public String toString() {

return “User{” +

“id=” + id +

“, name='” + name + ‘’’ +

“, age=” + age +

‘}’;

}

}

  1. 新建log表对应的实体类Log.java:

package com.bolingcavalry.simple.entity;

import java.sql.Date;

/**

  • @Description: 实体类

  • @author: willzhao E-mail: zq2599@gmail.com

  • @date: 2020/8/4 8:24

*/

public class Log {

private Integer id;

private Integer userId;

private String action;

private Date createTime;

public Integer getId() {

return id;

}

public void setId(Integer id) {

this.id = id;

}

public Integer getUserId() {

return userId;

}

public void setUserId(Integer userId) {

this.userId = userId;

}

public String getAction() {

return action;

}

public void setAction(String action) {

this.action = action;

}

public Date getCreateTime() {

return createTime;

}

public void setCreateTime(Date createTime) {

this.createTime = createTime;

}

@Override

public String toString() {

return “Log{” +

“id=” + id +

“, userId=” + userId +

“, action='” + action + ‘’’ +

“, createTime=” + createTime +

‘}’;

}

}

  1. 接下来会新建三个配置文件,先来看下它们的位置,以免后面放错地方引起不必要的麻烦:

在这里插入图片描述

  1. application.yml所在目录下,新增名为mybatis-config.xml的文件,这是mybatis的配置文件,本例很简单只有一个配置,内容如下:
  1. resources/mappers目录下,新增名为UserMapper.xml的文件,和user表相关的查询都在此,本文只有一个查询user表的操作,注意下文中的resultType等于User,这里没有写User类的完整路径,是因为前面mybatis-config.xml文件中配置了typeAliases的package节点的缘故:
<?xml version="1.0" encoding="UTF-8"?>

select * from user where id = #{id}

  1. 再新增LogMapper.xml,如下所示,log表中的user_id字段在Log.java中没有同名的字段,因此要新增resultMap来建立数据库和实体类的字段映射关系,再在select节点用上这个关系,注意要用resultMap属性(UserMapper.xml中用的是resultType):
<?xml version="1.0" encoding="UTF-8"?>

select * from log where id = #{id}

  1. 接下来是业务要用到的接口文件,第一个是UserMapper.java:

package com.bolingcavalry.simple.mapper;

import com.bolingcavalry.simple.entity.User;

import org.springframework.stereotype.Repository;

@Repository

public interface UserMapper {

User sel(int id);

}

  1. 第二个是LogMapper.java:

package com.bolingcavalry.simple.mapper;

import com.bolingcavalry.simple.entity.Log;

import org.springframework.stereotype.Repository;

@Repository

public interface LogMapper {

Log sel(int id);

}

  1. 上述两个类都使用了Repository注解,作用是避免在编码过程中,IDEA给出红线提示,如下图:

在这里插入图片描述

  1. 映射配置完毕,接下来就可以在应用中使用了,先为user做一个service类UserService.java,里面通过Autowired注解注入UserMapper的实现:

package com.bolingcavalry.simple.service;

import com.bolingcavalry.simple.entity.User;

import com.bolingcavalry.simple.mapper.UserMapper;

import org.springframework.beans.factory.annotation.Autowired;

import org.springframework.stereotype.Service;

@Service

public class UserService {

@Autowired

UserMapper userMapper;

public User sel(int id){

return userMapper.sel(id);

}

}

  1. 再为log做service类LogService.java:

package com.bolingcavalry.simple.service;

import com.bolingcavalry.simple.entity.Log;

import com.bolingcavalry.simple.mapper.LogMapper;

import org.springframework.beans.factory.annotation.Autowired;

import org.springframework.stereotype.Service;

@Service

public class LogService {

@Autowired

LogMapper logMapper;

public Log sel(int id){

return logMapper.sel(id);

}

}

  1. 最后是响应web请求的controller类,第一个是UserController.java:

package com.bolingcavalry.simple.controller;

import com.bolingcavalry.simple.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

public class UserController {

@Autowired

private UserService userService;

@RequestMapping(“user/{id}”)

public String GetUser(@PathVariable int id){

return userService.sel(id).toString();

}

}

  1. 然后是LogController.java:

package com.bolingcavalry.simple.controller;

import com.bolingcavalry.simple.service.LogService;

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

public class LogController {

@Autowired

最后

自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。

深知大多数Java工程师,想要提升技能,往往是自己摸索成长,自己不成体系的自学效果低效漫长且无助。

因此收集整理了一份《2024年Java开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上Java开发知识点,不论你是刚入门Java开发的新手,还是希望在技术上不断提升的资深开发者,这些资料都将为你打开新的学习之门!

如果你觉得这些内容对你有帮助,需要这份全套学习资料的朋友可以戳我获取!!

由于文件比较大,这里只是将部分目录截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且会持续更新!
e;

import org.springframework.web.bind.annotation.RequestMapping;

import org.springframework.web.bind.annotation.RestController;

@RestController

public class LogController {

@Autowired

最后

自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。

深知大多数Java工程师,想要提升技能,往往是自己摸索成长,自己不成体系的自学效果低效漫长且无助。

因此收集整理了一份《2024年Java开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。

[外链图片转存中…(img-145kwLXq-1715832210604)]

[外链图片转存中…(img-qGvSinkG-1715832210605)]

[外链图片转存中…(img-jl78xtkR-1715832210605)]

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上Java开发知识点,不论你是刚入门Java开发的新手,还是希望在技术上不断提升的资深开发者,这些资料都将为你打开新的学习之门!

如果你觉得这些内容对你有帮助,需要这份全套学习资料的朋友可以戳我获取!!

由于文件比较大,这里只是将部分目录截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且会持续更新!

  • 4
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值