做网站常用的套件,做网站 带宽 多少钱,小程序和网站开发难度,WordPress电子书模板模板Maven面试题
Myabtis面试题 文章目录 Maven面试题Myabtis面试题 1、简述Spring Boot的启动流程2、如何理解Bean的生命周期3、MyBatis的主要功能4、MyBatis的组成部分5、MyBatis的动态SQL 1、简述Spring Boot的启动流程
Spring Boot的启动流程可以分为以下几个步骤#xff1a…Maven面试题
Myabtis面试题 文章目录 Maven面试题Myabtis面试题 1、简述Spring Boot的启动流程2、如何理解Bean的生命周期3、MyBatis的主要功能4、MyBatis的组成部分5、MyBatis的动态SQL 1、简述Spring Boot的启动流程
Spring Boot的启动流程可以分为以下几个步骤 加载配置文件在启动过程中Spring Boot会首先加载并解析配置文件包括application.properties或application.yml等。这些配置文件中包含了应用程序的配置信息如数据库连接信息、端口号等。 创建Spring应用上下文接下来Spring Boot会根据加载的配置文件创建一个Spring应用上下文。Spring应用上下文是Spring框架的核心容器负责管理和协调各个Bean的创建、依赖注入等工作。 扫描并注册BeanSpring Boot会扫描应用程序中的所有类查找带有特定注解的类并将其注册为Bean。这些特定注解包括Component、Service、Controller等它们用于标识类是Spring的组件需要由Spring容器来管理。 执行自动配置Spring Boot会根据应用程序的依赖关系和配置文件的内容自动配置各个模块和组件。它会根据类路径上的依赖自动配置数据库连接、Web服务器、消息队列等。 启动应用程序在完成上述步骤后Spring Boot会启动应用程序并监听指定的端口号。当接收到请求时它将根据请求的URL和配置的路由规则调用相应的Controller方法进行处理并返回结果给客户端。
2、如何理解Bean的生命周期
Bean的生命周期包括实例化、属性赋值、初始化和销毁四个阶段。首先当容器加载配置文件或者通过注解扫描到Bean定义时会实例化Bean对象。接着容器会根据配置或者注解将属性值注入到Bean中。然后容器会调用Bean的初始化方法可以通过实现InitializingBean接口或者在配置文件中指定初始化方法。在Bean的初始化阶段可以进行一些自定义的操作比如数据初始化、资源加载等。最后当容器关闭时会调用Bean的销毁方法可以通过实现DisposableBean接口或者在配置文件中指定销毁方法。在销毁阶段可以进行一些资源释放、清理操作。Bean的生命周期由容器来管理我们可以在不同阶段进行一些自定义的操作以满足业务需求。 MyBatis是一个开源的持久层框架用于简化Java应用程序与关系型数据库之间的交互。它提供了一种将SQL语句与Java代码解耦的方式使得我们可以通过配置文件来定义SQL语句然后通过Java代码调用这些SQL语句从而实现数据的增删改查操作。
3、MyBatis的主要功能
包括 SQL映射通过在XML配置文件中定义SQL语句将SQL语句与Java方法关联起来实现数据的持久化操作。 参数映射MyBatis支持将Java对象与SQL语句中的参数进行映射使得我们可以方便地传递参数给SQL语句。 结果映射MyBatis支持将SQL查询结果与Java对象进行映射使得我们可以方便地将查询结果封装到Java对象中。 缓存管理MyBatis提供了一级缓存和二级缓存的支持可以提高查询性能。 动态SQLMyBatis支持使用动态SQL语句可以根据不同的条件动态生成SQL语句使得我们可以灵活地构建SQL语句。
4、MyBatis的组成部分
包括 SqlSessionFactorySqlSessionFactory是MyBatis的核心接口用于创建SqlSession对象。 SqlSessionSqlSession是MyBatis的主要接口用于执行SQL语句包括插入、更新、删除和查询等操作。 Mapper接口Mapper接口是用于定义SQL语句的接口通过在接口中定义方法将SQL语句与Java代码进行关联。 Mapper XML配置文件Mapper XML配置文件是用于定义SQL语句的XML文件通过在配置文件中定义SQL语句和参数映射关系将SQL语句与Java代码解耦。
5、MyBatis的动态SQL
可以根据不同的条件来动态生成SQL语句使得我们可以根据不同的需求来构建灵活的SQL语句。 它适用于以下场景 条件查询根据不同的查询条件来动态生成查询语句例如根据用户输入的姓名、年龄、性别等条件来查询符合条件的数据。 动态排序根据用户选择的排序字段和排序方式来动态生成排序语句例如根据用户选择的字段进行升序或降序排序。 动态更新根据不同的更新条件来动态生成更新语句例如根据用户选择的字段和条件来更新数据库中的数据。 批量插入根据不同的插入条件来动态生成插入语句例如批量插入用户数据。
下面是一些动态SQL的代码示例
条件查询
select idgetUserList parameterTypeUser resultTypeUserSELECT * FROM userwhereif testname ! null and name ! AND name #{name}/ifif testage ! nullAND age #{age}/ifif testgender ! null and gender ! AND gender #{gender}/if/where
/select动态排序
select idgetUserList resultTypeUserSELECT * FROM userif testorderBy ! null and orderBy ! ORDER BY ${orderBy} ${orderType}/if
/select动态更新
update idupdateUser parameterTypeUserUPDATE usersetif testname ! null and name ! name #{name},/ifif testage ! nullage #{age},/ifif testgender ! null and gender ! gender #{gender},/if/setWHERE id #{id}
/update批量插入
insert idinsertUserBatch parameterTypejava.util.ListINSERT INTO user (name, age, gender) VALUESforeach collectionlist itemuser separator,(#{user.name}, #{user.age}, #{user.gender})/foreach
/insert这些示例代码展示了如何使用动态SQL来根据不同的条件动态生成SQL语句使得我们可以灵活地构建SQL语句来满足不同的需求。