1.ORM
ORM的全称是Object Relational Mapping,即对象关系映射。
描述的是对象和表之间的映射。操作Java对象,通过映射关系,就可以自动操作数据库。
在ORM关系中,数据库表对应Java中的类,一条记录对应一个对象,一个属性对应一个列。
2.Mybatis的#{}和${}的区别?
1.#{}实现的是sql语句的预处理参数,之后再sql中用?号代替,使用时不需要关注数据类型,Mybatis自动实现数据类型的转换,并且可以防止SQL注入;
2.${}实现的是sql语句的直接拼接,不做数据类型转换,需要自行判断数据类型,不能防止SQL注入;
总结:#{}占位符,用于参数传递; ${}用于SQL拼接
3. 使用Mybatis过程中当实体类中的属性名和表中的字段名不一样 ,怎么解决?
1.通过在查询语句定义字段名的别名,比如字段名的别名和实体类的属性名一致。
2.使用通用Mapper时,可以通过@Column注解设置
3.如果进行自定义查询,可以通过@Result进行设置
4.模糊查询like语句该怎么写?
1.使用通用Mapper的Criteria进行like语句的拼凑
2.使用#{}占位符方式,参数前后拼凑%
5.编写了一个Dao接口,提供需要的方法,在方法添加对应的注解就可以完成对应的功能,工作原理是什么?
Dao接口在使用时,MyBatis创建接口对应的代理类。
在调用对应的方法时,执行的是代理类对应的方法。
代理类的方法上添加的注解完成增删改查的操作,如果是查询将结果封装到方法返回值类型声明的对象中。
6.使用Mybatis时Dao接口里的方法能重载吗?
不能,因为全限定名+方法名的必须唯一。、
7.Mybatis是如何进行分页的?
使用第三方分页助手:PageHelper
使用方式:
在将要执行查询sql语句之前使用分页助手:PageHelper.startPage(pageNum:页码, pageSize:每页显示数量);
目录
1.ORM
2.Mybatis的#{}和${}的区别?
3. 使用Mybatis过程中当实体类中的属性名和表中的字段名不一样 ,怎么解决?
4.模糊查询like语句该怎么写?
5.编写了一个Dao接口,提供需要的方法,在方法添加对应的注解就可以完成对应的功能,工作原理是什么?
6.使用Mybatis时Dao接口里的方法能重载吗?
7.Mybatis是如何进行分页的?