Mybatis需要注意的问题

1、MyBatis框架适用场合:

  • (1)MyBatis专注于SQL本身,是一个足够灵活的DAO层解决方案。
  • (2)对性能的要求很高,或者需求变化较多的项目,如互联网项目,MyBatis将是不错的选择。

2、#{}和${}的区别

  • #{}是预编译处理,${}是字符串替换。
  • Mybatis在处理#{}时,会将sql中的#{}替换为?号,调用PreparedStatement的set方法来赋值;
  • Mybatis在处理${}时,就是把${}替换成变量的值。
  • 使用#{}可以有效的防止SQL注入,提高系统安全性。

 3、当实体类中的属性名和表中的字段名不一样 处理方案

  1. 数据库别名。通过在查询的sql语句中定义字段名的别名,让字段名的别名和实体类的属性名一致。
  2. <resultMap>。通过<resultMap>来映射字段名和实体类属性名的一一对应的关系。

4、通常一个Xml映射文件,都会写一个Dao接口与之对。在mapper映射文件中的namespace指向该Dao接口的全限定性类名,映射文件中的每一个<select>、<insert>、<update>、<delete>标签,都会被解析为一个MappedStatement对象。Dao接口中方法名就是就是对应的MappedStatement 的id值。接口方法内的参数,就是传递给sql的参数。

5、在Dao接口中的方法是不可以重载的,因为是全限名+方法名的保存和寻找策略。Dao接口的工作原理是JDK动态代理,Mybatis运行时会使用JDK动态代理为Dao接口生成代理proxy对象,代理对象proxy会拦截接口方法,转而执行MappedStatement所代表的sql,然后将sql执行结果返回。

6、Mybatis分页

  1. )使用RowBounds对象进行分页,它是针对ResultSet结果集执行的内存分页
  2. )使用原生sql,带分页参数的sql,物理分页
  3. )也可以用插件分页

7、如何获取自动生成的(主)键值?

  • insert 方法总是返回一个int值 - 这个值代表的是插入的行数。
  • 而自动生成的键值在 insert 方法执行完后可以被设置到传入的参数对象中。

具体详细查看该文档

猜你喜欢

转载自blog.csdn.net/qq_33656559/article/details/88323366