Mybatis + Spring boot快速入门(CURD)

2020-01-25  本文已影响0人  飞一般John

官方文档:https://mybatis.org/mybatis-3/

Mybatis 简单介绍

MyBatis 是一款优秀的持久层框架,它支持定制化 SQL、存储过程以及高级映射。MyBatis 避免了几乎所有的 JDBC 代码和手动设置参数以及获取结果集。MyBatis 可以使用简单的 XML 或注解来配置和映射原生信息,将接口和 Java 的 POJOs(Plain Ordinary Java Object,普通的 Java对象)映射成数据库中的记录。

首先建个表

待会需要用mybatis操作这个表

CREATE TABLE `user`(
`id` INT AUTO_INCREMENT,
`name` VARCHAR(50) NOT NULL,
`gender` TINYINT,# 1男, 2女, 0未选
`head_img` VARCHAR(355) NOT NULL,
 PRIMARY KEY ( `id` )
)ENGINE=InnoDB DEFAULT CHARSET=utf8;

# 插入一条数据
INSERT INTO `user` VALUES (null,'james', '1', 'http://www.yiibai.com');

Mybatis 入门

1.创建一个maven项目:
( 也可以新建 Spring Initializr 项目)

<?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>

    <artifactId>mybatis-synthesize</artifactId>
    <groupId>com.jozs.mybatis</groupId>
    <version>1.0-SNAPSHOT</version>
   <!-- 使用spring boot-->
    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>2.1.5.RELEASE</version>
    </parent>
    <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>

        <!-- 连接池 -->
        <dependency>
            <groupId>com.alibaba</groupId>
            <artifactId>druid</artifactId>
            <version>1.0.15</version>
        </dependency>
        <dependency>
            <groupId>org.mybatis.spring.boot</groupId>
            <artifactId>mybatis-spring-boot-starter</artifactId>
            <version>2.0.1</version>
        </dependency>
        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <version>5.1.32</version>
        </dependency>
    </dependencies>
</project>
  1. 配置文件:
server:
  port: 8081

mybatis:
  type-aliases-package: com.jozs.mybatis.pojo
  mapper-locations: com.jozs.mybatis.mapper/*.xml

spring:
  datasource:
    #driver-class-name: com.mysql.cj.jdbc.Driver
    driver-class-name: com.mysql.jdbc.Driver
    url: jdbc:mysql://127.0.0.1:3306/mybatis_test?characterEncoding=utf-8&useUnicode=true&useJDBCCompliantTimezoneShift=true&useLegacyDatetimeCode=false&serverTimezone=UTC
    username: root
    password: joh
    type: com.alibaba.druid.pool.DruidDataSource
    druid:
      # 下面为连接池的补充设置,应用到上面所有数据源中
      # 初始化大小,最小,最大
      initial-size: 5
      min-idle: 5
      max-active: 20
      # 配置获取连接等待超时的时间
      max-wait: 60000
<?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代理的开发规则:
1、id 是对应接口的方法名称
2、parameterType 对应方法里面的参数类型
3、resultType直接写对象的全类名 -->
<mapper namespace="com.jozs.mybatis.mapper.UserMapper">
    <!-- 新增记录,单条数据的INSERT操作 -->
    <insert id="saveUser" parameterType="com.jozs.mybatis.pojo.User">
        insert into `user`(`name`,`gender`,`head_img`) values(#{name},#{gender},#{head_img})
    </insert>
    <select id="selectUser" parameterType="int" resultType="com.jozs.mybatis.pojo.User">
        select * from `user` where id = #{id}
    </select>
    <!-- 修改记录 -->
    <update id="updateUser" parameterType="com.jozs.mybatis.pojo.User">
        update `user`
        <set>
            <if test="name!=null">`name`=#{name},</if>
            <if test="gender!=null">`gender`=#{gender},</if>
            <if test="head_img!=null">`head_img`=#{head_img},</if>
        </set>
        where id = #{id}
    </update>
    <!-- 删除记录 -->
    <delete id="deleteUser" parameterType="int" >
        delete from `user`
        where
        id = #{id}
    </delete>
</mapper>

3.编写相应代码:

package com.jozs.mybatis.pojo;

public class User {
    private Integer id;
    private String name;
    private Integer gender;
    private String head_img;

    public Integer getId() {
        return id;
    }

    public void setId(Integer id) {
        this.id = id;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public Integer getGender() {
        return gender;
    }

    public void setGender(Integer gender) {
        this.gender = gender;
    }

    public String getHead_img() {
        return head_img;
    }

    public void setHead_img(String head_img) {
        this.head_img = head_img;
    }

    @Override
    public String toString() {
        return "User{" +
                "id=" + id +
                ", name='" + name + '\'' +
                ", gender=" + gender +
                ", head_img='" + head_img + '\'' +
                '}';
    }

}

package com.jozs.mybatis.mapper;

import com.jozs.mybatis.pojo.User;

public interface UserMapper {
    User selectUser(Integer id);
    int saveUser(User user);
    int updateUser(User user);
    int deleteUser(Integer id);
}

package com.jozs.mybatis.controller;

import com.jozs.mybatis.mapper.UserMapper;
import com.jozs.mybatis.pojo.User;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.ResponseBody;
import org.springframework.web.bind.annotation.RestController;

@RestController
public class UserController {

    @Autowired
    UserMapper userMapper;

    @RequestMapping(value = "/saveUser", method = RequestMethod.GET)
    @ResponseBody
    public Object saveUser() {
        User user = new User();
        user.setName("aises");
        user.setGender(2);
        user.setHead_img("www.baidu.com");
        return userMapper.saveUser(user);
    }
    @RequestMapping(value = "/deleteUser", method = RequestMethod.GET)
    @ResponseBody
    public Object deleteUser() {
        return userMapper.deleteUser(3);
    }

    @RequestMapping(value = "/updateUser", method = RequestMethod.GET)
    @ResponseBody
    public Object updateUser() {
        User user = new User();
        user.setId(2);
        user.setName("amy");
        user.setGender(2);
        user.setHead_img("https://www.baidu.cn");
        return userMapper.updateUser(user);
    }

    @RequestMapping(value = "/user", method = RequestMethod.GET)
    @ResponseBody
    public Object getUser() {
        return userMapper.selectUser(1);
    }
}

package com.jozs.mybatis;

import org.mybatis.spring.annotation.MapperScan;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;

@SpringBootApplication
@MapperScan(value = "com.jozs.mybatis.mapper")
public class MybatisApp {
    public static void main(String[] args) {
        SpringApplication.run(MybatisApp.class, args);
    }

}

测试结果 (查询结果)

{
    "id": 1,
    "name": "james",
    "gender": 1,
    "head_img": "http://www.yiibai.com"
}

欢迎评论

最后是项目链接

https://github.com/JamesTansz/mybatis-synthesize

上一篇下一篇

猜你喜欢

热点阅读