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
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 按钮权限的设计及实现
· 25岁的心里话