MyBatis框架

本文介绍了MyBatis框架的历史、特点和优势,并详细阐述了如何在Java项目中配置和使用MyBatis,包括环境准备、创建数据库表、定义User类、配置XML和Mapper接口,以及执行测试和查看查询结果。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

MyBatis框架

。MyBatis简介
MyBatis官网
1.1MyBatis的历史
①.MyBatis是Apache的一个开源项目iBatis,2010年6月这个项目由Apache Software Foundation 迁移到了Google Code,随着开发团队转投Google Code旗下, iBatis3.x 正式更名为MyBatis ,代码于2013年11月迁移到Github
②.iBatis一词来源于“internet”和“abatis”的组合,是一个基于Java的持久层框架。 iBatis 提供的持久层框架包括SQL Maps和Data Access Objects(DAO)
1.2MyBatis简介
①.MyBatis是支持定制化SQL,存储过程以及高级映射的优秀的持久层框架
②.MYBatis消除了几乎所有的JDBC代码和手动设置参数以及对结果集
的检索
③.将接口的Java的POJOs(Plain Ordinary Java Objects),普通的Java对象映射成数据库中的记录
④.它是一个半自动ORM(Object Relation Mapping对象关系映射)的框架,而Hibernate是全自动的
1.3为什么要使用MyBatis?
ps:对现有持久化技术的对比
1.JDBC
① SQL夹杂在Java代码块中,耦合度高导致硬编码内伤
② 维护不易且实际开发过程中SQL时有变化,频繁修改情况多见
2.Hibernate 与 JPA
① 长且复杂的SQL,对于Hibernate而言,处理起来也不容易
② 内部自动生产的SQL,不容易做特殊优化
③ 基于全映射的全自动框架,大量字段的POJO进行部分映射时比较困难,导致数据库性能下降
3.MyBatis
① 对开发者而言, 核心SQL还是需要自己优化
② SQL与Java编码分开,功能边界清晰,一个专注于业务(Java),一个专注于数据(SQL)

。如何使用MyBatis
2.1开发环境的准备
① 要使用 MyBatis, 只需将 mybatis-x.x.x.jar 文件置于类路径(classpath)中即可。
② 如果使用 Maven 来构建项目,则需将下面的依赖代码置 于pom.xml 文件中:
Maven依赖包网址
2.2 导包
① 在pom.xml中导入MyBatis框架的jar包,MySQL驱动包,log4j的jar包
Maven依赖包有多个版本,可按需架包
2.3创建测试表
① 创建库 CREATE DATABASE test_mybatis;
② 创建表
CREATE TABLE tbl_user(
id INT(11) PRIMARY KEY AUTO_INCREMENT,
last_name VARCHAR(50),
email VARCHAR(50),
gender CHAR(1)
);
2.4创建User类

public class User {

	private Integer id ; 
	private String lastName; 
	private String email ;
	private String gender ;
	public Integer getId() {
		return id;
	}
	public void setId(Integer id) {
		this.id = id;
	}
	public String getLastName() {
		return lastName;
	}
	public void setLastName(String lastName) {
		this.lastName = lastName;
	}
	public String getEmail() {
		return email;
	}
	public void setEmail(String email) {
		this.email = email;
	}
	public String getGender() {
		return gender;
	}
	public void setGender(String gender) {
		this.gender = gender;
	}
	@Override
	public String toString() {
		return "Employee [id=" + id + ", lastName=" + lastName + ", email=" + email + ", gender=" + gender + "]";
	}

2.5 MyBatis配置文件
在这里插入图片描述
① 编写user.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="mapper.UserMapper">
	<!-- 从数据库查询数据-->
    <select id="listUser" resultType="pojo.User">
        SELECT
        id id,
        last_name name,
        email email
       	gender gender
        FROM tbl_user;
    </select>
</mapper>

② 配置mybatis-config.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>
    <!-- 数据库连接环境的配置 -->
    <environments default="development">
        <environment id="development">
            <transactionManager type="JDBC" />
            <!-- 数据源-->
            <dataSource type="POOLED">
                <property name="driver" value="com.mysql.jdbc.Driver" />
                <property name="url" value="jdbc:mysql://localhost:3306/test_mybatis" />
                <property name="username" value="root" />
                <property name="password" value="root" />
            </dataSource>
        </environment>
    </environments>
    <mappers>
    	<!--将写好的user.xml映射文件注册到全局配置文件mybatis-config.xml中-->
        <mapper resource="mapper/user.xml"></mapper>
    </mappers>
</configuration>

2.6 编写UserMapper接口

public interface UserMapper {
    //在Mybatis中,接口的方法要映射到user.xml的select的id
    //查询用户
    public List<User> listUser();
}

2.7 测试

@Test
    public void ListAllTest(){
    	String conf = "mybatis-config.xml";
    	//1.读取配置文件
        Reader reader = Resources.getResourceAsReader(conf);
        //创建SessionFactory对象
        SqlSessionFactoryBuilder sfb = new SqlSessionFactoryBuilder();
        SqlSessionFactory sf= sfb.build(reader);
        //创建Session
        SqlSession session = sf.openSession();
        UserMapper mapper = session.getMapper(UserMapper.class);
        List<User> users = mapper.listUser();
        for(User u : users){
            System.out.println(u.toString());
        }
        //关闭session会话
        session.close();
    }

2.8 控制台查看结果

控制台输出结果:可以从数据库中查询得到

User{id=1, lastName=‘jack’, email=‘jack123@123.com’,gender=‘男’}
User{id=2, lastName=‘lucy’, email=‘lucy123@123.com’,gender=‘女’}

了解更多请点击此处 查看官方手册

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值