如何用IDEA创建第一个Mybatis程序

本文涉及的产品
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
云数据库 RDS MySQL,集群系列 2核4GB
推荐场景:
搭建个人博客
云数据库 RDS PostgreSQL,集群系列 2核4GB
简介: 如何用IDEA创建第一个Mybatis程序

前言

MyBatis 是一款优秀的持久层框架,它支持自定义 SQL、存储过程以及高级映射。MyBatis 免除了几乎所有的 JDBC 代码以及设置参数和获取结果集的工作。MyBatis 可以通过简单的 XML 或注解来配置和映射原始类型、接口和 Java POJO(Plain Old Java Objects,普通老式 Java 对象)为数据库中的记录。Mybatis在线学习文档地址为:https://mybatis.org/mybatis-3,后面加上/zh即可切成中文模式。

1、创建数据库

在学习Mybatis之前,首先要对数据库操作有所了解,一定要先建好表。

2、导入相关依赖

1)依赖包括Mybatis依赖包,数据库连接驱动以及Junit测试单元

<dependencies>
        <dependency>
            <groupId>junit</groupId>
            <artifactId>junit</artifactId>
            <version>4.11</version>
            <scope>test</scope>
        </dependency>
        <dependency>
            <groupId>org.mybatis</groupId>
            <artifactId>mybatis</artifactId>
            <version>3.5.6</version>
        </dependency>
        <!--mysql驱动-->
        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <version>8.0.28</version>
        </dependency>
    </dependencies>

2)在build中配置resources,来防止我们资源导出失败的问题

<build>
        <resources>
            <resource>
                <directory>src/main/resources</directory>
                <includes>
                    <include>**/*.properties</include>
                    <include>**/*.xml</include>
                </includes>
            </resource>
            <resource>
                <directory>src/main/java</directory>
                <includes>
                    <include>**/*.properties</include>
                    <include>**/*.xml</include>
                </includes>
                <filtering>true</filtering>
            </resource>
        </resources>
    </build>

3、Mybatis核心配置文件

1)每个基于 MyBatis 的应用都是以一个 SqlSessionFactory 的实例为核心的。SqlSessionFactory 的实例可以通过 SqlSessionFactoryBuilder 获得。而 SqlSessionFactoryBuilder 则可以从 XML 配置文件或一个预先配置的 Configuration 实例来构建出 SqlSessionFactory 实例。 并且每一个Mapper.xml都需要在Mybatis核心配置文件中注册。

<?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核心文件-->
<configuration>
    <environments default="development">
        <environment id="development">
            <transactionManager type="JDBC"/>
            <dataSource type="POOLED">
                <property name="driver" value="com.mysql.cj.jdbc.Driver"/>
                <property name="url"
                          value="jdbc:mysql://localhost:3306/mybatis?useSSL=true&amp;useUnicode=true&amp;characterEncoding=UTF-8"/>
                <property name="username" value="root"/>
                <property name="password" value=""/>
            </dataSource>
        </environment>
    </environments>
    <mappers>
        <mapper resource="com/dao/UserMapper.xml"/>
    </mappers>
</configuration>

2) 使用属性配置文件连接数据库(推荐使用),可将上述代码一分为二

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核心文件-->
<configuration>
    <!--引入外部配置文件-->
    <properties resource="db.properties"/>
    <!--扫描实体类的包,它的默认别名就是这个类的类名,首字母小写-->
    <typeAliases>
        <package name="com.pojo"/>
    </typeAliases>
    <environments default="development">
        <environment id="development">
            <transactionManager type="JDBC"/>
            <dataSource type="POOLED">
                <property name="driver" value="${driver}"/>
                <property name="url" value="${url}"/>
                <property name="username" value="${username}"/>
                <property name="password" value="${password}"/>
            </dataSource>
        </environment>
    </environments>
<!-- 每一个Mapper.XML都需要在Mybatis核心配置文件中注册!-->
    <mappers>
        <package name="com.dao"/>
    </mappers>
</configuration>

1)可以给实体类起别名

<typeAliases>
        <typeAlias type="com.pojo.User" alias="User"/>
    </typeAliases>

2)也可以扫描实体类的包,它的默认别名就是这个类的类名,首字母小写

<typeAliases>
        <package name="com.pojo"/>
    </typeAliases>

3)注册Mapper.xml,可以使用包路径加载,也可以使用资源路径

<package name="com.dao"/>
 <mapper resource="com/dao/UserMapper.xml"/>

db.properties:

1)如果mysql-connector-java用的6.0以上的,此时需要把com.mysql.jdbc.Driver 改为com.mysql.cj.jdbc.Driver。

url=jdbc:mysql://localhost:3306/mybatis?useSSL=true&useUnicode=true&characterEncoding=UTF-8
driver=com.mysql.cj.jdbc.Driver
username=root
password=123456

2)如果使用的数据库是8.0.11以上版本的MySQL,需要配置时区(以下两种时区配置均可以),这是由于数据库和系统时区差异所造成的。

url=jdbc:mysql://localhost:3306/mybatis?serverTimezone=Shanghai&?useUnicode=true&characterEncoding=utf8&useSSL=false
url=jdbc:mysql://localhost:3306/mybatis_plus?useSSL=true&useUnicode=true&useCharacter=UTF-8&serverTimezone=UTC

连接数据库:

先点“+”,再选择自己所用的数据库 ,然后点击Schemas,选择自己的数据库即可,连接完成之后,可以查看自己数据库中的表。

     

4、创建实体类

注意:实体类的变量名称要与数据库字段名一致,否者可能查询为Null

package com.pojo;
public class User {
    private int userid;
    private String username;
    private String password;
    public User() {
    }
    public User(int userid, String username, String password) {
        this.userid = userid;
        this.username = username;
        this.password = password;
    }
    public int getUserid() {
        return userid;
    }
    public void setUserid(int userid) {
        this.userid = userid;
    }
    public String getUsername() {
        return username;
    }
    public void setUsername(String username) {
        this.username = username;
    }
    public String getPassword() {
        return password;
    }
    public void setPassword(String password) {
        this.password = password;
    }
    @Override
    public String toString() {
        return "userid:" + userid +
                ", username:" + username +
                ", password:" + password;
    }
}

5、Mybatis封装工具类

MybatisUtils.java:

package com.dao.utils;
import org.apache.ibatis.io.Resources;
import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.session.SqlSessionFactoryBuilder;
import java.io.IOException;
import java.io.InputStream;
public class MybatisUtils {
    private static SqlSessionFactory sqlSessionFactory;
    static {
        try {
            //使用Mybatis第一步:获取sqlSessionFactory对象
            String resource = "mybatis-config.xml";
            InputStream inputStream = Resources.getResourceAsStream(resource);
            sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
    /*既然有了 SqlSessionFactory,顾名思义,我们可以从中获得 SqlSession 的实例。
    SqlSession 提供了在数据库执行 SQL 命令所需的所有方法*/
    public static SqlSession getSqlSession() {
        return sqlSessionFactory.openSession();
    }
}

6、编写dao接口及接口配置文件

UserMapper:

package com.dao;
import com.pojo.User;
import java.util.List;
public interface UserMapper {
     //查询全部用户
     List<User> getUserList();
     //根据ID查询用户
     User getUserById(int userid);
     //增加一个用户
     int addUser(User user);
     //修改用户
     int updateUser(User user);
     //删除一个用户
     void deleteUser(int userid);
}

UserMapper.xml:

注:查询可以写参数类型(parameterType),也可以写返回结果类型(resultType),但返回结果类型必须得写。另外,增删改没有了resultType类型,但必须得写parameterType。这点通过源码可以看出来

81dd9a36d0b60f3bfa1e0e78c79909ac_watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBA5YWo5p2R56ys5LqM5biF,size_20,color_FFFFFF,t_70,g_se,x_16.png

<?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">
<!-- namespace=绑定一个对应的Dao/Mapper接口-->
<mapper namespace="com.dao.UserMapper">
    <select id="getUserList" resultType="User">
        select *
        from mybatis.user
    </select>
    <select id="getUserById" parameterType="int" resultType="com.pojo.User">
        select *
        from mybatis.user
        where userid = #{id}
    </select>
    <!--
        对象中的属性,可以直接取出来
    -->
    <insert id="addUser" parameterType="com.pojo.User">
        insert into mybatis.user (userid, username, password)
        values (#{userid}, #{username}, #{password})
    </insert>
    <update id="updateUser" parameterType="com.pojo.User">
        update mybatis.user
        set username=#{username},
            password=#{password}
        where userid = #{userid}
    </update>
    <delete id="deleteUser" parameterType="com.pojo.User">
        delete
        from mybatis.user
        where userid = #{userid}
    </delete>
</mapper>

7、编写Junit测试单元

package com.dao;
import com.pojo.User;
import com.dao.utils.MybatisUtils;
import org.apache.ibatis.session.SqlSession;
import org.junit.Test;
import java.util.List;
public class UserDaoTest {
    @Test
    public void test() {
        //第一步:获得SqlSession对象
        SqlSession sqlSession = MybatisUtils.getSqlSession();
        UserMapper userMapper = sqlSession.getMapper(UserMapper.class);
        List<User> userList = userMapper.getUserList();
        for (User user : userList) {
            System.out.println(user);
        }
        //关闭SqlSession
        sqlSession.close();
    }
}

8、结果展示

查询到了全部用户,程序结束。

如遇错误 ,请参考下面文章: https://blog.csdn.net/qq_53860947/article/details/123452367



相关实践学习
如何快速连接云数据库RDS MySQL
本场景介绍如何通过阿里云数据管理服务DMS快速连接云数据库RDS MySQL,然后进行数据表的CRUD操作。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助 &nbsp; &nbsp; 相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
相关文章
|
7月前
|
前端开发 Java 数据库连接
Springboot-MyBatis配置-配置端口号与服务路径(idea社区版2023.1.4+apache-maven-3.9.3-bin)
Springboot-MyBatis配置-配置端口号与服务路径(idea社区版2023.1.4+apache-maven-3.9.3-bin)
90 0
|
9天前
|
前端开发 Java 开发者
这款免费 IDEA 插件让你开发 Spring 程序更简单
Feign-Helper 是一款支持 Spring 框架的 IDEA 免费插件,提供 URL 快速搜索、Spring Web Controller 路径一键复制及 Feign 与 Controller 接口互相导航等功能,极大提升了开发效率。
|
2月前
|
搜索推荐 Java 数据库连接
Java|在 IDEA 里自动生成 MyBatis 模板代码
基于 MyBatis 开发的项目,新增数据库表以后,总是需要编写对应的 Entity、Mapper 和 Service 等等 Class 的代码,这些都是重复的工作,我们可以想一些办法来自动生成这些代码。
41 6
|
4月前
|
SQL 前端开发 Java
动态搜索图书:可以按书名、作者、出版社以及价格范围进行搜索。(在IDEA中mybatis)
这篇文章介绍了如何在IDEA中使用MyBatis实现动态图书搜索功能,包括按书名、作者、出版社搜索以及实现价格范围查询的方法,并提供了前端页面的实现代码和MyBatis的动态SQL语句示例。
动态搜索图书:可以按书名、作者、出版社以及价格范围进行搜索。(在IDEA中mybatis)
|
5月前
|
SQL Java 数据库连接
idea中配置mybatis 映射文件模版及 mybatis plus 自定义sql
idea中配置mybatis 映射文件模版及 mybatis plus 自定义sql
115 3
|
5月前
|
SQL 监控 Java
IDEA插件-Mybatis Log Free日志替换
MyBatis Log Free 是一个免费的用于在 IntelliJ IDEA 中显示 MyBatis 日志的插件。它可以帮助您更方便地查看和分析 MyBatis 的 SQL 执行情况,以及定位潜在的性能问题,提高开发效率。
455 0
IDEA插件-Mybatis Log Free日志替换
|
6月前
|
IDE Java 项目管理
Java入门——Intellij IDEA简介、使用IDEA开发程序、IDEA常用快捷键、IDEA其他操作
Java入门——Intellij IDEA简介、使用IDEA开发程序、IDEA常用快捷键、IDEA其他操作
120 3
|
7月前
|
分布式计算 监控 Java
Note_Spark_Day02:Standalone集群模式和使用IDEA开发应用程序
Note_Spark_Day02:Standalone集群模式和使用IDEA开发应用程序
101 0
|
6月前
|
SQL Java 数据库连接
IDEA插件(MyBatis Log Free)
IDEA插件(MyBatis Log Free)
410 0
|
6月前
|
Java 数据库连接 mybatis
idea无法下载Mybatis插件怎么办
idea无法下载Mybatis插件怎么办