Springboot整合Mybatis
步骤一、引入相关依赖
<!-- 引入alibab 的Druid数据源,SpringBoot默认使用的是Tomcat的数据源 -->
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>druid</artifactId>
<version>1.2.3</version>
</dependency>
<!-- mysql驱动 -->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
</dependency>
<!--mybatis-->
<dependency>
<groupId>org.mybatis.spring.boot</groupId>
<artifactId>mybatis-spring-boot-starter</artifactId>
<version>1.3.2</version>
</dependency>
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<scope>provided</scope>
</dependency>
步骤二、配置数据源
spring:
datasource:
url: jdbc:mysql://localhost:3306/testing?useSSL=false
username: root
password: root
#配置自定义的数据源而不是使用默认的Tomcat的数据源
type: com.alibaba.druid.pool.DruidDataSource
步骤三、编写数据对象和Mapper(基于注解)
package com.example.demo.entity;
import lombok.Data;
@Data
public class User {
Long id;
String name;
}
package com.example.demo.mapper;
import org.apache.ibatis.annotations.Insert;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Options;
import com.example.demo.entity.User;
@Mapper
public interface UserMapper {
@Insert("insert into tb_user(name) values(#{name})")
@Options(useGeneratedKeys = true, keyProperty = "id") // 将插入数据生成的主键绑定到方法参数user中
int insert(User user);
}
步骤四、编写Service和Controller
package com.example.demo.service;
import java.util.List;
import com.example.demo.entity.User;
public interface UserService {
int insert(User user);
}
package com.example.demo.service.impl;
import java.util.List;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import com.example.demo.entity.User;
import com.example.demo.mapper.UserMapper;
import com.example.demo.service.UserService;
@Service
public class UserServiceImpl implements UserService{
@Autowired
UserMapper userMapper;
@Override
@Transactional
public int insert(User user) {
return userMapper.insert(user);
}
}
package com.example.demo.controller;
import java.util.Objects;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.HttpStatus;
import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RestController;
import com.example.demo.SpringbootDemoApplication;
import com.example.demo.entity.User;
import com.example.demo.service.UserService;
@RestController
public class UserController {
Logger logger = LoggerFactory.getLogger(SpringbootDemoApplication.class);
@Autowired
UserService userService;
@PostMapping("/save")
public ResponseEntity<User> insert(@RequestBody User user) {
logger.info("/save - " + user);
int count = userService.insert(user);
logger.info("/save - count:" + count);
if (count == 0) {
return new ResponseEntity<>(HttpStatus.EXPECTATION_FAILED);
}
// 此时的user的id属性中已经被赋值为创建记录时生成的主键的值
return ResponseEntity.ok(user);
}
}
运行项目,通过postman创建一个post请求 http://localhost:9090/dev/save
请求Body中输入json:
{"name":"testing"}
请求成功