版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
springboot集成mybatis(一)
项目结构:
创建项目的过程:
配置及Java文件:
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">
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.2.0.RELEASE</version>
<relativePath/> <!-- lookup parent from repository -->
</parent>
<groupId>com.ccb</groupId>
<artifactId>springboot-demo</artifactId>
<version>0.0.1-SNAPSHOT</version>
<name>springboot-demo</name>
<description>Demo project for Spring Boot</description>
<properties>
<java.version>1.8</java.version>
</properties>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.mybatis.spring.boot</groupId>
<artifactId>mybatis-spring-boot-starter</artifactId>
<version>1.3.2</version>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-jdbc</artifactId>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<scope>runtime</scope>
</dependency>
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<version>1.16.22</version>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
<exclusions>
<exclusion>
<groupId>org.junit.vintage</groupId>
<artifactId>junit-vintage-engine</artifactId>
</exclusion>
</exclusions>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
</project>
SpringbootDemoApplication.java
package com.ccb;
import org.mybatis.spring.annotation.MapperScan;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
@SpringBootApplication
@MapperScan("com.ccb.mapper")
public class SpringbootDemoApplication {
public static void main(String[] args) {
SpringApplication.run(SpringbootDemoApplication.class, args);
}
}
UserController.java
package com.ccb.controller;
import com.ccb.pojo.User;
import com.ccb.service.UserService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.HttpStatus;
import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.*;
@RestController
@RequestMapping("user")
public class UserController {
@Autowired
private UserService userService;
@PostMapping
public ResponseEntity<Void> insert(User user) {
userService.insert(user);
return ResponseEntity.status(HttpStatus.CREATED).build();
}
@DeleteMapping("{id}")
public ResponseEntity<Void> deleteUserById(@PathVariable Long id) {
userService.deleteUserById(id);
return ResponseEntity.status(HttpStatus.NO_CONTENT).build();
}
@PutMapping
public ResponseEntity<Void> updateUserById(User user) {
userService.updateUserById(user);
return ResponseEntity.status(HttpStatus.NO_CONTENT).build();
}
@GetMapping
public ResponseEntity<User> selectUserById(@RequestParam("id") Long id) {
return ResponseEntity.ok(userService.selectUserById(id));
}
}
UserService.java
package com.ccb.service;
import com.ccb.mapper.UserMapper;
import com.ccb.pojo.User;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
@Service
public class UserService {
@Autowired
private UserMapper userMapper;
@Transactional
public void insert(User user) {
userMapper.insert(user);
}
/*public void test(User user) {
insert(user);
int i = 1 / 0;
}*/
public void deleteUserById(Long id) {
userMapper.deleteUserById(id);
}
public void updateUserById(User user) {
userMapper.updateUserById(user);
}
public User selectUserById(Long id) {
return userMapper.selectUserById(id);
}
}
UserMapper.java
package com.ccb.mapper;
import com.ccb.pojo.User;
import org.springframework.stereotype.Repository;
@Repository
public interface UserMapper {
void insert(User user);
void deleteUserById(Long id);
void updateUserById(User user);
User selectUserById(Long id);
}
User.java
package com.ccb.pojo;
import lombok.Data;
import java.util.Date;
@Data
public class User {
private Long id;
private String userName;
private String password;
private String name;
private Integer age;
private Integer sex;
private Date birthday;
private Date created;
private Date updated;
private String note;
}
UserMapper.xml
<?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.ccb.mapper.UserMapper">
<insert id="insert" useGeneratedKeys="true" keyColumn="id" keyProperty="id">
INSERT INTO tb_user (
user_name,
password,
name,
age,
sex,
birthday,
note,
created,
updated
)
VALUES
(
#{userName},
#{password},
#{name},
#{age},
#{sex},
#{birthday},
#{note},
now(),
now()
);
</insert>
<delete id="deleteUserById">
delete from tb_user where id = #{id};
</delete>
<update id="updateUserById">
UPDATE tb_user
SET
user_name = #{userName},
password = #{password},
name = #{name},
age = #{age},
sex = #{sex},
birthday = #{birthday},
note = #{note},
updated = now()
WHERE
(id = #{id});
</update>
<select id="selectUserById" resultType="User">
select
id,
user_name,
password,
name,
age,
sex,
birthday,
note,
created,
updated
from
USER where id = #{id};
</select>
</mapper>
application.yml
spring:
datasource:
url: jdbc:mysql://localhost:3306/springbootdemo?serverTimezone=UTC
username: root
password: root
mybatis:
type-aliases-package: com.ccb.pojo
mapper-locations: classpath:mappers/*.xml
configuration:
log-impl: org.apache.ibatis.logging.stdout.StdOutImpl