当前位置: 首页 > article >正文

SpringBoot+Mybatis整合Mysql数据库的Demo

这是一个很老的学习demo项目了,记录一下,留作回忆,这是一个SpringBoot+Mybatis整合Mysql数据库的Demo

myw
首先创建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


http://www.kler.cn/a/531980.html

相关文章:

  • Vue和Java使用AES加密传输
  • 路径规划之启发式算法之二十九:鸽群算法(Pigeon-inspired Optimization, PIO)
  • 【Blazor学习笔记】.NET Blazor学习笔记
  • Nginx 运维开发高频面试题详解
  • !力扣 84. 柱状图中最大矩形
  • 网络原理(4)—— 网络层详解
  • 《黑马点评》实战笔记
  • Qwen2.5-Max:AI技术的新里程碑
  • 力扣 55. 跳跃游戏
  • 【OS】AUTOSAR架构下的Interrupt详解(下篇)
  • Verilog基础(五):时序逻辑
  • 【贪心算法篇】:“贪心”之旅--算法练习题中的智慧与策略(三)
  • 【C++】B2124 判断字符串是否为回文
  • 50【Windows与Linux】
  • 【C++】string类(上):string类的常用接口介绍
  • 与,|与||的区别
  • python leetcode 笔记
  • 一些硬件知识【20250/2/3】
  • html中的表格属性以及合并操作
  • DeepSeek-R1-Distill-Qwen-1.5B 本地部署报错解决
  • MySQL(InnoDB统计信息)
  • Unix 进程的启动方式及经典和现代做法(中英双语)
  • 单调队列 滑动窗口(题目分析+C++完整代码)
  • 【Deep Seek本地化部署】模型实测:规划求解python代码
  • 初始Linux(7):认识进程(下)
  • 基于SpringBoot养老院平台系统功能实现一