MyBatis入门程序
下载 Mybatis 核心包
- http://www.mybatis.org/mybatis-3/getting-started.html
- https://github.com/mybatis/mybatis-3/releases
- https://files.cnblogs.com/files/BNTang/MyBatis.zip
创建工程,引入 MyBatis 核心包及其他依赖包一起。
在 database
中创建 customer
表,并初始化一些测试数据脚本如下。
-- BNTang
DROP TABLE IF EXISTS `customer`;
CREATE TABLE `customer` (
`cust_id` int(11) NOT NULL AUTO_INCREMENT,
`cust_name` varchar(255) DEFAULT NULL,
`cust_profession` varchar(255) DEFAULT NULL,
`cust_phone` varchar(255) DEFAULT NULL,
`email` varchar(255) DEFAULT NULL,
PRIMARY KEY (`cust_id`)
) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8;
-- BNTang
INSERT INTO `customer` VALUES ('1', '鲁班', '射手', '13499887733', '12341241@qq.com');
INSERT INTO `customer` VALUES ('2', '李白', '刺客', '18977665521', 'libai@163.com');
INSERT INTO `customer` VALUES ('3', '阿轲', '刺客', '18977665997', 'aike@qq.com');
INSERT INTO `customer` VALUES ('4', '德玛西亚', '肉盾', '13700997665', 'demaxiya.126.com6');
INSERT INTO `customer` VALUES ('5', '亚索', '战士', '13586878987', 'yasuo@qq.com');
INSERT INTO `customer` VALUES ('6', '奶妈', '辅助', '13398909089', 'nama@qq.com');
INSERT INTO `customer` VALUES ('7', '剑圣', '刺客', '13398909088', 'jiansheng@163.com');
INSERT INTO `customer` VALUES ('8', '盖伦', '肉盾', '15923242231', 'gailun@126.com');
INSERT INTO `customer` VALUES ('9', '锤石', '辅助', '13398908900', '8888@163.com');
INSERT INTO `customer` VALUES ('10', '阿木木', '辅助', '13398908928', '13398908928@qq.com');
然后在建立与表对应关系的的 domain
对象。
/**
* @author BNTang
*/
@Data
public class Customer {
private Integer cust_id;
private String cust_name;
private String cust_profession;
private String cust_phone;
private String email;
@Override
public String toString() {
return "Customer{" +
"cust_id=" + cust_id +
", cust_name='" + cust_name + '\'' +
", cust_profession='" + cust_profession + '\'' +
", cust_phone='" + cust_phone + '\'' +
", email='" + email + '\'' +
'}';
}
}
紧接着创建 MyBatis 的核心配置文件 SqlMappingConfig.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>
<!-- 与 Spring 整合后, environments 配置将废除, 使用 Spring 中的连接池来替代 -->
<environments default="development">
<environment id="development">
<!-- 使用JDBC事务管理 -->
<transactionManager type="JDBC"/>
<!-- 配置数据库连接池 -->
<dataSource type="POOLED">
<property name="driver" value="com.mysql.cj.jdbc.Driver"/>
<property name="url"
value="jdbc:mysql://localhost:3306/it6666
?useUnicode=true&characterEncoding=UTF-8&serverTimezone=UTC"/>
<property name="username" value="root"/>
<property name="password" value="root"/>
</dataSource>
</environment>
</environments>
</configuration>
紧接着创建 Mapping
文件,主要的作用就是用来将 domain
对象与表之间建立映射关系,用来编写对应的 SQL 语句,新建一个 CustomerMapper.xml
文件,内容如下。
<?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="myFirstMapper">
<!-- 根据 cust_id 查询客户 -->
<select id="queryCustomerById" parameterType="Int" resultType="top.it6666.domain.Customer">
SELECT *
FROM `customer`
WHERE cust_id = #{cust_id}
</select>
</mapper>
修改核心配置文件,在当中引入一下我们刚刚创建的 Mapping
文件内容如下。
<!-- 加载 mapper 映射文件 -->
<mappers>
<mapper resource="top/it6666/mapper/CustomerMapper.xml"></mapper>
</mappers>
创建 psvm
创建工厂, 执行 SQL 语句,内容如下,编写好了如下内容运行即可开始测试。
/**
* @author BNTang
*/
public class TestMain {
public static void main(String[] args) throws Exception {
// 1.创建 SqlSessionFactoryBuilder 对象
SqlSessionFactoryBuilder sqlSessionFactoryBuilder = new SqlSessionFactoryBuilder();
// 2.加载 SqlMapConfig.xml 配置文件
InputStream inputStream = Resources.getResourceAsStream("SqlMappingConfig.xml");
// 3.创建 SqlSessionFactory 对象
SqlSessionFactory sqlSessionFactory = sqlSessionFactoryBuilder.build(inputStream);
// 4.创建 SqlSession 对象
SqlSession sqlSession = sqlSessionFactory.openSession();
// 5.执行 SqlSession 对象执行查询 第一个参数是 CustomerMapper.xml 的 statement 的 id,第二个参数是执行 SQL 需要的参数
Customer customer = sqlSession.selectOne("queryCustomerById", 1);
// 6.打印结果
System.out.println(customer);
// 7.释放资源
sqlSession.close();
}
}
最终的文件目录结构如下图所示。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· winform 绘制太阳,地球,月球 运作规律
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· AI 智能体引爆开源社区「GitHub 热点速览」
· 写一个简单的SQL生成工具