微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

第一个Mybatis程序

编写第一个Mybatis程序

1.准备工作

1.1 新建一个Maven Web项目

image-20210411123435053

image-20210411123552333

1.2 在pom.xml文件中,导入依赖

  <dependencies>
<!--导入单元测试jar-->
    <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.4.6</version>
    </dependency>
<!--导入MysqL数据库驱动-->
    <dependency>
      <groupId>MysqL</groupId>
      <artifactId>mysql-connector-java</artifactId>
      <version>8.0.21</version>
    </dependency>
  </dependencies>

注意:在进行导入依赖时,建议也将资源文件导出到打包项目中的依赖进行导入

<!--保证在java和resources下的资源文件可以导出-->
<resources>
      <resource>
        <directory>src/main/java</directory>
        <includes>
          <include>**/*.xml</include>
          <include>**/*.properties</include>
        </includes>
      </resource>

      <resource>
        <directory>src/main/resources</directory>
        <includes>
          <include>**/*.xml</include>
          <include>**/*.properties</include>
        </includes>
      </resource>
    </resources>

1.3 创建数据库,进行数据库连接

1.4 完善项目结构

image-20210411125403063

2.编写实体类

编写与数据库中标对应的实体类:ORM

image-20210411132030825

3.编写mysbatis-config.xml文件,配置数据库配置

在Mybatis官网获得xml文件的格式模板,在resources下编写一个配置文件

image-20210411130637353

模板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>
    <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>
    <mappers>
        <mapper resource="org/mybatis/example/BlogMapper.xml"/>
    </mappers>
</configuration>

修正我们模板,对应我们的数据库配置

<?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>
<!--环境,可以配置多个  default="development":表示认使用的环境-->
    <environments default="development">
        <!--id="development":表示当前环境的id-->
        <environment id="development">
            <!--transactionManager:表示事务管理 type="JDBC":表示类型为jdbc-->
            <transactionManager type="JDBC"/>
            <!--dataSource:表示数据源 type="POOLED":表示数据源类型-->
            <dataSource type="POOLED">
                <!--property name="driver":数据库驱动名 value="${driver}":值-->
                <property name="driver" value="com.MysqL.jdbc.Driver"/>
                <!--property name="url":数据库url  value="${url}"-->
                <!--时区与编码问题需要注意-->
                <property name="url" value="jdbc:MysqL://localhost:3306/mybatis?useSSL=true&amp;charset=utf-8&amp;serverTimezone=UTC"/>
                <!--property name="username":用户名 value="${username}"-->
                <property name="username" value="root"/>
                <!--property name="password":密码 value="${password}-->
                <property name="password" value="liyu297628"/>
            </dataSource>
        </environment>
    </environments>
    <!--每个mapper.xml文件都需要在mybatis的核心配置文件中进行绑定-->
    <mappers>
        <!--这里的配置需要在编写Dao的xml文件后配置-->
        <mapper resource="org/mybatis/example/BlogMapper.xml"/>
    </mappers>
</configuration>

4.编写MybatisUtil工具类,获得sqlSession类

我们需要获得sqlSession类(这里的sqlSession类可以将其比作Connection类,这个sqlSession封装了很多执行sql语句的方法),所以我们可以编写一个根据类,来获得sqlSession。

MybatisUtil工具类

package com.xiaoli.util;

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 MybatisUtil {
    private static sqlSessionFactory sessionFactory;

    static {
        //xml文件路径
        String xmlPath = "mybatis-config.xml";
        //获取xml文件的流
        InputStream resourceAsstream = null;
        try {
            resourceAsstream = Resources.getResourceAsstream(xmlPath);
        } catch (IOException e) {
            e.printstacktrace();
        }
        //获取sqlSessionFactory工厂,用于获取sqlSession
        sessionFactory = new sqlSessionFactoryBuilder().build(resourceAsstream);

    }

    public static sqlSession getsqlSession(){
        return sessionFactory.openSession();
    }
}

测试:

image-20210411134238200

如果出现错误,我们需要先把mybatis-config.xml,中的mapper标签注释掉:

image-20210411134519308

5.编写执行sql语句的xml的dao文件

image-20210411132512626

我们可以发现,上面的三个文件中,UserDao与UsereDaoImpl是我们所熟悉的,现在我们使用UserMapper.xml文件来代替实现类。

UserDao代码

package com.xiaoli.dao;

import com.xiaoli.pojo.User;

import java.util.List;

public interface UserDao {
    public List<User> getUserList();
}

UserMapper.xml文件代码我们可以通过Mybatis官网获得模板,

模板代码

<?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="org.mybatis.example.BlogMapper">
  <select id="selectBlog" resultType="Blog">
    select * from Blog where id = #{id}
  </select>
</mapper>

我们修改模板代码,使其成为我们需要的代码

<?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:即我们之前的dao  namespace="org.mybatis.example.BlogMapper":填入我们需要绑定的接口 Dao/Mapper-->
<mapper namespace="com.xiaoli.dao.UserDao">
    <!--<select:需要执行sql语句 id="selectBlog":表示绑定的dao方法 resultType="Blog":表示返回的数据类型>-->
    <select id="getUserList" resultType="com.xiaoli.pojo.User">
        select *from mybatis.user
    </select>
</mapper>

6.对mybatis-config.xml文件的Mapper标签进行修改,使其绑定我们需要执行的sql语句的xml文件

image-20210411135312757

xml代码

    <!--每个mapper.xml文件都需要在mybatis的核心配置文件中进行绑定-->
    <mappers>
        <!--这里的配置需要在编写Dao的xml文件后配置-->
        <mapper resource="com.xiaoli.dao/UserMapper.xml"/>
    </mappers>

7.编写测试类,测试sql语句执行结果

image-20210411135428753

测试代码

package com.xiaoli.dao;

import com.xiaoli.pojo.User;
import com.xiaoli.util.MybatisUtil;
import org.apache.ibatis.session.sqlSession;
import org.junit.Test;

import java.util.List;

//测试sql语句执行结果
public class UserDaoTest {
    @Test
    public void test(){
       //获取sqlSession对象
        sqlSession sqlSession = MybatisUtil.getsqlSession();

        //获取UserMapper.xml所对应的接口
        UserDao mapper = sqlSession.getMapper(UserDao.class);

        //执行sql语句,获取执行结果集(相当于ResultSet)
        List<User> userList = mapper.getUserList();

        //遍历
        for (User user : userList) {
            System.out.println(user);
        }
    }
}

运行结果:(可能会成功,也可能会出错)----resource加载文件必须使用 /

image-20210411135723862

重新配置,运行:

移动目录:

image-20210411135901984

修改mybatis-config.xml文件的mapper标签

image-20210411140311505

运行:

image-20210411140535774

具体细节:

为什么mapper.xml文件需要保存在resources文件下?---------------------resource加载文件必须用 /

链接:

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。