mybatis总结(java ee实战精粹总结)

《java ee实战精粹》读书总结

  1. #{}与${}的区别

#{}代表向statement传入参数值, 用于sql语句的动态参数设置

${}是Properties文件的变量占位符,拼接字符串,从而导致sql注入问题

  1. Xml映射文件与Dao接口的关系

Dao接口,即Mapper接口,没有具体的实现类,定义数据库操作方法

Xml文件中的namespace属性为Dao的全限名,mybatis将每一个<select><insert>等标签解析为MappedStatement对象。

Dao接口的方法名,是MappedStatement的id值,传入的参数就是传入sql的参数

接口的全限名+方法名  定位一个MappedStatement________namespace+id

 

 

sql语句的特殊符号处理——<![CDATA[特殊符号]]> 例如<![CDATA[>]]>

<package>给一个包批量设置别名,与类名称一样

@Alias(value = "userinfo2") 在类上加注解,解决别名重复问题

concat('%', #{username},'%')模糊查询——使用字符串拼接实现,防止sql注入——mysql下的

<bind name="querySQL" value="'%'+_parameter.getUsername()+'%'" />——多个数据库通用,使用<bind>进行绑定 ,可以从对象,传入字符串,map获取数据
select * from userinfo where username like #{querySQL}

 factory.openSession(ExecutorType.BATCH);开启批处理操作

List<Userinfo> listUserinfo = session.selectList("selectAll", null, new RowBounds(beginPosition, pageSize));//实现分页查询biginposition = (targetPage-1)*pageSize
接口需要传入RowBounds(offset,limit)
public List<Userinfo> selectAll(RowBounds rowBounds);

 

 

 

 

  

posted @ 2022-01-04 16:59  黑白灰java  阅读(41)  评论(0)    收藏  举报