1、MyBatis中如何实现动态SQL的?
MyBatis的动态SQL是基于OGNL表达式的,它可以帮助我们方便的在SQL语句中实现某些逻辑. MyBatis中用于实现动态SQL的元素主要有:if, choose(when,otherwise),trim,where,set,foreach
2、Mybaties中#与$的区别?
1)#是把传入的数据当作字符串,如#field#传入的是id,则生成sql语句:order by “id”;
2)$传入的数据直接生成在sql里,如$field$传入的是id,则sql语句生成是这样,order by id ;
3)#方式能够很大程度防止sql注入, 但$方式无法防止sql注入;
4)$方式一般用于传入数据库对象.例如传入表名;
5)一般能用#的就别用$ ;
3、MyBatis原理,为什么使用,优点是什么
封装了JDBC操作,将SQL查询结果映射为对象,将对象属性值映射到SQL.
步骤:
1)解析SqlMapConfig.xml和SqlMap.xml(定义SQL)
2)将解析出的SQL生成MappedStatement(预编译Statement)
3)将传入的SQL参数给Statement绑定,参数类型可以为java对象,Map类型,int,String类型
4)执行mappedstatement,返回sql结果
5)将返回的SQL结果转为Java对象,Map,int,String类型返回
优点:简化数据库访问操作,便于实现DAO操作