一、注解方式

pom

org.mybatis.spring.boot

mybatis-spring-boot-starter

2.0.0

mysql

mysql-connector-java

org.projectlombok

lombok

1.16.10

说明: springboot版本: 2.1.5.RELEASE

application.properties

# mysql

spring.datasource.url=jdbc:mysql://212.64.xxx.xxx:3306/test?autoR&useUnicode=true&characterEncoding=utf-8&allowMultiQueries=true

spring.datasource.username=xxx

spring.datasource.password=xxx

spring.datasource.driver-class-name=com.mysql.jdbc.Driver

3.在启动类中添加对 mapper 包扫描@MapperScan

package com.wangzaiplus.test;

import org.mybatis.spring.annotation.MapperScan;

import org.springframework.boot.SpringApplication;

import org.springframework.boot.autoconfigure.SpringBootApplication;

import org.springframework.context.annotation.Bean;

import org.springframework.web.cors.CorsConfiguration;

import org.springframework.web.cors.UrlBasedCorsConfigurationSource;

import org.springframework.web.filter.CorsFilter;

@SpringBootApplication

@MapperScan("com.wangzaiplus.test.mapper")

public class TestApplication {

public static void main(String[] args) {

SpringApplication.run(TestApplication.class, args);

}

/**

* 跨域

* @return

*/

@Bean

public CorsFilter corsFilter() {

final UrlBasedCorsConfigurationSource urlBasedCorsConfigurationSource = new UrlBasedCorsConfigurationSource();

final CorsConfiguration corsConfiguration = new CorsConfiguration();

corsConfiguration.setAllowCredentials(true);

corsConfiguration.addAllowedOrigin("*");

corsConfiguration.addAllowedHeader("*");

corsConfiguration.addAllowedMethod("*");

urlBasedCorsConfigurationSource.registerCorsConfiguration("/**", corsConfiguration);

return new CorsFilter(urlBasedCorsConfigurationSource);

}

}

说明: springboot项目添加corsFilter解决跨域问题

也可以直接在 Mapper 类上面添加注解@Mapper

mapper

package com.wangzaiplus.test.mapper;

import com.wangzaiplus.test.pojo.User;

import org.apache.ibatis.annotations.*;

import org.apache.ibatis.type.JdbcType;

import java.util.List;

public interface UserMapper {

@Select("select * from user")

@Results({

@Result(property = "username", column = "username", jdbcType = JdbcType.VARCHAR),

@Result(property = "password", column = "password")

})

List selectAll();

@Select("select * from user where id = #{id}")

@Results({

@Result(property = "username", column = "username", jdbcType = JdbcType.VARCHAR),

@Result(property = "password", column = "password")

})

User selectOne(Integer id);

@Insert("insert into user(username, password) values(#{username}, #{password})")

void insert(User user);

@Update("update user set username=#{username}, password=#{password} where id = #{id}")

void update(User user);

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

void delete(Integer id);

}

controller

package com.wangzaiplus.test.controller;

import com.wangzaiplus.test.pojo.User;

import com.wangzaiplus.test.service.UserService;

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

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

import java.util.List;

@RestController

@RequestMapping("/user")

public class UserController {

@Autowired

private UserService userService;

@GetMapping("users")

public String getAll() {

List users = userService.getAll();

return users.toString();

}

@GetMapping("{id}")

public String getOne(@PathVariable Integer id) {

User user = userService.getOne(id);

return user + "";

}

@PostMapping

public String add(User user) {

userService.add(user);

return "nice";

}

@PutMapping

public String update(User user) {

userService.update(user);

return "nice";

}

@DeleteMapping("{id}")

public String delete(@PathVariable Integer id) {

userService.delete(id);

return "nice";

}

}

说明: restful接口风格

service

package com.wangzaiplus.test.service;

import com.wangzaiplus.test.pojo.User;

import java.util.List;

public interface UserService {

List getAll();

User getOne(Integer id);

void add(User user);

void update(User user);

void delete(Integer id);

}

impl

package com.wangzaiplus.test.service.impl;

import com.wangzaiplus.test.mapper.UserMapper;

import com.wangzaiplus.test.pojo.User;

import com.wangzaiplus.test.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

private UserMapper userMapper;

@Override

public List getAll() {

return userMapper.selectAll();

}

@Override

public User getOne(Integer id) {

return userMapper.selectOne(id);

}

@Override

public void add(User user) {

userMapper.insert(user);

}

@Override

public void update(User user) {

userMapper.update(user);

}

@Override

public void delete(Integer id) {

userMapper.delete(id);

}

}

说明: 仅供示例, 逻辑严谨性暂不考虑

pojo

package com.wangzaiplus.test.pojo;

import lombok.Data;

@Data

public class User {

private Integer id;

private String username;

private String password;

}

说明: @Data lombok

9.sql

CREATE TABLE `user` (

`id` int(11) NOT NULL AUTO_INCREMENT,

`username` varchar(100) COLLATE utf8mb4_unicode_ci NOT NULL DEFAULT '',

`password` varchar(255) COLLATE utf8mb4_unicode_ci NOT NULL DEFAULT '',

PRIMARY KEY (`id`),

UNIQUE KEY `unq_username` (`username`)

) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

接口请求

add

update

delete

getOne

getAll

说明: 截图请求参数id与数据库id不对应问题, 这是由于我接口文档默认值设为1或2的, 请求成功后接口管理工具自动刷新显示默认值id=1了, 所以看着好像不对, 实际没问题

以上代码均通过测试

二、xml方式

pom文件节点下添加

src/main/java

**/*.xml

说明: 如果不添加此节点mybatis的mapper.xml文件都会被漏掉, 会出现org.apache.ibatis.binding.BindingException Invalid bound statement (not found)异常

mapper java

package com.wangzaiplus.test.mapper;

import com.wangzaiplus.test.pojo.User;

import java.util.List;

public interface UserMapper {

List selectAll();

User selectOne(Integer id);

void insert(User user);

void update(User user);

void delete(Integer id);

}

说明: 不需要@Select @Insert等注解了

新建UserMapper.xml文件

id, username, password

SELECT

FROM user

SELECT

FROM user

WHERE id = #{id}

INSERT INTO user(username, password) VALUES (#{username}, #{password})

UPDATE user SET

username = #{username},

password = #{password}

WHERE id = #{id}

DELETE FROM user WHERE id =#{id}

说明: 相当于将上个版本@Select @Insert注解用xml配置文件形式代替而已

其他都不需要修改

原文出处:https://www.cnblogs.com/wangzaiplus/p/10899962.html

mysql+xml+注释,springboot整合mybatis完整示例, mapper注解方式和xml配置文件方式实现(我们要优雅地编程)...相关推荐

  1. SpringBoot整合Mybatis,使用通用mapper和PageHelper进行分页

    乐哉码农 上节介绍了如何整合Security,这节就说下如何再Springboot下使用持久层框架mybatis和牛人封装的通用mapper与mybatis的整合,直接进入正题吧! 1.首先引入我们需 ...

  2. SpringBoot整合Mybatis完整详细版

    原文地址:https://blog.csdn.net/iku5200/article/details/82856621

  3. (一)SpringBoot 整合 MyBatis

    一.工具 IDE:idea.DB:mysql 二.创建SpringBoot工程 在Idea中使用SpringInitializr模板创建SpringBoot工程,依赖选择如下: 这里也可以不选JDBC ...

  4. SpringBoot整合Mybatis超详细流程

    SpringBoot整合Mybatis超详细流程 文章目录 SpringBoot整合Mybatis超详细流程 前言 详细流程 0.引入Mybatis 1.创建数据 2.创建程序目录 3.理解后台访问流 ...

  5. mybatis plugins_[MyBatis] SpringBoot 整合Mybatis

    现在基本上搭建一个简单的工程都是三剑客 springboot+mybatis+redis 之前整合Mybatis 都是按照SSM来,所以,这一次带来SpringBoot+MyBatis 的快速整合 p ...

  6. springboot整合mybatis实现简单的单表增删改查(完整代码可下载)

    搭建项目 项目简单效果,前端效果丑的一批,主要是后端功能实现: springboot增删改查 csdn完整代码下载链接: springboot+mybatis Gitee下载地址: Gitee下载地址 ...

  7. Springboot 整合 Mybatis 的完整 Web 案例

    2019独角兽企业重金招聘Python工程师标准>>> 摘要: 原创出处:www.bysocket.com 泥瓦匠BYSocket 希望转载,保留摘要,谢谢! 推荐一本书<腾讯 ...

  8. SpringBoot整合MyBatis与MySql8.0

    一.前言 之前已经有一篇文章讨论过SpringBoot整合MyBatis,因而此篇不在重复累赘,本文主要是最新版的SpringBoot2.0与MyBatis.最新MySQL8.0整合过程中遇到的问题进 ...

  9. SpringBoot整合mybatis、shiro、redis实现基于数据库的细粒度动态权限管理系统实例(转)...

    SpringBoot整合mybatis.shiro.redis实现基于数据库的细粒度动态权限管理系统实例 shiro 目录(?)[+] 前言 表结构 maven配置 配置Druid 配置mybatis ...

最新文章

  1. Linux iterm 快捷键
  2. ABAP 屏幕上动态修改按钮的图标
  3. 研究生调剂!!急!!!跪求解答!!?
  4. C 程序更有效率的 10 种方法
  5. vue-cli安装教程
  6. 使用Eclipse构建Maven项目 (step-by-step)
  7. idea中ssm自动配置
  8. 单项选择题标准化考试系统设计c语言版
  9. python,爬取图片
  10. 冰川时代4中英台词全集
  11. Doris export任务概率性cancelled
  12. 多元逻辑回归 · 数学推导过程及代码实现完全解析
  13. 【步兵 经验篇】one step
  14. 2021年大数据工程师面试内容包括哪些?
  15. R5 4650G和R5 5600G差距
  16. 模糊测试工具Sulley开发指南(2)——与Peach比较
  17. c++ 使用递归求解回文序列问题
  18. HGETALL key
  19. 2020年卫星行业研究报告
  20. CF 192 DIV.2

热门文章

  1. Spring框架基于AspectJ的AOP开发规范和步骤
  2. 《漫画算法》源码整理-4 大顶堆 小顶堆 优先队列
  3. git rebase教程
  4. TCP/IP之大明内阁---协议的制定
  5. elasticsearch 第一篇(入门篇)
  6. 机器学习入门资源不完全汇总
  7. 借助混沌工程工具 ChaosBlade 构建高可用的分布式系统
  8. 使用FFmpeg进行视频抽取音频,之后进行语音识别转为文字
  9. MySQL 5.7 安装指南
  10. 实现基于渠道和buildType(debug,release)的打包