SSM框架详解:Mybatis与SqlSessionFactory深度解析

需积分: 9 2 下载量 6 浏览量 更新于2024-07-09 收藏 556KB DOCX 举报
"ssm框架整合的关键点和Mybatis的核心特性" SSM框架是Spring、SpringMVC和Mybatis三者集成的开发框架,常用于构建Java Web应用程序。在这个框架整理中,我们将关注Mybatis的部分,它是SSM中的数据访问层,提供灵活的SQL映射功能。 1. **#{}与${}的区别** Mybatis中的`#{}`是预编译处理,防止SQL注入,它会将参数值包装成PreparedStatement的参数;而`${}`则是简单的字符串替换,不安全,可能会引发SQL注入问题。 2. **Mapper配置** `Namespace`用于指定Mapper文件的位置,通常与Mapper接口的全限定名对应。通过`UserMapper mapper = session.getMapper(UserMapper.class);`获取Mapper实例,然后调用`Mapper+方法名+增删改的参数`来执行相应的操作。 3. **事务管理** 增删改操作需要手动提交事务,例如使用`session.commit();`来提交当前的数据库事务。 4. **万能Map与Like模糊查询** 当实体类或数据库字段较多时,可以使用Map作为参数,实现更灵活的查询。同时,Mybatis支持使用`like`关键字进行模糊查询,通过动态SQL拼接实现。 5. **类型别名与包名** Mybatis允许设置类型别名,简化类型引用。在`<typeAliases>`中定义,如`<typeAlias type="com.kuang.pojo.User" alias="User"/>`。也可以通过在实体类上添加`@Alias("user")`注解来为类设置别名。 6. **作用域与生命周期** - **SqlSessionFactoryBuilder**:负责构建SqlSessionFactory,应保持在方法作用域内,避免长期持有,以减少资源占用。 - **SqlSessionFactory**:代表数据库连接池,其生命周期与Mybatis应用相同,一旦创建就应该长期保存。避免创建多个SqlSessionFactory以防止资源浪费和可能的系统崩溃。 7. **SqlSession的使用** SqlSession代表一次数据库会话,用于执行SQL语句。每次数据库操作都应创建新的SqlSession实例,并在完成后关闭,以确保资源的正确释放。 8. **Mybatis执行流程** Mybatis的执行过程涉及SqlSessionFactory的创建、SqlSession的获取、执行SQL、提交事务及关闭SqlSession等步骤。理解这一流程有助于优化代码和解决并发问题。 通过对Mybatis这些关键特性的理解,开发者可以在SSM框架下更高效地进行数据库操作,同时确保程序的稳定性和安全性。在实际项目中,合理配置和使用这些组件,能够大大提高开发效率并降低维护成本。