Java真的不难(四十一)Mybatis的入门

Mybatis的入门

哈喽大家好,好久不见!!!!

在上一篇文章中的JBDC是Java连接数据库的操作,但是JBDC在实际开发中存在繁琐、代码的复用性不高,然而Mybatis将解决了JBDC的繁琐问题,以后只需要写SQL即可,相当于半自动模式。

而Mybatis的代码是在GitHub上托管的
Mybatis官网:https://mybatis.org/mybatis-3/zh/index.html

首先我们得了解什么是ORM?

Object Relation Mapping: 对象关系映射。对象指的是Java对象,关系指的是数据库中的关系模型,对象关系映射,指的就是在Java对象和数据库的关系模型之间建立一种对应关系,比如用一个Java的Student类,去对应数据库中的一张student表,类中的属性和表中的列一一对应。

简单的说:一张表对于一个类,字段=类属性

一、创建项目,引入Mybatis

这里我们可以使用Maven来引用Mybatis:

首先创建一个Maven项目:
在这里插入图片描述
在创建好Maven项目后,会得到一个pom.xml配置文件

这里把pom.xml的配置信息放在这里,可以直接复制到 <dependencies> </dependencies>内即可,然后刷新即可加载成功

或者大家可以自行查看需要依赖的配置信息:https://mvnrepository.com/

        <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.10</version>
        </dependency>

        <dependency>
            <groupId>log4j</groupId>
            <artifactId>log4j</artifactId>
            <version>1.2.17</version>
        </dependency>

        <!--MySQL8驱动包-->
        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <version>8.0.16</version>
        </dependency>

如何查看是否添加成功?

在这里插入图片描述
在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">
<!-- 通过这个配置文件完成mybatis与数据库的连接 -->
<configuration>
	<!-- 引入 database.properties 文件-->
	<properties resource="database.properties"/>
	<!-- 配置mybatis的log实现为LOG4J -->
	<settings>
		<setting name="logImpl" value="LOG4J" />
	</settings>
	
	<environments default="development">
		<environment id="development">
			<!--配置事务管理,采用JDBC的事务管理  -->
			<transactionManager type="JDBC"></transactionManager>
			<!-- POOLED:mybatis自带的数据源,JNDI:基于tomcat的数据源 -->
			<dataSource type="POOLED">
				<property name="driver" value="${driver}"/>
				<property name="url" value="${jdbc.url}"/>
				<property name="username" value="${user}"/>
				<property name="password" value="${password}"/>
			</dataSource>
		</environment>
	</environments>
	
	<!-- 将mapper文件加入到配置文件中 -->
	<mappers>
	<!-- 这里的文件根据自己的路径以及文件名来配置即可-->
		<mapper resource="mapper/DeptMapper.xml"/>
	</mappers>
</configuration>

接着还是和JBDC一样创建一个database.properties文件,在里面写入数据库的信息:

driver= com.mysql.cj.jdbc.Driver
jdbc.url=jdbc:mysql://localhost:3306/数据库名?characterEncoding=utf8&useSSL=false&serverTimezone=UTC&rewriteBatchedStatements=true 
user=?  //填写自己的数据库用户名,一般为root
password=?  //数据库密码

二、创建pojo类

首先在dao层可以定义一个接口:

public interface DeptMapper {
    /**
     * 查询所有部门
     */
    public List selectDeptList();
}

创建一个实体类,实现ORM


public class Dept {

    private Integer deptNo; //部门编号
    private String deptName; //部门名称
    private String password;  //密码
    private String address;  //地址


    @Override
    public String toString() {
        return "Dept{" +
                "deptNo=" + deptNo +
                ", deptName='" + deptName + '\'' +
                ", password='" + password + '\'' +
                ", address='" + address + '\'' +
                '}';
    }
    
}

这个类和数据库的部门表是相互对应的:
在这里插入图片描述

三、编写mapper映射文件(写SQL)

<?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="db.dao.DeptMapper">
    
    <select id="selectDeptList" resultType="db.pojo.Dept">
        SELECT * FROM dept
    </select>
    
</mapper>

我们可以把Mybais的常用语句封装在一个工具类里面,这样就可以给全局使用:

public class MybatisUtils {

    private  static SqlSessionFactory factory;
    static {
        InputStream is;
        try {
            //通过IO流获取到mybatis-config.xml中的配置信息
            is= Resources.getResourceAsStream("mybatis-config.xml");
            factory= new SqlSessionFactoryBuilder().build(is);
        } catch (IOException e) {
            e.printStackTrace();
        }
    }

    /**
     * 获取到sqlSession
     * @return
     */
    public  static SqlSession createSqlSession(){
        return  factory.openSession();
    }

    /**
     * 关闭sqlSession
     * @param sqlSession
     */
    public static void  closeSqlsession(SqlSession sqlSession){
        if(sqlSession!=null){
            sqlSession.close();
        }
    }
}

最后是测试类:

    @Test
    public void test02(){
        //获取到sqlSessionFactory,再获取到sqlsession
        SqlSession sqlSession=null;

        try {
            sqlSession = MybatisUtils.createSqlSession();

            DeptMapper deptMapper = sqlSession.getMapper(DeptMapper.class);
            List<Dept> deptList = deptMapper.selectDeptList();

            for (Dept dept : deptList) {
                System.out.println(dept.toString());
            }
        } catch (Exception e) {
            sqlSession.rollback();
            e.printStackTrace();
        }finally{
            MybatisUtils.closeSqlsession(sqlSession);
        }
    }

运行结果:
在这里插入图片描述
我们可以看到数据库里面的数据被取到然后打印了出来,这就是通过Mybatis实现的

虽然在第一次创建、配置、使用Mybatis的时候可能比较麻烦,步骤多,但是当你在一个项目内配置好了后,在后面使用过程中只要写SQL即可,其他连接的问题Mybatis都已经帮你做了。

好啦,大家快去试试吧,

在这里插入图片描述

评论 23
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

热爱飞行的小应学长

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值