Mybatis框架学习第一天

1.Mybatis的入门知识

1.Mybatis是一个持久层的框架技术.
下面是三大框架的架构图
其中SpringMVC是表现层的框架:用于接收和展示数据的;
业务层(Service)是处理逻辑业务的。
Mybatis则是持久层(dao)的框架,封装了许多和数据操作相关的细节,提高开发效率。
需要注意的是,Spring是一个无可替代的框架,它横跨了表现层–业务层–持久层 经典的服务器开发的三层架构,Spring是整合前后两个层次的必需品。

在这里插入图片描述
2.经典的持久层技术分析

  • Jdbc技术(是规范)
  • Spring的JdbcTemplate(对Jdbc的简单封装)
  • DBUtils(对Jdbc的简单封装)

以上这些都不是框架,后两者都是工具类,Mybatis是一个用户只需要关注sql语句和数据库优化上的框架,而不用关注加载驱动,简化连接和释放预处理对象,关闭连接等繁琐的过程。
3.Mybatis技术简介
mybatis通过配置xml和注解的方式把各种statement配置起来,通过java对象和statement中的sql中的动态参数进行映射生成最终执行的sql,最终将结果集映射为java对象并返回。
mybatis采用ORM(对象关系映射)思想解决了实体和数据库映射的关系,封装了jdbc,对用户避免了使用jdbc的繁琐api。

  • ORM(对象关系映射)思想
    简单的说就是 把数据库实体的表的字段和java实体类的属性对应起来,
    让我们可以操作实体类就实现了对数据表的操作。

2.Mybatis的入门案例

1.mybatis的环境搭建

  • 搭建项目,导入jar,mybatis.jar.
  • 创建实体类和dao接口方法
  • 配置mybatis-config.xml主配置文件和实体类的dao的映射文件Userdao.xml

2.配置文件有几点需要注意的

  • 第一:Mybatis中把持久层的接口名称和配置文件叫Mapper,所有UserDao和UserMapper是一样的
  • 第二:mybatis的映射配置文件(mapper)必须和dao接口的包路径一致。
  • 第三:映射配置文件的mapper标签的namespace属性取值必须是dao的全限定类名
  • 第四:映射文件配置,例如select配置查询,id属性值必须与dao中的方法名称一致,resultType属性设置返回实体类的全限定类路径。
  • 满足 第 二三四点之后,我们在开发就不需要写dao的实现类了,通过配置文件完成一切操作。
    3.项目实例 测试代码如下
//1.读取mybatis配置文件
		InputStream is = Resources.getResourceAsStream("mybatis.xml");
		//2.创建SqlSessionFactory
		SqlSessionFactoryBuilder builder = new SqlSessionFactoryBuilder();
		SqlSessionFactory factory = builder.build(is);
		//3.使用工厂生产SqlSession对象
		SqlSession session = factory.openSession();
		//4.使用SqlSessioon对象创建dao接口的代理对象
		UserDao userDao = session.getMapper(UserDao.class);
		//5.使用代理对象执行方法
		List<User> ulist = userDao.findAll();
		for(User user:ulist){
			System.out.println(user);
		}
		//6.释放资源
		session.close();
		is.close();

mybatis案例测试查询结果如图:

在这里插入图片描述
mybatis-config.xml配置代码如下

<!--mybatis主配置文件  -->
<configuration>
	<!--配置环境  -->
	<environments default="mysql">
		<!--配置mysql的环境  -->
		<environment id="mysql">
			<!--配置事务类型  -->
			<transactionManager type="jdbc"></transactionManager>
			<!--配置数据源(连接池)  -->
			<dataSource type="pooled">
				<property name="driver" value="com.mysql.jdbc.Driver"/>
				<property name="url" value="jdbc:mysql://localhost:3306/mybatis"/>
				<property name="username" value="root"/>
				<property name="password" value="123456"/>
			</dataSource>		
		</environment>
	</environments>
	<!--指定映射配置文件的位置,映射配置文件指的是每个dao独立的配置文件  -->
	<mappers>
		<mapper resource="fun/borened/dao/UserDao.xml"/>
	</mappers>
</configuration>

UserDao.xml配置如下

<!--配置dao接口的操作方法  -->
<mapper namespace="fun.borened.dao.UserDao" >
	<!--配置查询所有  id值必须是dao中的方法名,resultType是返回值类型 -->
	<select id="findAll" resultType="fun.borened.domain.User">
		select * from user
	</select>
</mapper>

如果使用注解,则可以在Dao接口的方法上使用@Select(“sql”)指定sql语句,则可以删掉上面的UserDao.xml的配置文件。但是主配置文件中,mapper属性需要更改为class=“全限定类名”,而不是目录形式的resource属性。
开发中为了简便,不再去写dao的实现类。

mybatis实现数据库操作整体流程可以简化为两大步
1.生成dao的代理对象
这其中包括:

  • 加载配置文件
  //1.读取mybatis配置文件
		InputStream is = Resources.getResourceAsStream("mybatis.xml");
  • .创建SqlSessionFactory,获取数据库操作对象的工厂
//构建者模式
SqlSessionFactoryBuilder builder = new SqlSessionFactoryBuilder();
SqlSessionFactory factory = builder.build(is);
  • 使用工厂生产SqlSession对象(数据库操作的会话对象)
SqlSession session = factory.openSession();
  • 使用SqlSessioon对象创建dao接口的代理对象(Mapper中存放的是数据库操作和Dao的映射)
UserDao userDao = session.getMapper(UserDao.class);
  • 使用代理对象执行方法
List<User> ulist = userDao.findAll();
  • 最后释放资源
		session.close();
		is.close();

2.通过配置的数据源参数和标签select➕sql执行相应的方法
根据映射关系,找到代理对象dao中的方法对应的id值,调用sql会话对象的方法执行相应的配置文件或注解中的sql语句,完成查询等操作。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
提供的源码资源涵盖了安卓应用、小程序、Python应用和Java应用等多个领域,每个领域都包含了丰富的实例和项目。这些源码都是基于各自平台的最新技术和标准编写,确保了在对应环境下能够无缝运行。同时,源码中配备了详细的注释和文档,帮助用户快速理解代码结构和实现逻辑。 适用人群: 这些源码资源特别适合大学生群体。无论你是计算机相关专业的学生,还是对其他领域编程感兴趣的学生,这些资源都能为你提供宝贵的学习和实践机会。通过学习和运行这些源码,你可以掌握各平台开发的基础知识,提升编程能力和项目实战经验。 使用场景及目标: 在学习阶段,你可以利用这些源码资源进行课程实践、课外项目或毕业设计。通过分析和运行源码,你将深入了解各平台开发的技术细节和最佳实践,逐步培养起自己的项目开发和问题解决能力。此外,在求职或创业过程中,具备跨平台开发能力的大学生将更具竞争力。 其他说明: 为了确保源码资源的可运行性和易用性,特别注意了以下几点:首先,每份源码都提供了详细的运行环境和依赖说明,确保用户能够轻松搭建起开发环境;其次,源码中的注释和文档都非常完善,方便用户快速上手和理解代码;最后,我会定期更新这些源码资源,以适应各平台技术的最新发展和市场需求。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值