一、mybatis的基本工作流程

1)读取配置文件,获取数据库连接信息、Mapper映射文件或者Mapper包路径。

2)创建SqlSessionFactory(生命周期是程序级,程序运行的时候建立起来,程序结束的时候消亡)

3)SqlSessionFactory建立SqlSession(生命周期是过程级,方法结束应该关闭)

4)使用mapper.xml文件时,mybatis会解析sql动态标签为对应数据库sql语句的形式,并将其封装进MapperStatement对象,然后通过executor将sql注入数据库执行,通过映射包装成java对象。

二、MyBatis接口映射是什么?

接口映射是指在MyBatis中定义接口,然后把接口里面的方法和SQL语句绑定。

接口绑定有两种:

注解绑定(接口的方法上添加@Select、@Update等注解)

xml绑定(xml文件中写SQL来绑定)

三、#{}和${}的区别?

#{}是预编译处理,而${}是字符串替换。

处理${}时,就是把${}替换成变量的值。

处理#{}时,会将sql中的#{}替换为?号,调用PreparedStatement的set方法来赋值。使用#{}可以有效的防止SQL注入,提高系统安全性。

四、Mybatis是如何将sql执行结果封装为目标对象并返回的?

1)使用标签,逐一定义列名和对象属性名之间的映射关系。

2)是使用sql列的别名功能,将列别名书写为对象属性名。Mybatis通过反射创建对象,同时使用反射给对象的属性逐一赋值并返回。

五、为什么说Mybatis是半自动ORM映射工具?

全自动ORM映射工具查询关联对象或者关联集合对象时,可以根据对象关系模型直接获取。

Mybatis在查询关联对象或关联集合对象时,需要手动编写sql来完成。

6e4a21f097982eae2f6cce37c185b989.png
Logo

魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。

更多推荐