mybatis总结(java ee实战精粹总结)
《java ee实战精粹》读书总结
- #{}与${}的区别
#{}代表向statement传入参数值, 用于sql语句的动态参数设置
${}是Properties文件的变量占位符,拼接字符串,从而导致sql注入问题
- 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);

浙公网安备 33010602011771号