SpringBoot+Mybatis整合Mysql数据库的Demo
这是一个很老的学习demo项目了,记录一下,留作回忆,这是一个SpringBoot+Mybatis整合Mysql数据库的Demo
首先创建mysql库
mysql> create database boot_example;
Query OK, 1 row affected (0.01 sec)
mysql> use boot_example;
导入相关数据
DROP TABLE IF EXISTS `boot_user`;
CREATE TABLE `boot_user` (
`user_id` bigint NOT NULL AUTO_INCREMENT COMMENT '主键id',
`user_name` varchar(32) DEFAULT NULL COMMENT '用户名',
`user_nickname` varchar(32) DEFAULT '' COMMENT '昵称',
`user_password` varchar(32) DEFAULT '' COMMENT '密码',
`user_sex` int DEFAULT '0' COMMENT '0:未知,1:男,2:女',
`user_create_time` datetime DEFAULT NULL COMMENT '创建时间',
PRIMARY KEY (`user_id`),
UNIQUE KEY `user_name` (`user_name`)
) ENGINE=InnoDB AUTO_INCREMENT=16 DEFAULT CHARSET=utf8mb3;
LOCK TABLES `boot_user` WRITE;
INSERT INTO `boot_user` VALUES (3,'15244894574','小孙','12345678',27,'2019-07-02 15:40:55'),(4,'18030448064','小壳','12345678',26,'2019-07-02 15:44:47'),(6,'18030448065','小鸡','12345678',26,'2019-07-02 15:46:40'),(8,'17734544321','小孙','12345678',27,'2019-07-02 17:21:47'),(9,'17734544331','小美','12345678',27,'2019-07-02 17:23:14'),(10,'17734544332','小礼','12345678',27,'2019-07-02 17:25:03'),(11,'17734544334','小赢','12345678',27,'2019-07-02 17:28:34'),(12,'17734544336','小迷','12345678',27,'2019-07-02 17:30:36'),(13,'17734544337','小寒','12345678',27,'2019-07-02 17:33:05'),(14,'17734544354','小孙','12345678',27,'2019-07-03 08:03:44'),(15,'17734544358','小夏','12345678',28,'2019-07-05 17:32:43');
UNLOCK TABLES;
pom.xml
<?xml version="1.0"?>
<project
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"
xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>boot-example</groupId>
<artifactId>boot-example</artifactId>
<version>1.0.0-SNAPSHOT</version>
</parent>
<groupId>boot-example-mybatis-xml</groupId>
<artifactId>boot-example-mybatis-xml</artifactId>
<name>boot-example-mybatis-xml</name>
<url>http://maven.apache.org</url>
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
<java.version>1.8</java.version>
</properties>
<dependencies>
<!-- 单元测试组件 -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
<!-- web组件 -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<!-- mybatis组件 -->
<dependency>
<groupId>org.mybatis.spring.boot</groupId>
<artifactId>mybatis-spring-boot-starter</artifactId>
<version>1.1.1</version>
</dependency>
<!-- mysql数据源 -->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
</dependency>
<!-- 热部署devtools工具组件 -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-devtools</artifactId>
<optional>true</optional>
</dependency>
<!-- junit单元测试框架 -->
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<scope>test</scope>
</dependency>
</dependencies>
<build>
<plugins>
<!-- 这个插件可以将应用打包成一个可执行的jar包 -->
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
</project>
application.properties
server.port=8061
spring.datasource.driver-class-name=com.mysql.jdbc.Driver
spring.datasource.url=jdbc:mysql://192.168.1.6:3306/boot_example?useUnicode=true&characterEncoding=utf-8&useSSL=false
spring.datasource.username=sysroot
spring.datasource.password=xdX.12345678
mybatis.config-location=classpath:mybatis/mybatis-config.xml
mybatis.mapper-locations=classpath:mybatis/mapper/*.xml
mybatis.type-aliases-package=boot.example.mybatis.xml.entity
BootUser.java
package boot.example.mybatis.xml.domain;
import java.util.Date;
import com.fasterxml.jackson.annotation.JsonFormat;
public class BootUser {
private Integer userId;
private String userName;
private String userNickname;
private String userPassword;
private Integer userSex;
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss",timezone="GMT+8")
private Date userCreateTime;
public Integer getUserId() {
return userId;
}
public void setUserId(Integer userId) {
this.userId = userId;
}
public String getUserName() {
return userName;
}
public void setUserName(String userName) {
this.userName = userName;
}
public String getUserNickname() {
return userNickname;
}
public void setUserNickname(String userNickname) {
this.userNickname = userNickname;
}
public String getUserPassword() {
return userPassword;
}
public void setUserPassword(String userPassword) {
this.userPassword = userPassword;
}
public Integer getUserSex() {
return userSex;
}
public void setUserSex(Integer userSex) {
this.userSex = userSex;
}
public Date getUserCreateTime() {
return userCreateTime;
}
public void setUserCreateTime(Date userCreateTime) {
this.userCreateTime = userCreateTime;
}
@Override
public String toString() {
return "BootUser{" +
"userId=" + userId +
", userName='" + userName + '\'' +
", userNickname='" + userNickname + '\'' +
", userPassword='" + userPassword + '\'' +
", userSex=" + userSex +
", userCreateTime=" + userCreateTime +
'}';
}
}
BootUserMapper.java
package boot.example.mybatis.xml.mapper;
import java.util.List;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
import boot.example.mybatis.xml.domain.BootUser;
@Mapper
public interface BootUserMapper {
public List<BootUser> selectUserList();
public BootUser selectUserByUserId(@Param("userId") Integer userId);
public int insertUser(BootUser user);
public int updateUser(BootUser user);
public int deleteUser(Integer userId);
}
BootUserMapper.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="boot.example.mybatis.xml.mapper.BootUserMapper" >
<resultMap id="userResultMap" type="boot.example.mybatis.xml.domain.BootUser" >
<id column="user_id" property="userId"/>
<result column="user_name" property="userName"/>
<result column="user_nickname" property="userNickname"/>
<result column="user_password" property="userPassword"/>
<result column="user_sex" property="userSex" />
<result column="user_create_time" property="userCreateTime" />
</resultMap>
<sql id="selectUserVo" >
select user_id, user_name, user_nickname, user_password, user_sex, user_create_time from boot_user
</sql>
<!-- 查询user列表 -->
<select id="selectUserList" resultMap="userResultMap" >
<include refid="selectUserVo" /> order by user_id desc
</select>
<!-- 根据userId查询 -->
<select id="selectUserByUserId" parameterType="integer" resultMap="userResultMap" >
<include refid="selectUserVo" /> where user_id =#{userId}
</select>
<!-- 新增user -->
<insert id="insertUser" parameterType="boot.example.mybatis.xml.domain.BootUser" useGeneratedKeys="true" keyProperty="userId">
insert into boot_user
<trim prefix="(" suffix=")" suffixOverrides=",">
<if test="userName != null and userName != ''">user_name,</if>
<if test="userNickname != null and userNickname != ''">user_nickname,</if>
<if test="userPassword != null and userPassword != ''">user_password,</if>
<if test="userSex != null">user_sex,</if>
user_create_time,
</trim>
<trim prefix="values (" suffix=")" suffixOverrides=",">
<if test="userName != null and userName != ''">#{userName},</if>
<if test="userNickname != null and userNickname != ''">#{userNickname},</if>
<if test="userPassword != null and userPassword != ''">#{userPassword},</if>
<if test="userSex != null">#{userSex},</if>
sysdate(),
</trim>
</insert>
<!-- 更新user -->
<update id="updateUser" parameterType="boot.example.mybatis.xml.domain.BootUser" >
update boot_user
<trim prefix="SET" suffixOverrides=",">
<if test="userName != null and userName != ''">user_name = #{userName},</if>
<if test="userNickname != null and userNickname != ''">user_nickname = #{userNickname},</if>
<if test="userPassword != null and userPassword !=''">user_password = #{userPassword},</if>
<if test="userSex != null">user_sex = #{userSex},</if>
</trim>
where user_id =#{userId}
</update>
<delete id="deleteUser" parameterType="integer" >
delete from boot_user where user_id =#{userId}
</delete>
</mapper>
mybatis-config.xml
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE configuration PUBLIC "-//mybatis.org//DTD Config 3.0//EN" "http://mybatis.org/dtd/mybatis-3-config.dtd">
<configuration>
<typeAliases>
<typeAlias alias="Integer" type="java.lang.Integer" />
<typeAlias alias="Long" type="java.lang.Long" />
<typeAlias alias="HashMap" type="java.util.HashMap" />
<typeAlias alias="LinkedHashMap" type="java.util.LinkedHashMap" />
<typeAlias alias="ArrayList" type="java.util.ArrayList" />
<typeAlias alias="LinkedList" type="java.util.LinkedList" />
</typeAliases>
</configuration>
BootUserService.java
package boot.example.mybatis.xml.service;
import java.util.List;
import boot.example.mybatis.xml.domain.BootUser;
public interface BootUserService {
public List<BootUser> selectUserListService();
public BootUser selectUserByUserIdService(Integer userId);
public int insertUserService(BootUser user);
public int updateUserService(BootUser user);
public int deleteUserService(Integer userId);
}
BootUserServiceImpl.java
package boot.example.mybatis.xml.service.impl;
import java.util.List;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import boot.example.mybatis.xml.domain.BootUser;
import boot.example.mybatis.xml.mapper.BootUserMapper;
import boot.example.mybatis.xml.service.BootUserService;
@Service
public class BootUserServiceImpl implements BootUserService{
@Autowired
private BootUserMapper bootUserDao;
@Override
public List<BootUser> selectUserListService() {
return bootUserDao.selectUserList();
}
@Override
public BootUser selectUserByUserIdService(Integer userId) {
return bootUserDao.selectUserByUserId(userId);
}
@Override
public int insertUserService(BootUser user) {
bootUserDao.insertUser(user);
if(null != user) {
return 1;
}
return 0;
}
@Override
public int updateUserService(BootUser user) {
return bootUserDao.updateUser(user);
}
@Override
public int deleteUserService(Integer userId) {
return bootUserDao.deleteUser(userId);
}
}
BootUserController.java
package boot.example.mybatis.xml.controller;
import java.util.List;
import javax.annotation.Resource;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RestController;
import boot.example.mybatis.xml.domain.BootUser;
import boot.example.mybatis.xml.service.BootUserService;
@RestController
public class BootUserController {
/**
*
* restful风格约束规范
*
*/
@Resource
BootUserService bootUserService;
@RequestMapping(value = "/api/user", method = RequestMethod.GET)
public List<BootUser> selectUserListController(){
return bootUserService.selectUserListService();
}
@RequestMapping(value = "/api/user/{id}", method = RequestMethod.GET)
public BootUser selectUserByUserIdController(@PathVariable("id") Integer userId) {
return bootUserService.selectUserByUserIdService(userId);
}
@RequestMapping(value = "/api/user", method = RequestMethod.POST)
public int insertUserController(@RequestBody BootUser user) {
return bootUserService.insertUserService(user);
}
@RequestMapping(value = "/api/user", method = RequestMethod.PUT)
public int updateUserController(@RequestBody BootUser user) {
return bootUserService.updateUserService(user);
}
@RequestMapping(value = "/api/user/{id}", method = RequestMethod.DELETE)
public int deleteUserController(@PathVariable("id") Integer userId) {
return bootUserService.deleteUserService(userId);
}
}
App.java
package boot.example.mybatis.xml;
import org.mybatis.spring.annotation.MapperScan;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
/**
* Hello world!
*
*/
@SpringBootApplication
@MapperScan("boot.example.mybatis.xml.mapper")
public class App
{
public static void main( String[] args )
{
SpringApplication.run(App.class, args);
System.out.println( "Hello World!" );
}
}
│ pom.xml
│
└─src
├─main
│ ├─java
│ │ └─boot
│ │ └─example
│ │ └─mybatis
│ │ └─xml
│ │ │ App.java
│ │ │
│ │ ├─controller
│ │ │ BootUserController.java
│ │ │
│ │ ├─domain
│ │ │ BootUser.java
│ │ │
│ │ ├─mapper
│ │ │ BootUserMapper.java
│ │ │
│ │ └─service
│ │ │ BootUserService.java
│ │ │
│ │ └─impl
│ │ BootUserServiceImpl.java
│ │
│ └─resources
│ │ application.properties
│ │
│ └─mybatis
│ │ mybatis-config.xml
│ │
│ └─mapper
│ UserMapper.xml
│
└─test
└─java
└─boot
└─example
└─mybatis
└─xml
AppTest.java