一、简单查询
查询数据中的一条数据或多条数据,返回,有两种实现方式:
第一种,用注解的方式实现,方法如下图:
第二种,用mapper的方式实现,方法如下图:
注意:使用mapper的方式实现查询功能时,一定要注意resultType的使用。
二、Mybatis查询时传递参数
Mybatis传递参数有两种方式:
${}:此方法的本质是字符串拼接
#{}:此方法的本质是占位字符串
1、传递单个参数
查询指定id的数据,如下图,下图中也可以替换成${id}
2、传递多个参数
查询tb_user表中id为1的数据,,表名和id值为传递的值,如下图:
注意:此时表名的传递不能用#{},要用${},因为表名位置要进行字符串拼接,而#{}占位符会出现语法问题
注意:在使用Mybatis框架,设计抽象方法时,如果参数的数量超过1个(有2个或更多),一定要为每一个参数都添加@Param注解,不然定义的参数名就不能按照实际意义来定义了,就得按照Mybatis参数传递的规则[arg1, arg0, param1, param2]来定义参数名了。
3.传递map类型参数
如下图:
4.传递实体类参数
如下图
注意:Mybatis执行时会自动读取参数User的属性填充到对应占位符#{},比如会读取User的username属性值填充到#{username}的位置,按照这个规则执行SQL就可以将User对象周玲的数据存储到数据库中。
总结:
使用#{}格式的占位符时,mybatis在处理过程中是使用了预编译的做法,这种处理方式是安全的,而${}占位符是先拼接SQL语句再执行的过程,没有预编译的处理,所以存在SQL注入的风险。
在实际开发过程中推荐使用#{}格式的占位符来实现功能。