mybatis的一些小细节
Mybatis要解决的问题: 1. 将sql语句硬编码到java代码中,如果修改sql语句,需要修改java代码,重新编译。系统可维护性不高。 设想如何解决? 能否将sql单独配置在配置文件中。 2. 数据库连接频繁开启和释放,对数据库的资源是一种浪费。 设想如何解决? 使用数据库连接池管理数据库连接。 3. 向preparedStatement中占位符的位置设置参数时,存在硬编码(占位符的位置,设置的变量值) 设想如何解决? 能否也通过配置的方式,配置设置的参数,自动进行设置参数 4. 解析结果集时存在硬编码(表的字段名、字段的类型) 设想如何解决? 能否将查询结果集映射成java对象。 image 问题一. #{}和${}的区别是什么? #{}是预编译处理,${}是字符串替换。 Mybatis在处理#{}时,会将sql中的#{}替换为?号,调用PreparedStatement的set方法来赋值; Mybatis在处理 {}替换成变量的值。 使用#{}可以有效的防止SQL注入,提高系统安全性。 问题二. 当实体类中的属性名和表中的字段名不一样 ,怎么办 ? 第1种: 通过在查询的sql语句中定义字段名的别名,让字段名的别名和实体类的属性名一致 <select id=”selectorder” parametertype=”int” resultetype=”me.gacl