初识MyBatis

文章目录

一、MyBatis的定义

二、使用MyBatis的优点

三、MyBatis的使用及分析


一、MyBatis的定义

   MyBatis源自Apache的iBatis开源项目, 从iBatis3.x开始正式更名为MyBatis。它是一个优秀的持久层框架。


二、使用MyBatis的优点

   为了和数据库进行交互,通常的做法是将SQL语句写在Java代码中,SQL语句和Java代码耦合在一起不利于后期维护修改,而MyBatis能够帮助我们将SQL语句和Java代码分离,方便了后期因需求变动而对SQL语句进行修改。


三、MyBatis的使用及分析

①创建java项目mybatis

②拷入相应的jar包

③在com.zzu.area包下创建IArea接口,代码如下:

package com.zzu.area;

public interface IAreaDao {

	String getName(String code);
}

④在src下创建名为mybatis-config.xml的xlm文件,用于全局配置,代码如下:

<?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="dev">
		<environment id="dev">
			<transactionManager type="JDBC"></transactionManager>
			<dataSource type="POOLED">
				<property name="driver" value="com.mysql.jdbc.Driver"/>
				<property name="url" value="jdbc:mysql://127.0.0.1:3306/test"/>
				<property name="username" value="root"/>
				<property name="password" value="root"/>
			</dataSource>
		</environment>
		<environment id="final">
			<transactionManager type="JDBC"></transactionManager>
			<dataSource type="POOLED">
				<property name="driver" value="..."/>
				<property name="url" value="..."/>
				<property name="username" value="..."/>
				<property name="password" value="..."/>
			</dataSource>
		</environment>
	</environments>
	<mappers>
		<mapper resource="area.xml"/>
	</mappers>
</configuration>

分析:

  • environments元素节点可以配置多个environment子节点, 理解:假如我们系统的开发环境和正式环境所用的数据库不一样, 那么可以设置两个environment, 两个id分别对应开发环境(dev)和正式环境(final),那么通过配置environments的default属性就能选择对应的environment了, 例如,我将environments的deault属性的值配置为dev, 那么就会选择dev的environment。
  • environment:配置数据库连接信息
  •  事务管理器的配置(比如:type=”JDBC”)
  •  数据源的配置(比如:type=”POOLED”)
  • <property name="driver" value="com.mysql.jdbc.Driver"/>:配置数据库驱动
  •  <property name="url" value="jdbc:mysql://127.0.0.1:3306/test"/>:配置数据库路径
  •  <property name="username" value="root"/>:配置数据库用户名
  • <property name="password" value="root"/>:配置数据库密码

         注意:上述property标签中name值是固定的

  • Mapper 标签:注册Mapper xml文件,resource中是Mapper xml文件路径

⑤在src下创建名为area.xml的xlm文件,用于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.zzu.area.IAreaDao">
	<select id="getName" resultType="java.lang.String">
		select name from area where code=#{code}
	</select> 
</mapper>

分析:

  • namespace:为接口的全类名,说明此例中mapper中的sql语句全是IAreaDao接口在方法的sql语句
  • id:接口中定义的抽象方法名,说明此例中的select语句是用于IAreaDao接口中getName方法的sql语句
  • resultType:sql语句的返回值类型,此例中name为String类型,所以resultType为String类全名java.lang.String
  • #{id}:从传递过来的参数中取出id值

⑥.在com.zzu.test包创建Test类,代码如下:

package com.zzu.test;

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.zzu.area.IAreaDao;


public class Test {

	public static void main(String[] args) throws Exception {

		InputStream inputStream=Resources.getResourceAsStream("mybatis-config.xml");
		SqlSessionFactory sqlSessionFactory=new SqlSessionFactoryBuilder().build(inputStream);
		SqlSession sqlSession=sqlSessionFactory.openSession();
		IAreaDao areaDao=sqlSession.getMapper(IAreaDao.class);
		System.out.println(areaDao.getClass().getName());
		System.out.println(areaDao.getName("410000"));
		sqlSession.close();
	}
}

执行结果:

com.sun.proxy.$Proxy8
河南省

分析:

  • InputStream inputStream=Resources.getResourceAsStream("mybatis-config.xml"):加载mybatis-config.xml资源,将其变成输入流
  • SqlSessionFactory sqlSessionFactory=new SqlSessionFactoryBuilder().build(inputStream):基于这个流文件创建SqlSession工厂即获取SqlSessionFactory对象,生产SqlSession
  • SqlSession sqlSession=sqlSessionFactory.openSession():生产SqlSession,代表与数据库的一次会话
  • IAreaDao areaDao=sqlSession.getMapper(IAreaDao.class):产生实现相应接口的动态对象areaDao
  • System.out.println(areaDao.getClass().getName()):输出产生的动态对象areaDao,即com.sun.proxy.$Proxy8
  • System.out.println(areaDao.getName("410000")):调用动态对象areaDao的getName方法,返回以410000为code的name即河南省
  • sqlSession.close():关闭资源

总结:这种方法彻底实现了SQL语句的分离,使代码各模块功能更清晰

 

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
资源包主要包含以下内容: ASP项目源码:每个资源包中都包含完整的ASP项目源码,这些源码采用了经典的ASP技术开发,结构清晰、注释详细,帮助用户轻松理解整个项目的逻辑和实现方式。通过这些源码,用户可以学习到ASP的基本语法、服务器端脚本编写方法、数据库操作、用户权限管理等关键技术。 数据库设计文件:为了方便用户更好地理解系统的后台逻辑,每个项目中都附带了完整的数据库设计文件。这些文件通常包括数据库结构图、数据表设计文档,以及示例数据SQL脚本。用户可以通过这些文件快速搭建项目所需的数据库环境,并了解各个数据表之间的关系和作用。 详细的开发文档:每个资源包都附有详细的开发文档,文档内容包括项目背景介绍、功能模块说明、系统流程图、用户界面设计以及关键代码解析等。这些文档为用户提供了深入的学习材料,使得即便是从零开始的开发者也能逐步掌握项目开发的全过程。 项目演示与使用指南:为帮助用户更好地理解和使用这些ASP项目,每个资源包中都包含项目的演示文件和使用指南。演示文件通常以视频或图文形式展示项目的主要功能和操作流程,使用指南则详细说明了如何配置开发环境、部署项目以及常见问题的解决方法。 毕业设计参考:对于正在准备毕业设计的学生来说,这些资源包是绝佳的参考材料。每个项目不仅功能完善、结构清晰,还符合常见的毕业设计要求和标准。通过这些项目,学生可以学习到如何从零开始构建一个完整的Web系统,并积累丰富的项目经验。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值