最近学习mybatis,总结了一些东西,都是些死东西,但是很实用,分享出来,希望将要学习mybatis的同学少走弯路。
阅读mybatis文档了解
1.重要类及其建议生命周期:
SqlSessionFactoryBuilder:method scope
SqlSessionFactory:application scope
SqlSession:request or method scope 因此建议使用模式为:
SqlSession session = sqlSessionFactory.openSession();
try {
// do work
} finally {
session.close();
}
Mapper Instances: method scope 或者和SqlSession实例保持一致,建议使用模式为:
SqlSession session = sqlSessionFactory.openSession();
try {
BlogMapper mapper = session.getMapper(BlogMapper.class);
// do work
} finally {
session.close();
}
2.注意事项:
a.One SqlSessionFactory instance per database
b.当TransactionManager 选为MANAGED时,By default Mybatis does close the connection. However, some containers don’t expect this, and thus if you need to stop it from closing the connection, set the “closeConnection” property to false.
需要学习:
A.结果映射resulType、resultMap
B.动态sql
C.最佳实践模式
如果非要在程序中写SQL代码:
D.SelectBuilder/SqlBuilder :import static org.mybatis.jdbc.SelectBuilder.*; 简洁高效的在代码中编写动态sql。
E.使用bean作为传入参数时,字段(属性)名称大小写敏感。
F.参数可以指定一个确定的数据类型(当传入的此参数为null值时必须设置jdbcType)
#{property,javaType=int,jdbcType=NUMERIC}
javaType通常可以从参数对象中来去顶,除非对象是一个HashMap。那么javaType应该被确定来保证使用正确类型处理器。
注意:如果null被当作值来传递,对于所有可能为空的列,JDBC Type是需要的。
支持的JDBC类型
BIT FLOAT CHAR TIMESTAMP OTHER UNDEFINED
TINYINT REAL VARCHAR BINARY BLOB NVARCHAR
SMALLINT DOUBLE LONGVARCHAR VARBINARY CLOB NCHAR
INTEGER NUMERIC DATE LONGVARBINARY BOOLEAN NCLOB
BIGINT DECIMAL TIME NULL CURSOR
G.在select中调用存储过程时,接口方法的返回值应当设为Object
H.配置中的sql语句如果需要多个参数,则可以通过bean或者是map来传入
<select id="selectTeacher" parameterType="Map" resultType="com.myapp.domain.Teacher">
select * from Teacher where c_id=#{id} and sex=#{sex}
</select>
Map<String,String> map=new HasMap<String,String>();
map.put("id","2");
map.put("sex","男");
List<Teacher> tList = teacherMapper.selectTeacher(map);
for (Teacher entityTemp : tList) {
System.out.println(entityTemp.toString()); }
I.当传入的map中既有基本数据类型的数据又有bean时
<insert id="insertStudentWithMoreParams" parameterType="map">
insert into ${t}(stuid,stuname,stuage) values (#{s.stuid}, #{s.stuname,jdbcType=VARCHAR},#{s.stuage})
</insert>
String t = "t_student";
Student s = new Student();
s.setXXX();....
Map map = new HashMap();
map.put("t", t);
map.put("s", s);
mapper.insertStudentWithMoreParams(map);
J.$只能用于获取复杂对象如bean,map的成员值,而#既可以获取复杂对象的成员值,还可以获取简单变量的值,当只传入一个简单变量作为参数时,只能用#获取。
K.对于组装动态sql语句中某些变量,只能使用$获取值,如表名,字段名; 如果动态sql中只需要一个简单字符串变量作为参数,则只能使用$获取,而且必须以复杂对象的形式传入这个参数,如放进map或bean中
分享到:
相关推荐
MyBatis学习总结笔记 MyBatis是一个优秀的持久层框架,它支持自定义SQL、存储过程以及高级映射。MyBatis免除了几乎所有的JDBC代码以及设置参数和获取结果集的工作。MyBatis可以通过简单的XML或注解来配置和映射原始...
这篇“mybatis学习总结”着重探讨了MyBatis如何与Spring和Spring Boot进行集成,这对于构建高效、可维护的企业级应用至关重要。 首先,MyBatis与Spring的集成主要通过Spring的IoC(Inversion of Control)容器来...
【标题】:“mybatis学习总结:基础示例” 在IT领域,MyBatis是一个非常流行的持久层框架,它简化了Java开发中数据库操作的复杂性。这篇“mybatis学习总结:基础示例”旨在帮助初学者理解MyBatis的核心概念,并通过...
本篇“mybatis学习总结:annotation示例改进”主要关注的是如何利用MyBatis的注解来优化数据库操作。在现代开发环境中,注解已经成为了简化配置、提高代码可读性的重要工具。以下是关于MyBatis注解使用的一些关键...
这篇“mybatis学习总结:对象关系映射的XML配置实现”的文章,很可能会深入探讨如何在MyBatis中通过XML配置文件来实现对象与数据库表之间的映射关系。 首先,MyBatis的核心是SQL映射文件,它以XML格式存储,包含了...
总结,MyBatis作为一个轻量级的持久层框架,通过灵活的XML或注解配置,将Java对象与数据库操作紧密结合,简化了开发工作,提高了开发效率。同时,其强大的动态SQL功能和良好的扩展性,使其在Java Web开发中广泛应用...
通过学习 MyBatis,开发者可以更好地理解和控制 SQL 执行过程,提升数据库操作的灵活性和效率。同时,结合设计模式的理论,可以进一步优化代码结构,提高代码的可读性和可维护性。在实际开发中,根据项目的特性和...
在IT行业中,MyBatis作为一个轻...通过`AnnotationMappingSample`的学习,我们可以更好地掌握这种混合使用的方式,提高代码的可维护性和开发效率。无论是注解的便捷性还是XML的扩展性,都能在实际项目中发挥重要作用。
MyBatis是一个强大的Java持久层框架,它主要处理SQL查询、存储过程以及复杂的对象映射。这个框架的主要优点是它可以避免大量的JDBC代码手动编写,同时也简化了结果集的处理。下面我们将深入探讨MyBatis的基本概念和...
总结,MyBatis通过核心配置文件、映射文件和Mapper接口实现了数据库操作的便捷和灵活。其强大的动态SQL功能、丰富的参数映射和结果集映射,以及缓存机制,都为Java开发人员提供了高效、可控的数据库访问手段。在实际...
MyBatis学习总结-附件资源
最后,“学习笔记”意味着可能有作者对MyBatis学习过程中的理解、经验总结,或者是关键概念的解释,这对于初学者来说是极有价值的参考资料。 【标签解析】 标签“mybatis”进一步确认了这份资源的核心内容,即...
MyBatis学习总结(四)——解决字段名与实体类属性名不相同的冲突 在平时的开发中,我们表中的字段名和表对应实体类的属性名称不一定都是完全相同的,下面来演示一下这种情况下的如何解决字段名与实体类属性名不...
MyBatis是一个强大的持久层框架,它允许开发者自定义SQL、存储过程以及高级映射,极大地简化了Java与数据库交互的复杂度。MyBatis消除了手动编写JDBC代码和管理参数的过程,同时也支持XML和注解两种方式来配置和映射...
MyBatis学习个人知识点总结
总结来说,从给定文件中提取的知识点涵盖了SSM框架的基本概念、int与Integer的区别、Mybatis的配置使用、接口映射、CRUD操作等。这些内容是Java Web开发中不可或缺的一部分,对于任何想要深入学习和应用SSM框架的...
mybatis学习知识点小小总结。。。。。。。。。。。。。。。。。。。。。。。
MyBatis 学习笔记 MyBatis 是一个流行的 SQL 映射框架,能够自定义 SQL、存储过程和高级映射的持久层框架。在本文中,我们将从基本概念开始,逐步深入讲解 MyBatis 的使用和配置。 MyBatis 概念 MyBatis 是一个...