本文共 8496 字,大约阅读时间需要 28 分钟。
MyBatis ORM框架简介
MyBatis 是一个基于 ORM(对象关系映射)技术的数据访问层框架,旨在简化数据库操作,提高开发效率。它通过将数据库操作抽象为简洁的API,帮助开发者减少手动写作SQL语句的工作量,从而提升项目性能和可维护性。
框架的定义
框架是一种对现有的技术进行封装和抽象,目的是为了提升开发效率和项目性能。框架通常提供了一套完整的解决方案,涵盖了从数据接收到业务逻辑处理的全流程。在 Java 开发中,框架的应用可以帮助开发者快速构建复杂的应用系统。
在 Web 开发中,一个典型的项目可以分为三大层次:
在当前的 Java Web 开发中,SSM(SpringMVC + Spring + MyBatis)是最流行的三大框架之一。
ORM(对象关系映射)的作用
ORM 的全称是 Object-Relational Mapping,意为“对象与关系映射”。在 Java 开发中,我们通常使用关系型数据库来存储数据,而 Java 程序只能操作 Java 对象。因此,我们需要将 Java 对象映射到关系型数据库中的行和列。
具体来说:
- Java 类可以对应关系型数据库中的一个数据表。
- Java 类中的成员变量(字段)对应数据库表中的列。
- Java 对象可以对应数据库表中的一行记录。
通过 ORM 技术,我们可以将复杂的数据库操作(如插入、更新、删除、查询等)封装到 MyBatis 的 API 中,从而简化数据库交互。
MyBatis 的优点
MyBatis 的核心思想是“将数据访问逻辑完全封装在 Java 类中”,通过配置文件和 XML 映射文件,开发者可以轻松实现数据库操作。
MyBatis 的使用步骤
1. 准备数据库表
首先,需要创建一个关系型数据库表。以下是一个示例:
create table t_person( per_id int primary key auto_increment, per_name varchar(20), per_age int, per_address varchar(30));
2. 创建 Maven 工程
打开你的开发环境,创建一个新的 Maven 项目。建议命名为 mybatis-test,选择 Java 作为语言,选择 Maven 来管理依赖。
3. 添加 jar 依赖
在项目的 pom.xml 文件中添加必要的依赖。以下是 MyBatis 和 MySQL 连接器的依赖配置:
mysql mysql-connector-java 5.1.38 org.mybatis mybatis 3.4.6
4. 创建 JavaBean 类
创建一个 JavaBean 类,用于与数据库表对应。以下是一个示例:
package com.wangxing.mybatistest.bean;public class Person { private int perId; private String perName; private int perAge; private String perAddress; // getter 和 setter 方法 public int getPerId() { return perId; } public void setPerId(int perId) { this.perId = perId; } public String getPerName() { return perName; } public void setPerName(String perName) { this.perName = perName; } public int getPerAge() { return perAge; } public void setPerAge(int perAge) { this.perAge = perAge; } public String getPerAddress() { return perAddress; } public void setPerAddress(String perAddress) { this.perAddress = perAddress; }} 5. 配置数据库连接
在项目的 mydata.properties 文件中配置数据库连接信息:
mydrivername=com.mysql.jdbc.Drivermyurl=jdbc:mysql://localhost:3306/test?useUnicode=true&characterEncoding=UTF-8myusername=rootmypassword=123456
6. 创建数据库访问接口
在 PersonMapper 接口中定义数据库操作的方法。以下是一个示例:
package com.wangxing.mybatistest.mapper;public interface PersonMapper { boolean insertPerson(Person person); boolean updatePerson(Person person); boolean deletePersonById(int perId); Person selectPersonById(int perId); List selectPerson();} 7. 创建 SQL 映射文件
在 PersonMapper.xml 文件中定义 SQL 语句的映射关系。以下是一个示例:
insert into t_person values(null, #{perName}, #{perAge}, #{perAddress}); update t_person set per_name=#{perName}, per_age=#{perAge}, per_address=#{perAddress} where per_id=#{perId}; delete from t_person where per_id=#{perId};
8. 配置 MyBatis
在 mybatis-config.xml 文件中配置 MyBatis 的环境和数据源信息。以下是一个示例:
9. 编写测试类
在 TestMain 类中实现数据库的 CRUD 操作。以下是一个示例:
package com.wangxing.mybatistest.test;import java.io.IOException;import java.util.List;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 com.wangxing.mybatistest.bean.Person;import com.wangxing.mybatistest.mapper.PersonMapper;public class TestMain { public static void testInsert() { SqlSession sqlSession = null; try { SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(Resources.getResourceAsStream("mybatis-config.xml")); sqlSession = sqlSessionFactory.openSession(); PersonMapper personMapper = sqlSession.getMapper(PersonMapper.class); Person person = new Person(); person.setPerName("zhangsan2"); person.setPerAge(23); person.setPerAddress("西安"); boolean flag = personMapper.insertPerson(person); if (flag) { System.out.println("添加成功"); } else { System.out.println("添加失败"); } sqlSession.commit(); } catch (IOException e) { e.printStackTrace(); } finally { sqlSession.close(); } } public static void testUpdate() { SqlSession sqlSession = null; try { SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(Resources.getResourceAsStream("mybatis-config.xml")); sqlSession = sqlSessionFactory.openSession(); PersonMapper personMapper = sqlSession.getMapper(PersonMapper.class); Person person = new Person(); person.setPerId(1); person.setPerName("zhangsanfeng"); person.setPerAge(123); person.setPerAddress("武当"); boolean flag = personMapper.updatePerson(person); if (flag) { System.out.println("修改成功"); } else { System.out.println("修改失败"); } sqlSession.commit(); } catch (IOException e) { e.printStackTrace(); } finally { sqlSession.close(); } } public static void testSelectById(int stuid) { SqlSession sqlSession = null; try { SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(Resources.getResourceAsStream("mybatis-config.xml")); sqlSession = sqlSessionFactory.openSession(); PersonMapper personMapper = sqlSession.getMapper(PersonMapper.class); Person person = personMapper.selectPersonById(stuid); if (person != null) { System.out.println(person.getPerId() + "," + person.getPerName()); } sqlSession.commit(); } catch (IOException e) { e.printStackTrace(); } finally { sqlSession.close(); } } public static void testSelect() { SqlSession sqlSession = null; try { SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(Resources.getResourceAsStream("mybatis-config.xml")); sqlSession = sqlSessionFactory.openSession(); PersonMapper personMapper = sqlSession.getMapper(PersonMapper.class); List personList = personMapper.selectPerson(); if (!personList.isEmpty()) { for (Person person : personList) { System.out.println(person.getPerId() + "," + person.getPerName()); } } sqlSession.commit(); } catch (IOException e) { e.printStackTrace(); } finally { sqlSession.close(); } } public static void testDelete(int id) { SqlSession sqlSession = null; try { SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(Resources.getResourceAsStream("mybatis-config.xml")); sqlSession = sqlSessionFactory.openSession(); PersonMapper personMapper = sqlSession.getMapper(PersonMapper.class); boolean flag = personMapper.deletePersonById(id); if (flag) { System.out.println("删除成功"); } else { System.out.println("删除失败"); } sqlSession.commit(); } catch (IOException e) { e.printStackTrace(); } finally { sqlSession.close(); } } public static void main(String[] args) { testInsert(); testUpdate(); testSelectById(2); testSelect(); testDelete(1); }} 通过以上步骤,你已经成功创建了一个使用 MyBatis ORM 框架进行数据库操作的 Java 程序。MyBatis 提供了简洁的 API,帮助开发者高效地与数据库交互,从而提升了开发效率和项目性能。
发表评论
最新留言
关于作者