MyBatis----不动声色

三层架构

界面层,和用户打交道,接受用户的请求参数,显示处理结果>>>>>>>>>>controller包(servlet) 业务逻辑层:接受了页面层传递的数据,计算逻辑,调用数据库获取数据>>>>>>>>>service包(XXXServlet类) 数据访问层,就是访问数据库,执行对数据的增删改查>>>>>>>>>>>>dao包(各种dao类)

三层中类的交互

用户使用界面层>>>>>业务逻辑层>>>>>数据访问层(持久层)>>>>数据库(mysql)

三层对应的处理框架

界面层>>>>serlvet>>>>springmvn
业务逻辑层>>>>service类>>>>spring
数据访问层>>>>dao类>>>>MyBatis

框架(Framework)是什么?

1、框架是一个软件
2、定义好了一些功能,也可以加入项目中自己的功能
3、框架是半成品,定义好了基础功能,需要加入你的功能,就是完整的,基础功能可以重复使用,可以升级

框架的特点

1、框架一般不是全能的,不能做所有事情
2、框架是针对某一个领域有效,特长在某一方面,比如mybatis就是做数据库操作的

mybatis框架

早期叫ibatis,代码在github
mybatis是MyBatis SQL Mapper Framework for Java(sql映射框架)
1)sql mapper :sql映射
可以把数据库表中的一行数据,映射为一个java对象
一行数据可以看做是一个java对象,操作这个对象,就相当于操作表中的数据

2)Data Access Object(DAOs):数据访问,对数据库执行增删改查

mybatis提供了哪些功能:
1、提供了创建Connection、Statement、ResultSet的能力,不用开发人员创建这些对象了
2、提供了执行sql语句能力
3、提供了循环sql,把sql的结果转为java对象,List集合的能力
4、提供了关闭资源的能力

开发人员要做的是:

要提供sql语句就可以了

总结一下MyBatis

mybatis是一个sql映射框架,提供的数据库操作能力,是一个增强的JDBC,使用mybatis可以让我们专心写sql语句,不必关心Conn、ps、rs的创建、销毁,还有sql的执行

第一个mybatis的例子

实现步骤:
1、新建的student表 2、加入maven的mybatis坐标,mysql驱动的坐标 3、创建实体类,Student,保存表中的一行数据的 4、创建持久层的dao接口,定义操作数据库的方法 5、创建一个mybatis使用的配置文件(写在dao接口目录中,文件名和接口保持一致) 叫做sql映射文件,写sql语句的,一般一个表一个sql映射文件 是一个xml文件 6、创建mybatis的主配置文件:一个项目一个主配置文件 主配置文件提供了数据库的连接信息和sql映射文件的位置信息 7、创建使用mybatis类, 通过mybatis访问数据库

mybatis主要类的介绍

1Resources:负责读取主配置文件
		InputStream in = Resources.getResourceAsStream("mybatis.xml");
2SqlSessionFactoryBuilder:创建SqlSessionFactory对象
	    SqlSessionFactoryBuilder builder = new SqlSessionFactoryBuilder(); 
	    //创建SqlSessionFactory对象
	    SqlSessionFactory factory = builder.builder(in);
*3SqlSessionFactory :重量级对象,程序创建一个对象耗时比较长,使用资源比较多
						在整个项目中,有一个就够用
				SqlSessionFactory : 接口,接口实现类:DefaultSqlSessionFactory
				SqlSessionFactory 作用:获取SqlSession对象,
				SqlSession sqlSession = factory.openSession();

				openSession()方法说明:
				1、openSession():无参数的,获取是非自动提交事务的sqlSession对象
				2、openSession(boolean) : openSession(true) 获取自动提交事务的SqlSession
											openSession(false),非自动提交事务的SqlSession对象
*4SqlSessionSqlSession接口:定义了操作数据的方法 例如 selectOne(),selectList(),insert(),update(),delete(),commit(),rollback();
		SqlSession接口的实现类DefaultSqlSession。
		使用要求:SqlSession对象不是线程安全的,需要在方法内部使用,在执行sql语句之前,使用openSession()获取SqlSession。在执行完sql语句后,需要关闭它,执行SqlSession.close().这样能保证他的使用是线程安全的

为什么使用mybatis中的动态代理

List studentList = dao.selectStudents();调用
1、dao对象,类型是StudentDao,全限定名称和namesapce是一样的
2、方法名称selectStudents,这个方法就是mapper文件中的id值
3、通过dao中方法的返回值,也可以确定MyBatis要调用的sqlSessio的方法
如果返回值是list,调用的是sqlSession.selectList()方法
如果返回值int,或者是非List,在看mapper文件中的标签是什么,在调用什么方法

mybatis的动态代理

使用SqlSession.getMapper(dao接口.class)获取这接口的对象

传入参数

从java代码中把数据传入mapper文件的sql语句中,
1)parameterType:写在mapper文件中的一个属性,表示dao接口中方法的参数的数据类型

动态sql

动态sql的内容是变化的,可以根据条件获取不同的sql语句
主要是where部分发生变化
1)<if>语句是判断条件的
语法

<if test="判断java对象的属性值"
	部分sql语句
<if/>

2)<where>用来包含多个if的,当多个if只有一个成立时,where会自动增加一个关键字,并去掉if中多余的and,or等
3)<foreach>循环java中的数组,list集合的,主要用在sql的in语句中 学生的id是1001,1002,1003的三个学生


select  * from student where id in (1001,1002,1003)
public List<Student> selectFor(List<Interger> idList)
	List<interger> list = new List();
	list.add(1001);
	list.add(1002);
	list.add(1003);
	dao.selectFor(list);
	<foreach collection="" item="" open="" separator="">
	</foreach>
	collection:表示接口中的方法参数的类型,如果是数组使用array,如果是list集合使用list
	item:自定义的,表示数组和集合成员的变量
	open:循环开始时的字符
	close:循环结束时的字符
	separator:集合成员之间的分隔符
	
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
提供的源码资源涵盖了安卓应用、小程序、Python应用和Java应用等多个领域,每个领域都包含了丰富的实例和项目。这些源码都是基于各自平台的最新技术和标准编写,确保了在对应环境下能够无缝运行。同时,源码中配备了详细的注释和文档,帮助用户快速理解代码结构和实现逻辑。 适用人群: 这些源码资源特别适合大学生群体。无论你是计算机相关专业的学生,还是对其他领域编程感兴趣的学生,这些资源都能为你提供宝贵的学习和实践机会。通过学习和运行这些源码,你可以掌握各平台开发的基础知识,提升编程能力和项目实战经验。 使用场景及目标: 在学习阶段,你可以利用这些源码资源进行课程实践、课外项目或毕业设计。通过分析和运行源码,你将深入了解各平台开发的技术细节和最佳实践,逐步培养起自己的项目开发和问题解决能力。此外,在求职或创业过程中,具备跨平台开发能力的大学生将更具竞争力。 其他说明: 为了确保源码资源的可运行性和易用性,特别注意了以下几点:首先,每份源码都提供了详细的运行环境和依赖说明,确保用户能够轻松搭建起开发环境;其次,源码中的注释和文档都非常完善,方便用户快速上手和理解代码;最后,我会定期更新这些源码资源,以适应各平台技术的最新发展和市场需求。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值