MyBatis入门

什么是 MyBatis

MyBatis原本是apache的一个开源项目iBatis, 2010年这个项目由Apache软件基金会迁移到了google code,并且改名为MyBatis,实质上MyBatis对ibatis进行一些改进。
MyBatis是一款优秀的持久层框架,它支持定制化 SQL、存储过程以及高级映射。MyBatis避免了几乎所有的JDBC 代码和手动设置参数以及获取结果集。MyBatis可以使用简单的 XML 或注解来配置和映射原生信息,将接口和Java的POJOs(Plain Old Java Objects,普通的Java对象)映射成数据库中的记录。

MyBatis快速入门

准备开发环境
Jar包:

mysql-connector-java-5.1.40.jar						//MYSQL驱动包
mybatis-3.2.7.jar					  	            //MyBatis jar文件

两jar包放在WebRoot\WEB-INF\lib中
数据库:

drop table if exists `student`;
create table `student` (
  `id` int(11) not null auto_increment,
  `username` varchar(20) collate utf8_bin default null,
  `age` int(11) default null,
  primary key (`id`)
);

insert into student(username,age) values ('张三', '27');
insert into student(username,age) values ('李四', '27');

使用MyBatis查询表中的数据
定义表所对应的实体类:

package com.luhui.mybatis.bean;

public class Student {
	private int id;
	private String username;
	private int age;	
	public Student() {
	}
	public Student(int id, String username, int age) {
		this.id = id;
		this.username = username;
		this.age = age;
	}	
	public int getId() {
		return id;
	}
	public void setId(int id) {
		this.id = id;
	}
	public String getUsername() {
		return username;
	}
	public void setUsername(String username) {
		this.username = username;
	}
	public int getAge() {
		return age;
	}
	public void setAge(int age) {
		this.age = age;
	}
	@Override
	public String toString() {
		return "Student [id=" + id + ", username=" + username + ", age=" + age + "]";
	}	
}

添加MyBatis的配置文件conf.xml(在src目录下创建一个conf.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"/>
				<property name="username" value="root"/>
				<property name="password" value="123456"/>
			</dataSource>				
		</environment>	
	</environments>
    <!-- 注册userMapper.xml文件,
studentMapper.xml位于com.luhui.mybatis.mapping这个包下,所以
resource写成com/luhui/mybatis/mapping/studentMapper.xml-->
	<mappers>
		<mapper resource="com/luhui/mybatis/mapping/studentMapper.xml"/>
	</mappers>
</configuration>

定义操作users表的sql映射文件userMapper.xml(需要在conf.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,namespace的值习惯上设置成包名+ sql映射文件名(或dao层接口),这样就能够保证namespace的值是唯一的。
			 例如namespace="com.luhui.mybatis.mapping.studentMapper"就是com.luhui.mybatis.mapping(包名)+studentMapper(studentMapper.xml文件去除后缀)
	    -->
<mapper namespace="com.luhui.mybatis.mapping.studentMapper">
		<!-- 在select标签中编写查询的SQL语句, 设置select标签的id属性为getStu,id属性值必须是唯一的,不能够重复。
		     使用parameterType属性指明查询时使用的参数类型,resultType属性指明查询返回的结果集类型 resultType="com.luhui.mybatis.bean.Student"就表示将查询结果封装成  Student类的对象返回, Student类就是student表所对应的实体类
	    -->
	<select id="getStu" parameterType="int" resultType="com.luhui.mybatis.bean.Student">
		select * from student where id = #{id}	
	</select>
</mapper>

编写测试类进行测试

package com.luhui.mybatis.util;

import java.io.InputStream;
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.luhui.mybatis.bean.Student;

public class Test {
	public static void main(String[] args) throws Exception {
		String resource = "conf.xml";		
		InputStream is = Resources.getResourceAsStream(resource);
		SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(is);
		SqlSession sqlSession = sqlSessionFactory.openSession();
		Student student = sqlSession.selectOne("com.luhui.mybatis.mapping.studentMapper.getStu",1);
		System.out.println(student);
	}
}

框架图

在这里插入图片描述
如图所示:需要注意几个内容(SqlMapConfig.xml、mapper.xml、SqlSesssionFactory、qlSession)

  1. MyBatis配置文件,包括Mybatis全局配置文件(SqlMapConfig.xml)和MyBatis映射文件(mapper.xml),其中SqlMapConfig.xml配置了数据源、事务等信息;mapper.xml配置了SQL执行(sql语句)及对象关系(类与类的关系)等相关的信息,简单说mapper.xml就是处理sql语句及查询结果。
  2. MyBatis通过读取配置文件信息(SqlMapConfig.xml),构造出SqlSessionFactory,即会话工厂。
  3. 通过SqlSessionFactory,可以创建SqlSession即会话。MyBatis是通过SqlSession来操作数据库,进行CRUD(新增Create,读取查询Retrieve,更新Update和删除Delete)操作。
  4. SqlSession本身不能直接操作数据库,它是通过底层的Executor执行器接口来操作数据库的。Executor接口有两个实现类,一个是普通执行器,一个是缓存执行器(默认)。
  5. Executor执行器要处理的SQL信息是封装到一个底层对象MappedStatement中。该对象包括:SQL语句、输入参数映射信息、输出结果集映射信息。其中输入参数和输出结果的映射类型包括java的简单类型、HashMap集合对象、POJO对象类型。

注意:重点理解前3部分。后2部分是MyBatis已经做好的,暂时不需要关心。即MyBatis中需要有基本的三个文件:
(1)全局配置文件:SqlMapConfig.xml
(2)映射文件:Mapper.xml
(3)通过以上两个文件获取SqlSessionFactory---->SqlSeesion—>增删改查

MyBatis的安装

要使用 MyBatis,只需将 mybatis-x.x.x.jar文件置于classpath中即可。如果使用Maven来构建项目,则需将下面的dependency代码置于pom.xml文件中:

<dependency>
  <groupId>org.mybatis</groupId>
  <artifactId>mybatis</artifactId>
  <version>x.x.x</version>
</dependency>

Jar下载:https://github.com/mybatis/mybatis-3/releases
Maven依赖:https://mvnrepository.com/

内容概要:《中文大模型基准测评2025年上半年报告》由SuperCLUE团队发布,详细评估了2025年上半年中文大模型的发展状况。报告涵盖了大模型的关键进展、国内外大模型全景图及差距、专项测评基准介绍等。通过SuperCLUE基准,对45个国内外代表性大模型进行了六大任务(数学推理、科学推理、代码生成、智能体Agent、精确指令遵循、幻觉控制)的综合测评。结果显示,海外模型如o3、o4-mini(high)在推理任务上表现突出,而国内模型如Doubao-Seed-1.6-thinking-250715在智能体Agent和幻觉控制任务上表现出色。此外,报告还分析了模型性价比、效能区间分布,并对代表性模型如Doubao-Seed-1.6-thinking-250715、DeepSeek-R1-0528、GLM-4.5等进行了详细介绍。整体来看,国内大模型在特定任务上已接近国际顶尖水平,但在综合推理能力上仍有提升空间。 适用人群:对大模型技术感兴趣的科研人员、工程师、产品经理及投资者。 使用场景及目标:①了解2025年上半年中文大模型的发展现状与趋势;②评估国内外大模型在不同任务上的表现差异;③为技术选型和性能优化提供参考依据。 其他说明:报告提供了详细的测评方法、评分标准及结果分析,确保评估的科学性和公正性。此外,SuperCLUE团队还发布了多个专项测评基准,涵盖多模态、文本、推理等多个领域,为业界提供全面的测评服务。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值