MyBaties简单配置记录一下

ok 在开始时, 肯定第一步就是将 Mybatis3的坐标添加到pom文件中。

        <!-- mybatis -->
        <dependency>
            <groupId>org.mybatis</groupId>
            <artifactId>mybatis</artifactId>
            <version>3.5.7</version>
        </dependency>

 

在java的资源文件夹中创建一个xml文件,文件名任意,在这个xml文件中为Mybatis添加配置

1.这个时xml配置文件的头,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">

2.接下类直接上代码 (代码中都会注释到)

路径问题:将配置文件放到 图中的resources文件夹中, 此文件夹被Idea标注为资源文件夹的根

 

 

 

复制代码
 <configuration>
<!-- 资源配置:resource 默认资源根 --> <!-- 且配置此外部资源时,要在根标签下配置--> <properties resource="jdbc.properties"/> <settings> <!-- sql 日志配置(显示在控制窗口) --> <setting name="logImpl" value="STDOUT_LOGGING"/> </settings> <environments default="development"> <environment id="development"> <!-- 事务管理(起始有俩个参数 JDBC、MANAGED) -->
       <!-- 此标签 为事务管理器 JDBC参数直接使用了JDBC的提交和回滚设置,它依赖从数据源获得的连接来管理事务作用域。
                    MANAGED:它从不提交或回滚一个连接,而是让容器来管理事务的整个生命周期(比如 JEE 应用服务器的上下文)。
                         默认情况下它会关闭连接。然而一些容器并不希望连接被关闭,因此需要将 closeConnection 属性设置为 false 来阻止默认的关闭行为-->
<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文件中 写sql语句呀,那么就需要告诉MyBatis去哪找这个资源,下面为找的方法(四种方法)
<mappers> 
<mapper resource="com/mapper/StuMapper.xml"/>
</mappers>
</configuration>
复制代码

方法1:

<mapper> 
    <!-- 要映射的包路径-->
   <package name="org.mybatis.builder"/>
<mapper>

方法2.

<!-- 使用相对于类路径的资源引用 -->
<mappers>
  <!-- 要映射的xml文件路径-->
  <mapper resource="org/mybatis/builder/AuthorMapper.xml"/>
</mappers>

方法3.

<!-- 使用映射器接口实现类的完全限定类名 -->
<mappers>
  <mapper class="org.mybatis.builder.AuthorMapper"/>
</mappers>

方法4.

<!-- 使用完全限定资源定位符(URL) -->
<mappers>
  <mapper url="file:///var/mappers/AuthorMapper.xml"/>
</mappers>

 

 

复制代码
service层: 

public class StuServiceImpl implements StuService {
    @Override
    public List<Stu> getAll() {
        SqlSession sqlSession = null;
        StuMapper mapper;
        List<Stu> all;
        InputStream inputStream = StuServiceImpl.class.getClassLoader().getResourceAsStream("mybatis.xml");
        // 要想造对象 就要先建工厂
        SqlSessionFactory factory = new SqlSessionFactoryBuilder().build(inputStream);
        // 在工厂中创建一个对象 实例化xml文件
        try {
            // 线程不安全, 用后将其放在finally中关闭
            sqlSession = factory.openSession();
            mapper = sqlSession.getMapper(StuMapper.class);
       // 调用我们定义的方法
            all = mapper.getAll();
        } finally {
            if (sqlSession != null)
                sqlSession.close();
        }
        return all;
    }
}
复制代码
复制代码
Mapper层的XML文件 编写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="com.mapper.StuMapper"> <!-- id: 需要实现的方法名 --> <!-- resultType 代表返回的结果集中 元素的类型--> <select id="getAll" resultType="com.domain.Stu"> select * from student; </select> </mapper>
复制代码

突发奇想试着封装了一下(只是针对单个接口)

多个接口的或,也比较简单 反射获取接口对象数组;遍历

复制代码
package com.utile;


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;

/**
 * 对MyBatis获取SqlSession的封装
 */
public class GetSqlSession {
    // 静态成员变量, 在调用结束后关闭通道
    public static SqlSession sqlSession = null;
    /**
     * 
     * @param resourcesName 资源名称 (String)
     * @param interfaceName 接口根路径 (String)
     * @return 调用的接口 Object 对象
     */
    public static Object getSqlSession(String resourcesName, String interfaceName) {
        Object mapper = null;
        InputStream inputStream = null;
        try {
            // mybatis资源文件
            inputStream = Resources.getResourceAsStream(resourcesName);
        } catch (IOException e) {
            e.printStackTrace();
        }
        // 要想造对象 就要先建工厂
        SqlSessionFactory factory = new SqlSessionFactoryBuilder().build(inputStream);
        // 在工厂中创建一个对象 实例化xml文件 sqlSession 线程不安全, 用后将其放在finally中关闭
        sqlSession = factory.openSession();
        // 获取到mapper对象
        try {
            mapper = sqlSession.getMapper(Class.forName(interfaceName));
        } catch (ClassNotFoundException e) {
            e.printStackTrace();
        }
        return mapper;
    }
}
复制代码

只是随便记录如何简单的配置MyBatis

MyBatis中文配置文档:https://mybatis.org/mybatis-3/zh/index.html

posted @   PointerNUll..M  阅读(32)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 按钮权限的设计及实现
· 25岁的心里话
点击右上角即可分享
微信分享提示