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

本文涉及的产品
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
RDS MySQL Serverless 高可用系列,价值2615元额度,1个月
简介: 如何用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



相关实践学习
基于CentOS快速搭建LAMP环境
本教程介绍如何搭建LAMP环境,其中LAMP分别代表Linux、Apache、MySQL和PHP。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助 &nbsp; &nbsp; 相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
相关文章
|
18小时前
|
流计算
实时计算 Flink版操作报错之程序在idea跑没问题,打包在服务器跑就一直报错,是什么原因
在使用实时计算Flink版过程中,可能会遇到各种错误,了解这些错误的原因及解决方法对于高效排错至关重要。针对具体问题,查看Flink的日志是关键,它们通常会提供更详细的错误信息和堆栈跟踪,有助于定位问题。此外,Flink社区文档和官方论坛也是寻求帮助的好去处。以下是一些常见的操作报错及其可能的原因与解决策略。
|
8天前
|
前端开发 Java C#
C#程序启动后乱码(通过idea启动)
C#程序启动后乱码(通过idea启动)
18 0
|
8天前
|
应用服务中间件
idea搭建WebService HelloWorld程序
idea搭建WebService HelloWorld程序
31 0
|
8天前
|
前端开发 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)
35 0
|
8天前
|
分布式计算 监控 Java
Note_Spark_Day02:Standalone集群模式和使用IDEA开发应用程序
Note_Spark_Day02:Standalone集群模式和使用IDEA开发应用程序
53 0
|
8天前
|
SQL Java 关系型数据库
在IDEA中配置MySQL数据库连接以及在使用mybatis时设置sql语句的代码提示功能
在IDEA中配置MySQL数据库连接以及在使用mybatis时设置sql语句的代码提示功能
|
8天前
MyBatis-Plus 实战教程四 idea插件(二)
MyBatis-Plus 实战教程四 idea插件
62 0
|
8天前
|
SQL 前端开发 API
MyBatis-Plus 实战教程四 idea插件(一)
MyBatis-Plus 实战教程四 idea插件
103 0
|
8天前
|
分布式计算 Java Hadoop
IDEA 打包MapReduce程序到集群运行的两种方式以及XShell和Xftp过期的解决
IDEA 打包MapReduce程序到集群运行的两种方式以及XShell和Xftp过期的解决
|
8天前
|
Java 数据库连接 数据库
Mybatis【第一个 Mybatis 程序】
Mybatis【第一个 Mybatis 程序】