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

一、注解方式

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

f0818789de3f21ffcf56f001513168e6.png

39408ab35d6e4e67d24a8ae41ac7cd0a.png

update

1a2420bf959ea96e0adb4ad746843129.png

87efa1f3808522dc7c401df05c7ad5f0.png

delete

6ddbda489050b20615d24ac9282e32f9.png

52fd2b3e8e7e737d3bc509a3b0db74c6.png

getOne

3c88c8ee75f173bf944f374faa1e2464.png

getAll

4867a5296ab2a79b96ef0f80cb162095.png

说明: 截图请求参数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

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值