从零开始学习SpringBoot——03.mybatis使用

1.文件组织结构

在这里插入图片描述

2.建立Maven项目,写pom文件

<?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 http://maven.apache.org/xsd/maven-4.0.0.xsd">
	<modelVersion>4.0.0</modelVersion>

	<groupId>com.player</groupId>
	<artifactId>springboot-web</artifactId>
	<version>0.0.1-SNAPSHOT</version>
	<packaging>jar</packaging>

	<name>springboot-web</name>
	<description>Demo project for Spring Boot</description>

	<parent>
		<groupId>org.springframework.boot</groupId>
		<artifactId>spring-boot-starter-parent</artifactId>
		<version>2.4.6</version>
		<relativePath/> <!-- lookup parent from repository -->
	</parent>

	<properties>
		<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
		<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
		<java.version>11</java.version>
	</properties>

	<dependencies>
		<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-starter-web</artifactId>
		</dependency>

		<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-starter-test</artifactId>
			<scope>test</scope>
		</dependency>
		
		<!-- 使用thymeleaf 模板 -->
		<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-starter-thymeleaf</artifactId>
		</dependency>

		<dependency>
			<groupId>junit</groupId>
			<artifactId>junit</artifactId>
			<version>4.12</version>
		</dependency>
		
		<!-- 添加mybatis 依赖 -->
		<dependency>
		    <groupId>org.mybatis.spring.boot</groupId>
		    <artifactId>mybatis-spring-boot-starter</artifactId>
		    <version>2.2.2</version>
		</dependency>
		<!-- 驱动 -->
		<dependency>
	        <groupId>mysql</groupId>
	        <artifactId>mysql-connector-java</artifactId>
	    </dependency>
		
	</dependencies>



</project>


3.实体User类

package com.player.xml.entity;

import java.io.Serializable;

public class User implements Serializable{
	private static final long serialVersionUID = 1L;
	private long id;
	private String username;
	private String nickName;
	private String sex;
	
	public long getId() {
		return id;
	}
	public void setId(long id) {
		this.id = id;
	}
	public String getUsername() {
		return username;
	}
	public void setUsername(String username) {
		this.username = username;
	}
	public String getNickName() {
		return nickName;
	}
	public void setNickName(String nickName) {
		this.nickName = nickName;
	}
	public String getSex() {
		return sex;
	}
	public void setSex(String sex) {
		this.sex = sex;
	}
	
	@Override
	public String toString() {
		return "User [id=" + id + ", username=" + username + ", nickName=" + nickName + ", sex=" + sex + "]";
	}
	
	
}



4.mapper接口

package com.player.xml.mapper;

import java.util.List;
import java.util.Map;

import com.player.xml.entity.User;

public interface UserMapper {
	public List<User> getAll();
	public User getUserById(long id);
	public int save(Map<String,Object> map);
	public int update(Map<String,Object> map);
	public int delete(long id);
}

5.mapper配置类

5.1mybatis-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" />
	</typeAliases>
</configuration>

5.2UserMapper.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.player.xml.mapper.UserMapper" >
    <resultMap id="userResultMap" type="com.player.xml.entity.User" >
        <id column="id" property="id" jdbcType="BIGINT" />
        <result column="username" property="username" jdbcType="VARCHAR" />
        <result column="sex" property="sex" jdbcType="VARCHAR"/>
        <result column="nick_name" property="nickName" jdbcType="VARCHAR" />
    </resultMap>
    
    <sql id="user_Column_List" >
        id, username, sex, nick_name
    </sql>

    <select id="getAll" resultMap="userResultMap"  >
       SELECT 
       <include refid="user_Column_List" />
	   FROM user
    </select>

    <select id="getUserById" parameterType="Long" resultMap="userResultMap" >
        SELECT 
       <include refid="user_Column_List" />
	   FROM user
	   WHERE id = #{id}
    </select>

    <insert id="save" parameterType="map" useGeneratedKeys="true" keyProperty="id">
       INSERT INTO 
       		user
       		(username,nick_name,sex) 
       	VALUES
       		(#{username},#{nickName}, #{sex})
    </insert>
    
    <update id="update" parameterType="map" >
       UPDATE 
       		user
       SET 
       	<if test="username != null">username = #{username},</if>
       	nick_name = #{nickName}
       WHERE 
       		id = #{id}
    </update>
    
    <delete id="delete" parameterType="Long" >
       DELETE FROM
       		 user
       WHERE 
       		 id =#{id}
    </delete>

</mapper>

6.全局配置application.properties

#server.port=8880

mybatis.config-location=classpath:mybatis/mybatis-config.xml
mybatis.mapper-locations=classpath:mybatis/mapper/*.xml

spring.datasource.driverClassName = com.mysql.cj.jdbc.Driver
spring.datasource.url = jdbc:mysql://localhost:3306/demo?useUnicode=true&characterEncoding=utf-8&useSSL=false
spring.datasource.username = root
spring.datasource.password = 123456

7.UserController

package com.player.xml.controller;

import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.Random;
import java.util.UUID;

import com.player.xml.mapper.UserMapper;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

import com.player.xml.entity.User;

@RestController
public class UserController {

	@Autowired
	private UserMapper userMapper;
	
	@RequestMapping("/getAll")
	public Object getAllList() throws Exception{
		List<User> ulist = userMapper.getAll();
		System.out.println("ulist="+ulist);
		return ulist;
	}
	
	/**
	 * 这个{id}是restful 风格的请求
	 * @param uid
	 * @return
	 * @throws Exception
	 */
	@RequestMapping("/user/{id}")
	public Object getUserById(@PathVariable("id") Long uid) throws Exception{
		System.out.println("uid"+uid);
		User u = userMapper.getUserById(uid);
		System.out.println("user="+u);
		return u == null ?"没有这个用户":u;
	}
	
	@RequestMapping("/save")
	public String saveUser() throws Exception{
		Map<String, Object> map = new HashMap<>();
		map.put("username", "userName"+UUID.randomUUID().toString().replaceAll("-", ""));
		map.put("nickName", "nick"+UUID.randomUUID().toString().replaceAll("-", ""));
		map.put("sex", new Random().nextInt(10) %2 == 1 ? "man":"woman");
		System.out.println("map="+map);
		int rest = userMapper.save(map);
		return rest == 1?"成功"+map:"失败";
	}
	
	@RequestMapping("/update")
	public String updateUser() throws Exception{
		Map<String, Object> map = new HashMap<>();
		map.put("username", "userName"+UUID.randomUUID().toString().replaceAll("-", ""));
		map.put("nickName", "nick"+UUID.randomUUID().toString().replaceAll("-", ""));
		map.put("id", new Random().nextInt(5));
		System.out.println("map="+map);
		int rest = userMapper.update(map);
		return rest == 1?"成功"+map:"失败";
	}
	
	@RequestMapping("/del/{id}")
	public String delUser (@PathVariable("id") Long id) throws Exception{
		int rest = userMapper.delete(id);
		return rest == 1?"成功":"失败";
	}
}



8.运行

ps:数据库在创建表的时候,表内的字段要跟mapper中查询用的字段名字一致,否则会查询不到,在使用mapper的save操作时,要保证数据库的id字段是int型主键且自增长的,否则UserMapper.xml中的useGeneratedKeys="true"会失效,从而导致插入时没有插入主键或插入不成功的问题。(useGeneratedKeys会使map中增加一个对应的主键字段,比如id)

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值