Mybatis细致讲解

x33g5p2x  于2022-03-08 转载在 其他  
字(3.8k)|赞(0)|评价(0)|浏览(150)

我们学过servlet,在servlet项目中,我们使用的是JDBC的五大基本步骤,这里先回顾一下:

1:加载驱动

  • Class.forName(“com.mysql.cj.jdbc.Driver”);

2:获取数据库连接:

  • String url = “jdbc:mysql://localhost:3306/mybatis?useUnicode=true&characterEncoding=utf8&serverTimezone=GMT%2B8&useSSL=false”

  • String user = root;

  • String password = root

  • Connection conn = DriverManager.getConnection(“jdbc:mysql://localhost:3306/xxx”, “root”, “root”);

3:获取执行sql语句的对象:

  • String sql = …

  • Statement statement = conn.createStatement(sql);

4:执行sql语句:

  • ResultSet resultSet = statement.executeUpdate(sql);

5:操作结果集,关闭连接:

这里我们假设已经有了一个实体类:User,然后可以创建集合遍历结果集并存入集合中:

List<User> list = new ArrayList<>();
while(resultSet .next){
   User user = new User;
   user.setUserId= (resultSet.getInt("userId"));
   user.setUserName = (resultSet.getInt("userName"));
   list.add(user)
}

然后我来说一下Mybatis是什么,Mybatis其实就是帮我们封装好了上述的步骤,因为在我们学习servlet中,我们会发现我们每每使用一次数据库就需要不断的去加载驱动,这样做很麻烦而且浪费了内存,所以Mybatis帮我们做的就是封装起来这些

我具体来演示一下,首先我们创建好了一个基本的Mybatis项目,第一步我们就是去写好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>

    <!--  配置mybatis环境-->
    <environments default="development">
        <!-- id:数据源名称-->
        <environment id="development">
             <!--  事务类型:使用JDBC的事务,使用Connection的提交和回滚-->
            <transactionManager type="JDBC"/>
              <!-- 数据源:dataSource数据源,创建Connection对象 type=“POOLED“ 使用数据库连接池技术 -->
            <dataSource type="POOLED">
                <!-- 连接数据库的四个参数 mysql8.0-->
                <property name="driver" value="com.mysql.cj.jdbc.Driver"/>
                <property name="url"
                          value="jdbc:mysql://localhost:3306/mybatis?useUnicode=true&amp;characterEncoding=utf8&amp;serverTimezone=GMT%2B8&amp;useSSL=false"/>
                <property name="username" value="root"/>
                <property name="password" value="root"/>
            </dataSource>
        </environment>
    </environments>
    <mappers>
        <mapper resource="com/ftz/demo/pojo/User.xml"/>
    </mappers>
</configuration>

上面我很详细的注释了每一步的目的是什么,我们会发现在原来JDBC中的驱动和连接都写在了这里,其中在这个地方用到了数据库连接池技术,上面的代码我们在Mybatis中文官网就可以直接复制粘贴,都是不需要自己手写的!:

然后我们接下来就是去写一个实体类:

上面简单的用了一下Lombok插件自动生成的get set方法,大家也可以自己手写,然后在写好这些后,按照JDBC我们需要写sql语句了,在Mybatis我们的sql语句是可以直接写在.xml文件中的,我们也可以叫做mysql的映射文件

我们这里由于是.xml文件,所以是以标签的形式写主题内容,我们的sql语句就写在了select标签里面,这里我们比原来多写了一个命名空间叫做namespace,这里可以等价于我们曾经写的方法名字,说白了就是为这个sql语句单独起一个名字,方便我们后续调用sql语句的时候明确调用哪一条语句,并且这里需要写清楚返回值类型,我们这里直接使得返回类型对应实体类,这也就强制实体类中创建的属性必须与数据库中的字段一一对应!

然后我们回到Mybatis.xml这个配置文件中,为了保证我们可以让mybatis文件索引到我们的mysql映射文件,我们需要在下面加上mapper映射路径:

接下来我们就可以写测试类了:

package com.ftz.demo.test;

import com.ftz.demo.pojo.User;
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.Reader;
import java.util.List;

public class Test01 {

    @Test
    public  void  test01() throws IOException {
        //1:读取mybatis配置文件
        Reader reader  = Resources.getResourceAsReader("mybatis.xml");
        //2:创建sqlSessionFactory对象,目的是获取sqlSession的创建工厂:其实就是connection对象的封装
        SqlSessionFactory sqlSessionFactory  = new SqlSessionFactoryBuilder().build(reader);
        //3:创建SqlSession
        SqlSession sqlSession = sqlSessionFactory.openSession();
        //4:执行sql语句
        List<User> userList = sqlSession.selectList("com.ftz.demo.pojo.User.queryALL");
        // 5:遍历结果
        for (User user:userList){
            System.out.println(user);
        }
        //6:关闭资源
        sqlSession.close();
        

    }
}

在测试类中,我们发现,前面几步都是Mybatis帮我们做的,我们唯一决定性的就是上面我写的第四步执行sql语句: List<User> userList = sqlSession.selectList("com.ftz.demo.pojo.User.queryALL");

所以说Mybatis本质还是JDBC,只不过简化了我们的配置,可以理解成我们有了一个工厂去实现原来JDBC中我们的操作,使用工厂创建,并且修改sql语句可以不去修改源码,而是直接修改配置文件就好

还有一个就是过滤文件,由于我们写的xml都是在resources下面的,所以我们选哟在pom里面配置文件过滤:

相关文章

微信公众号

最新文章

更多

目录