深入浅出JAVA MyBatis快速入门

创建项目前的环境搭建

本篇使用工具:

1、JDK:jdk1.8

2、Mysql l数据库 :mysql-5.7.31-winx64

3、Maven 开发工具 :apache-maven-3.8.1

4、IDEA开发工具: IntelliJ IDEA 2020.1.3 x64

在这里我们使用 MyBatis 开发一个简单的 Java 项目完成增删改查(默认你已安装JDK和MySQL及会使用Maven和IDEA的基本操作)

简介

什么是 MyBatis?

MyBatis 是一款优秀的持久层框架,它支持自定义 SQL、存储过程以及高级映射。MyBatis 免除了几乎所有的 JDBC 代码以及设置参数和获取结果集的工作。MyBatis 可以通过简单的 XML 或注解来配置和映射原始类型、接口和 Java POJO(Plain Old Java Objects,普通老式 Java 对象)为数据库中的记录。

特点
  1. 简单易学本身就很小且简单。没有任何第三方依赖,最简单安装只要两个jar文件+配置几个sql映射文件易于学习,易于使用,通过文档和源代码,可以比较完全的掌握它的设计思路和实现。
  2. 灵活:mybatis不会对应用程序或者数据库的现有设计强加任何影响。 sql写在xml里,便于统一管理和优化。通过sql语句可以满足操作数据库的所有需求。

    解除sql与程序代码的耦合:通过提供DAO层,将业务逻辑和数据访问逻辑分离,使系统的设计更清晰,更易维护,更易单元测试。sql和代码的分离,提高了可维护性。

    (1)提供映射标签,支持对象与数据库的orm字段关系映射

    (2)提供对象关系映射标签,支持对象关系组建维护

    (3)提供xml标签,支持编写动态sql

(开始)创建Maven项目,导入依赖

创建一个新的Maven项目

第一步:

CE6D616A-E8CF-0B56-14B5-D8F2EAF0D785.png

第二步:

0BC85E0D-BF96-7252-E371-B97685162CE6.png

第三步:

A4483842-7584-6BAD-1BF4-AFFD617DF0B0.png

第四步

96FF1579-6E1B-BBCB-2928-F1778974177B.png

第五步

3CF3F087-E12D-1CD5-7C36-91E26CDF1CCB.png

所需依赖

直接放到 pom.xml中即可

<dependencies>
        <!--junit:测试用的-->
        <dependency>
            <groupId>junit</groupId>
            <artifactId>junit</artifactId>
            <version>4.11</version>
            <scope>test</scope>
        </dependency>

        <!--    mybatis依赖-->
        <dependency>
            <groupId>org.mybatis</groupId>
            <artifactId>mybatis</artifactId>
            <version>3.5.1</version>
        </dependency>
        <!--    mysql驱动-->
        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <version>5.1.9</version>
        </dependency>
    </dependencies>

    <build>
    <resources>
        <resource>
            <directory>src/main/java</directory><!--所在目录-->
            <includes><!--包括目录下的 .properties,.xml 文件都会扫描到-->
                <include>**/*.properties</include>
                <include>**/*.xml</include>
            </includes>
            <filtering>false</filtering>
        </resource>
    </resources>
    </build>
(开始)在数据库中创建表

创建 users 表

表名 :users

userld :id
userName : 姓名
userword : 密码
sex : 性别
email :邮箱

创建表详细信息

04EC0DA9-9B6F-BCEF-A95A-AA69C1F69D38.png

添加几条假数据

4FA5392D-232A-3A3B-7C4E-2BB575A21140.png

创建实体类

包名

DBCDCAE0-A250-F4DD-7AD5-FFED19D4A178.png

给实体类添加 有参,无参方法,get,set方法,toString方法

package com.guanshiang.pojo;

//实体类
public class Users {
    private Integer userId;
    private String userName;
    private String userword;
    private String sex;
    private String email;

    public Users() {
    }

    public Users(Integer userId, String userName, String userword, String sex, String email) {
        this.userId = userId;
        this.userName = userName;
        this.userword = userword;
        this.sex = sex;
        this.email = email;
    }

    public Integer getUserId() {
        return userId;
    }

    public void setUserId(Integer userId) {
        this.userId = userId;
    }

    public String getUserName() {
        return userName;
    }

    public void setUserName(String userName) {
        this.userName = userName;
    }

    public String getUserword() {
        return userword;
    }

    public void setUserword(String userword) {
        this.userword = userword;
    }

    public String getSex() {
        return sex;
    }

    public void setSex(String sex) {
        this.sex = sex;
    }

    public String getEmail() {
        return email;
    }

    public void setEmail(String email) {
        this.email = email;
    }

    @Override
    public String toString() {
        return "Users{" +
                "userId=" + userId +
                ", userName='" + userName + '\'' +
                ", userword='" + userword + '\'' +
                ", sex='" + sex + '\'' +
                ", email='" + email + '\'' +
                '}';
    }
}

创建对应的接口,以及映射,xml文件

接口:

package com.guanshiang.mapper;

import com.guanshiang.pojo.Users;

import java.util.List;

//接口 操作Users表
public interface UsersMapper {

    //增加一条
    int addUsers(Users users);
    //删除一条
    int deleteUsersById(int id);
    //修改一条
    int updateUsers(Users users);
    //查询Users表的所有数据
    List<Users> queryUsers();
    //查询Users一条
    Users queryUsersByid(int id);

}

映射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.guanshiang.mapper.UsersMapper">
<!--
    select : 表示查询操作
    id:你要执行的sql语法的唯一标识,mybatis会使用这个id的值来找到要执行的sql语句
        可以自定义,但是要求你使用接口中的方法名称。

      resultType : 表示结果类型的,是sql语句执行后得到ResultSet,遍历这个ResultSet得到java对象的类型   执行完sql语句后,返回的java对象的类型
                值写的类型是权限类名称
 -->
    <!--查询所有-->
    <select id="queryUsers" resultType="com.guanshiang.pojo.Users">
        select * from users
    </select>

</mapper>

<!--
    sql映射文件:写sql语句的,mybatis会执行这些sql
    1、指定约束文件
    <!DOCTYPE mapper
        PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
        "http://mybatis.org/dtd/mybatis-3-mapper.dtd">

         mybatis-3-mapper.dtd是约束文件的名称,扩展名是dtd的。
     2、约束文件的作用:现在,检查在当前文件中出现的标签,属性必须符合mybatis的要求

     3、mapper 是当前文件的根标签,必须的。
        namepace:叫做命名空间,唯一值的,可以是自定义的字符串,
                要求你使用dao接口的全限定名称。
     4、在当前文件中,可以使用特定的标签,表示数据库的特定操作。
        <select>: 表示执行查询
        <update>:表示更新数据库的操作,就是在<update>中 写的是update sql语句
        <insert>:表示插入,放的是insert语句
        <delete>:表示删除,执行的delete语句

-->
从 XML 中构建 SqlSessionFactory

以下来自Mybatis官方文档

每个基于 MyBatis 的应用都是以一个 SqlSessionFactory 的实例为核心的。 SqlSessionFactory 的实例可以通过 SqlSessionFactoryBuilder 获得。而 SqlSessionFactoryBuilder 则可以从 XML 配置文件或一个预先配置的 Configuration 实例来构建出 SqlSessionFactory 实例。 从 XML 文件中构建 SqlSessionFactory 的实例非常简单,建议使用类路径下的资源文 件进行配置。 但也可以使用任意的输入流(InputStream)实例,比如用文件路径字符 串或 file:// URL 构造的输入流。MyBatis 包含一个名叫 Resources 的工具类,它包含 一些实用方法,使得从类路径或其它位置加载资源文件更加容易。

String resource = “org/mybatis/example/mybatis-config.xml”; InputStream inputStream = Resources.getResourceAsStream(resource); SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build (inputStream);

XML 配置文件中包含了对 MyBatis 系统的核心设置,包括获取数据库连接实例的数据 源(DataSource)以及决定事务作用域和控制方式的事务管理器 (TransactionManager)。后面会再探讨 XML 配置文件的详细内容,这里先给出一个 简单的示例:

创建XML配置文件

94190525-3CF3-C270-E44A-FC6B88DC445E.png

内容如下:

千万注意:下面连接数据库信息,要写你本地的信息。

千万注意:下面连接数据库信息,要写你本地的信息。

千万注意:下面连接数据库信息,要写你本地的信息。

<!DOCTYPE configuration
        PUBLIC "-//mybatis.org//DTD Config 3.0/EN"
        "http://mybatis.org/dtd/mybatis-3-config.dtd">
<configuration>
<!--    环境配置:数据库的连接信息
        default:必须和某个environment的id值一样。
        告诉mybatis使用哪个数据库的连接信息,也就是访问哪个数据库
        因为可能会有多个environment,也就是会有多个表数据,配置不同的表用不同的id
-->
        <environments default="mydiv">
<!--       environment     一个数据库信息的配置,环境
        id:一个唯一值,自定义:表示环境的名称
-->
            <environment id="mydiv">
<!--
    transactionManager: mybatis的事物务型
        type:JDBC(表示使用jdbc中的Connection对象的commit,rollback做事务处理)
-->
                <transactionManager type="JDBC"/>
<!--
        dataSource:表示数据源,连接数据库的
            type:表示数据源的类型,POOLED表示使用连接池
-->
                <dataSource type="POOLED">
<!--
    driver,user,username,password 是固定的,不能自定义。
-->
                    <!--数据库的驱动名-->
                    <property name="driver" value="com.mysql.jdbc.Driver"/>
                    <!--连接数据库的url字符串-->
                     <property name="url" value="jdbc:mysql://localhost:3306/guan"/>
<!--                    访问数据库的数据名称-->
                    <property name="username"   value="root"/>
<!--                    密码-->
                     <property name="password" value="guanshiang"/>
                </dataSource>
            </environment>
        </environments>

<!--    指定 sql mapper(sql映射文件)的位置-->
        <mappers>
<!--       一个1mapper标签指定一个文件的位置
            从类路径开始的路径信息。 target/clasess(类路径)
     -->
<!--            可出现多次mapper -->
            <mapper resource="com\guanshiang\dao\StudentDao.xml"/>
        </mappers>
</configuration>

<!--
    myvatis的主配置文件:主要定义了数据库的配置信息,sql映射文件的位置。


    1、约束文件的说明
    <!DOCTYPE configuration
        PUBLIC "-//mybatis.org//DTD Config 3.0/EN"
        "http://mybatis.org/dtd/mybatis-3-config.dtd">

        mybatis-3-config.dtd:约束文件名称

    2、configuration:根标签
-->

注意:看文件是否正确

<mappers>
        <mapper resource="com\guanshiang\dao\StudentDao.xml"/>
    </mappers>
在测试类中测试

在test中创建 测试类 Test01

package com.guanshiang;

import com.guanshiang.pojo.Users;
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 org.junit.Test;

import java.io.IOException;
import java.io.InputStream;
import java.util.List;

public class Test01 {

    @Test
    public void test() throws IOException {
        //访问mybatis 读取student数据
        //1、定义mybatis主配置文件的名称,从类路径的根开始(target/clasess)
        String config="mybatis.xml";
        //2、读取这个config表示的文件
        InputStream in = Resources.getResourceAsStream(config);
        //3、创建SqlSessionFactoryBuider对象
        SqlSessionFactoryBuilder builder = new SqlSessionFactoryBuilder();
        //4、创建SqlSessionFactory对象
        SqlSessionFactory factory = builder.build(in);
        //5、【重要】获取SqlSession对象,从SqlSessionFactory中获取SqlSession
        SqlSession sqlSession = factory.openSession();
        //6、【重要】指定要执行的sql语句的标识。sql映射文件中的namecapce + "." + 标签的id值
        String sqlId = "com.guanshiang.mapper.UsersMapper"+"."+"queryUsers";
        //7、执行sql语句,通过sqlId执行
        List<Users> users = sqlSession.selectList(sqlId);
        //8、输出
        for (Users u:users){
            System.out.println(u);
        }
        //9、关闭sqlSession对象
        sqlSession.close();
    }
}

运行结果:

Users{userId=2, userName='管世轩', userword='1234', sex='男', email='21@qq.com'}
Users{userId=3, userName='管世盎', userword='weqrwr', sex='男', email='2722696413@qq.com'}
Users{userId=4, userName='管世千', userword='guanshiang', sex='男', email='1234@qq.com'}
Users{userId=10, userName='花花', userword='123456', sex='女', email='2722696413@qq.com'}
Users{userId=11, userName='李博', userword='asdfasf', sex='男', email='2722696413@qq.com'}

总体目录

0C5CAEB8-D18A-9F40-EEC3-5C62B05B33B8.png

总结:

本次没有采用Mybatis工具类等。

如果想完成增删改查等,只需要

先写接口,在写对应的sql映射文件.xml

在测试类中测试即可,改变 6、7、8步骤即可

接口已在上面写好。

收藏 (0)
评论列表
正在载入评论列表...
我是有底线的