
Mybatis学习(1)
资源管理不便:需要手动获取和释放数据库连接,容易出现资源泄漏 事务控制复杂:事务管理需要手动开始和 rollback,逻辑较为复杂 代码冗余:需要重复编写连接和事务管理代码,增加开发难度 简化数据库操作:通过配置文件定义SQL语句,减少代码冗余 支持事务管理:通过配置文件定义事务管理策略,简化事务处理 缓存机制:提供多种缓存策略,提升数据库性能 支持多种数据库:兼容多种数据库类型,如MySQL、Oracle等 根据用户ID查询用户信息 根据用户名模糊查询用户信息 添加用户 根据ID删除用户 根据ID更新用户
2.1
2.2
SQL语句格式:在MyBatis的映射文件中, 事务管理:默认使用 JDBC 事务管理,开发者无需手动管理事务 缓存机制:可以通过配置文件设置缓存策略,提升数据库性能
发布日期:2025-04-14 07:11:16
浏览次数:11
分类:精选文章
本文共 5660 字,大约阅读时间需要 18 分钟。
MyBatis入门程序详解
一、原生态JDBC程序存在的问题
传统的JDBC程序在处理数据库事务时,需要手动管理连接和事务,这种方式容易出现以下问题:
二、MyBatis框架概述
MyBatis是一种基于SQL映射的持久化框架,它的核心思想是通过XML或注解文件定义数据库操作,简化了 JDBC程序的开发流程。其主要优势包括:
三、入门程序开发
本节将通过一个简单的用户信息管理系统,完成以下功能:
1. 环境搭建
1.1 MyBatis下载与导入
MyBatis框架可以通过以下方式获取:
- 官方网站:https://mybatis.org/
- ** Maven仓库**:https://mvnrepository.com/
下载完成后,将MyBatis相关JAR包添加到项目中。常用的依赖包包括:
mybatis-spring
:用于整合MyBatis和Springmybatis-annotation
:用于注解风格开发mybatis-dynamic-sql
:用于动态SQL语句
1.2 工程结构
项目目录结构应如下:
项目根目录├── src│ ├── main│ │ ├── java│ │ │ └── com│ │ │ └── cy│ │ │ └── po│ │ │ └── User.java│ │ └── resources│ │ ├── config│ │ │ ├── log4j.properties│ │ │ ├── db.properties│ │ │ └── SqlMapConfig.xml│ │ └── sqlmap│ │ └── User.xml├── test│ └── java│ └── com│ └── cy│ └── first│ └── MybatisFirst.java
2. 配置文件说明
2.1 db.properties
jdbc.driver=com.mysql.jdbc.Driverjdbc.url=jdbc:mysql://localhost:3306/mybatisjdbc.username=rootjdbc.password=root
2.2 SqlMapConfig.xml
3. POJO类开发
package com.cy.po;public class User { private int id; private String username; private String sex; private Date birthday; private String address; // setter和getter方法省略...}
4. SQL映射文件
SELECT LAST_INSERT_ID() INSERT INTO user(username, birthday, sex, address) VALUES(#{username}, #{birthday}, #{sex}, #{address})DELETE FROM user WHERE id=#{id} UPDATE user SET username=#{username}, birthday=#{birthday}, sex=#{sex}, address=#{address} WHERE id=#{id}
5. 测试代码
package com.cy.first;import org.apache.ibatis.io.Resources;import org.apache.ibatis.session.SqlSession;import org.apache.ibatis.session.SqlSessionFactory;import org.junit.Test;import com.cy.po.User;public class MybatisFirst { @Test public void findUserByIdTest() throws IOException { String resource = "SqlMapConfig.xml"; InputStream inputStream = Resources.getResourceAsStream(resource); SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream); SqlSession sqlSession = sqlSessionFactory.openSession(); User user = sqlSession.selectOne("test.findUserById", 1); System.out.println(user); sqlSession.close(); } @Test public void findUserByNameTest() throws IOException { String resource = "SqlMapConfig.xml"; InputStream inputStream = Resources.getResourceAsStream(resource); SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream); SqlSession sqlSession = sqlSessionFactory.openSession(); ListuserList = sqlSession.selectList("test.findUserByName", "小明"); System.out.println(userList); sqlSession.close(); } @Test public void insertUserTest() throws IOException { String resource = "SqlMapConfig.xml"; InputStream inputStream = Resources.getResourceAsStream(resource); SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream); SqlSession sqlSession = sqlSessionFactory.openSession(); User user = new User(); user.setUsername("王小军"); user.setBirthday(new Date()); user.setSex("1"); user.setAddress("河南郑州"); sqlSession.insert("test.insertUser", user); sqlSession.commit(); System.out.println("用户ID: " + user.getId()); sqlSession.close(); } @Test public void deleteUserTest() throws IOException { String resource = "SqlMapConfig.xml"; InputStream inputStream = Resources.getResourceAsStream(resource); SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream); SqlSession sqlSession = sqlSessionFactory.openSession(); sqlSession.delete("test.deleteUser", 29); sqlSession.commit(); sqlSession.close(); } @Test public void updateUserTest() throws IOException { String resource = "SqlMapConfig.xml"; InputStream inputStream = Resources.getResourceAsStream(resource); SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream); SqlSession sqlSession = sqlSessionFactory.openSession(); User user = new User(); user.setId(28); user.setUsername("王大军"); user.setBirthday(new Date()); user.setSex("2"); user.setAddress("河南郑州"); sqlSession.update("test.updateUser", user); sqlSession.commit(); sqlSession.close(); }}
6. 注意事项
INSERT
、SELECT
等语句不需要分号结尾通过以上步骤,可以完成一个基本的MyBatis入门程序开发,熟悉其框架特点和使用方法后,可以进一步探索更复杂的功能,如缓存、动态SQL、事务管理等。
发表评论
最新留言
路过按个爪印,很不错,赞一个!
[***.219.124.196]2025年05月24日 04时35分08秒
关于作者

喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
modprobe
2025-04-14
ModStart 是一个基于 Laravel 模块化极速开发网站框架
2025-04-14
Modular RAG:向“平台”级演进
2025-04-14
module 'queue' has no attribute 'Queue'解决
2025-04-14
Module Federation在vue3中使用vue2的组件
2025-04-14
Module Zero之语言管理
2025-04-14
ModuleNotFoundError: No module named ‘_bz2‘
2025-04-14
ModuleNotFoundError: No module named ‘_lzma‘
2025-04-14
ModuleNotFoundError:没有名为“versioneer“的模块
2025-04-14
ModuleNotFoundError:Spyder中没有名为Pip&39;的模块
2025-04-14
Module加载
2025-04-14
MogoTemplate基本入门(Mongodb数据库基本增删改查)
2025-04-14
Mojarra JSF ViewState 反序列化漏洞复现
2025-04-14
My new English
2025-04-14
Mojo:比 Python 快 35000 倍的编程语言诞生!
2025-04-14