Mybatis简单示例程序

1、目的

本示例程序展示Mybatis的简单功能,如CRUD的功能。

2、环境

JDK17

Idea 2019

MyBatis : 3.5.13

SpringBoot 3.1.1

mysql 5.7

3、需要准备的知识

  • 了解ideal开发工具
  • 能灵活使用SpringBoot(起码入门)

4、准备的表(SQL)

CREATE TABLE `person` (
  `id` int(10) unsigned NOT NULL AUTO_INCREMENT COMMENT 'PK',
  `name` varchar(255) DEFAULT '' COMMENT '名称',
  `age` int(10) unsigned DEFAULT '1' COMMENT '年龄',
  `school` varchar(255) DEFAULT '' COMMENT '学校',
  `province` varchar(255) DEFAULT '' COMMENT '藉惯',
  `created_time` datetime DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
  `creator` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci DEFAULT '' COMMENT '创建人',
  `revised_time` timestamp NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '修改时间',
  `reviser` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci DEFAULT '' COMMENT '修改人',
  PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=4 DEFAULT CHARSET=utf8 COMMENT='会员表';

5、创建工程

用ideal工具,创建一个 maven的springboot 工程。

image.png

5.1 配置application.yml

在application.yml中加入如下内容:

#hikari配置
spring:
  datasource: # 数据源的相关配置
    type: com.zaxxer.hikari.HikariDataSource          # 数据源类型:HikariCP
    driver-class-name: com.mysql.cj.jdbc.Driver          # mysql驱动
    url: jdbc:mysql://localhost:3306/demo?useUnicode=true&characterEncoding=UTF-8&autoReconnect=true&useSSL=false
    username: root
    password: 12345678
    hikari:
      pool-name: driver-HikariCP #连接池名称
      connection-timeout: 60000 # 等待连接池分配连接的最大时长(毫秒),超过这个时长还没可用的连接则发生SQLException, 默认:30秒
      minimum-idle: 5                 # 最小连接数
      maximum-pool-size: 20 #最大连接数量
      auto-commit: true               # 自动提交
      max-lifetime: 1800000 #连接的最长生命周期
      keepalive-time: 1750000 #尝试保持连接的频率
      connection-test-query: select 1 #连接验证sql

#mybatis 配置
mybatis:
  type-aliases-package: net.jhelp.mybatis.learning.orm.entity          # 所有POJO类所在包路径
  mapper-locations: classpath:mapperXml/*.xml, classpath:mapperExt/*/*.xml      # mapper映射文件
  configuration:
    #下划线自动转驼峰
    map-underscore-to-camel-case: true
    #打印sql语句,有多种日志实现方式,常用StdOutImpl、Slf4jImpl
    #log-impl: org.apache.ibatis.logging.stdout.StdOutImpl
    #log-impl: org.apache.ibatis.logging.slf4j.Slf4jImpl

6、配置springboot 的 pom引用

打开pom.xml文件,加入springboot, mybatis, mysql-java驱动的maven 引用。

效果如下:

<?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>net.jhelp.mybatis.learning</groupId>
    <artifactId>01-myfirstdemo</artifactId>
    <version>1.0-SNAPSHOT</version>
    <description></description>
    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>3.1.1</version>
        <relativePath/>
        <!-- lookup parent from repository -->
    </parent>
    <properties>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
        <jdk.version>17</jdk.version>
    </properties>
    <dependencies>
        <dependency>
            <groupId>org.mybatis</groupId>
            <artifactId>mybatis</artifactId>
            <version>3.5.13</version>
        </dependency>
        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <version>8.0.32</version>
        </dependency>
        <dependency>
            <groupId>org.mybatis.spring.boot</groupId>
            <artifactId>mybatis-spring-boot-starter</artifactId>
            <version>3.0.2</version>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter</artifactId>
        </dependency>
        <dependency>
            <groupId>junit</groupId>
            <artifactId>junit</artifactId>
            <scope>test</scope>
        </dependency>
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-test</artifactId>
            <version>6.0.10</version>
            <scope>test</scope>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-test</artifactId>
            <version>3.1.1</version>
            <scope>test</scope>
        </dependency>
        <dependency>
            <groupId>org.mybatis</groupId>
            <artifactId>mybatis-spring</artifactId>
            <version>2.0.7</version>
            <scope>test</scope>
        </dependency>
        <dependency>
            <groupId>org.projectlombok</groupId>
            <artifactId>lombok</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-jdbc</artifactId>
        </dependency>
        <dependency>
            <groupId>org.mybatis</groupId>
            <artifactId>mybatis-spring</artifactId>
            <version>3.0.2</version>
            <scope>compile</scope>
        </dependency>
    </dependencies>
    <build>
        <plugins>
            <plugin>
                <groupId>org.mybatis.generator</groupId>
                <artifactId>mybatis-generator-maven-plugin</artifactId>
                <version>1.3.2</version>
                <configuration>
                    <verbose>true</verbose>
                    <overwrite>true</overwrite>
                    <configurationFile>${project.basedir}/src/main/resources/generatorConfig-mysql.xml
                    </configurationFile>
                </configuration>
            </plugin>
        </plugins>
    </build>
</project>

为了方便mybatis 的dao及 entity的生成,加了入自动生成的引用

image.png

注意:本人在idea 上装了 mavehelper 插件,可以通过右键的方式来运行maven的。

按照上图的指引,就可以生成mybatis 的实体和 mapper, xml文件。

运行后的结果如下图:


image.png

7、创建测试例

在test目录下的包中,创建一个MybatisTestCase的类,如下图:

image.png


MybatisTestCase.java的代码如下:

package net.jhelp.mybatis.learning.test;

import lombok.extern.slf4j.Slf4j;
import net.jhelp.mybatis.learning.orm.entity.Person;
import net.jhelp.mybatis.learning.orm.mapper.PersonMapper;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.test.context.junit4.SpringRunner;

/**
 * 网址:https://www.jhelpe.net
 * <p>
 * author : kame
 * date : 10/15/23 4:52 PM
 */

@RunWith(SpringRunner.class)
@SpringBootTest
@Slf4j
public class MybatisTestCase {

    private  PersonMapper personMapper;

    @Autowired
    public void setPersonMapper(PersonMapper personMapper){
        this.personMapper = personMapper;
    }

    @Test
    public void test(){
        //创建一个人
        Person person = new Person();
        person.setAge(39);
        person.setName("jack");
        person.setSchool("中山大学");
        person.setCreatedTime(new java.util.Date());
        person.setProvince("广东");

        //保存
        personMapper.insertSelective(person);
        System.out.println("保存的用户ID=" + person.getId());

        Person person2 = personMapper.selectByPrimaryKey(person.getId());

        System.out.println("保存的人的名字为:" + person2.getName());
    }
}

然然后运行这个用例,得到以下的结果:

image.png


可以看到程序写了一条记录,并且又将这个记录读取出来。

8、程序源代码

需要上述程序代码的,请关注公众号「技术老男孩」,在手机上阅读所有教程,随时随地都能学习。内含一款搜索神器,免费下载全网书籍和视频。


腾讯云推出云产品限时特惠抢购活动:2C2G云服务器7.9元/月起
本文链接:https://www.jhelp.net/p/dMir1LFP695xJb2t (转载请保留)。
关注下面的标签,发现更多相似文章