框架三:Mybatis sql语句与pojo之间的映射

本文介绍MyBatis框架的基本概念,包括如何搭建环境、配置文件、使用XML映射文件进行数据库操作,以及如何实现CRUD操作。同时,文章详细解释了一对一、一对多的数据映射方式。

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

MyBatis 是一款优秀的持久层框架,它支持定制化 SQL、存储过程以及高级映射。MyBatis 避免了几乎所有的 JDBC 代码和手动设置参数以及获取结果集。MyBatis 可以使用简单的 XML 或注解来配置和映射原生信息,将接口和 Java 的 POJOs(Plain Old Java Objects,普通的 Java对象)映射成数据库中的记录。

映射方式

数据表映射为类
表中行映射到对象
表中列映射 类中的属性

第一个crud

1.建立maven 1.1 即可
2.导入jar包
mybatis依赖包 数据库驱动包 log4j日志包
包

	<dependency>
			<groupId>mysql</groupId>
			<artifactId>mysql-connector-java</artifactId>
			<version>5.1.38</version>
		</dependency>
		<!-- https://mvnrepository.com/artifact/org.mybatis/mybatis -->
		<dependency>
			<groupId>org.mybatis</groupId>
			<artifactId>mybatis</artifactId>
			<version>3.4.5</version>
		</dependency>
		<!-- https://mvnrepository.com/artifact/org.mybatis/mybatis-spring -->
		<dependency>
			<groupId>org.mybatis</groupId>
			<artifactId>mybatis-spring</artifactId>
			<version>1.3.1</version>
		</dependency>
		<!-- https://mvnrepository.com/artifact/log4j/log4j -->
		<dependency>
			<groupId>log4j</groupId>
			<artifactId>log4j</artifactId>
			<version>1.2.17</version>
		</dependency>
		

2.建立 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>

<properties resource="db.property"></properties>    配置的文件

<!-- 配置环境 ,指定默认的数据库环境id为mysql-->
<environments default="mysql">
<!-- 配置id为mysql的数据库环境 -->
<environment id="mysql">
<!-- 使用JDBC的事务管理 -->
<transactionManager type="JDBC" />     使用事务管理器
<!-- 数据库连接池 -->
<dataSource type="POOLED">
<property name="driver" value="${jdbc.driver}" />
<property name="url" value="${jdbc.url}" />
<property name="username" value="${jdbc.username}" />
<property name="password" value="${jdbc.password}" />
</dataSource>
</environment>
</environments>
<!-- 配置映射文件Mapper的位置   映射 --> 
<mappers>
<mapper resource="com/qst/mapper/UserMapper.xml" />
</mappers>
</configuration>

3.在dao层 建立 Mapper.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="com.qst.pojo.User">    -----映射文件,可以是接口(与Spring整合在一起)
	此处是sql语句
</mapper>

4.建立 pojo 与其对应
5.测试

@Test
	public void test() throws IOException {

		// 1.读取配置文件
		InputStream in = Resources.getResourceAsStream("mybatis_config.xml");
		// 2.根据配置文件构建SqlSessionFactory
		SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(in);
		// 3.通过SqlSessionFactory创建SqlSession
		SqlSession session = sqlSessionFactory.openSession();
		try {
			// 4.SqlSession执行映射文件中定义的SQL,并返回映射结果
		//	String[] hobby = new String[] { "a", "b" };
			// String hobby="a";

			User u=session.selectOne("Selectbyid", 3);

			 System.out.println(u);
		} finally {
			// 5.关闭SqlSession
			session.close();
		}

	}

以上就是基本的mybatis 的建立-----------

知识点

零碎的知识

1.mapper中的sql 占位符#{ } ${ } 拼接符
2.resultType resultMap
直接指定返回类型
对于外部查询的引用

一对一

<select id="Selectbyid" parameterType="Integer" resultMap="selectschool">
		select * from user,userwork where user.id=userwork.uid and user.id=#{id}
	</select>
	
	
	<!-- 一对一   type 返回类型-->
	<resultMap type="com.qst.pojo.User" id="selectschool">
		<!-- 
			ID 主键,  column表中的哪一列, property 类中的哪一个属性
		 -->
		<!-- 查询出user表普通属性需要返回的类型 -->
		<id column="id" property="id"/>
		<result column="name" property="iname"/>
		<result column="work" property="work"/>

		<!--
			property 指定表中的属性名
			javaType 属性的类型
		  -->
		<!-- 查询user表中另一个表的属性需要返回的类型 -->
		<association  property="userwork"  javaType="com.qst.pojo.Userwork">  <!-- 返回另一个表的映射类 -->
			<id column="uid" property="uid"/>
			<result column="aschool" property="school"/>
		</association> 
	</resultMap>

一对多

<select id="SelectKidByid" parameterType="String" resultMap="setectKid">
	select * from 
			user,userkid where user.id=userkid.kidid and user.name=#{name};
</select>

<resultMap type="com.qst.po.User" id="setectKid"> <!-- type返回类型 -->
	<id column="id" property="id"/>
	<result column="name" property="name"/>
	<result column="work" property="work"/>
	
			<!-- property 在此类中的属性名   oftype 另一个类的名称 -->
	<collection property="userkid"  ofType="com.qst.po.UserKid">
		<id column="did" property="did"/>   <!-- 主键 -->
		<result column="kidid" property="kidid"/>    <!-- 与另一个表相关联的键 -->
		<result column="kidname" property="kidname"/>
		<result column="kidage" property="kidage"/>
	</collection>
</resultMap>
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值