$ \ # 的区别
1.1 $的底层使用的是 Statement # 的底层是PreparedStatement
1.2 $ 单参时 参数名不能随意写 即使 0 ,1 param1 param2占位也不识别
除非使用 @Param(“名字”)
1.3 $ 容易被sql注入 # 不会存在sql注入
1.4 特殊情况下 比如表名 作为变量 则必须使用 $
1.5 如果是字符串类型的变量 需要手工拼接 单引号
运用最多的是可以将表名称 当做变量传入到Sql定义文件中
public interface UserDao {
User findByid(@Para("table_name") String name @Para("id")int id);
}
//sql定义文件
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper PUBLIC "-//ibatis.apache.org//DTD Mapper 3.0//EN"
"http://ibatis.apache.org/dtd/ibatis-3-mapper.dtd">
<!-- namespace指定和哪个Mapper映射器接口对应 -->
<mapper namespace="com.liheng.dao.UserDao2">
<!-- 定义SQL语句 -->
<select id="findByid" parameterType="int" resultType="com.liheng.bean.User">
//可以将table_name 变量传入到sql定义文件当做变量
select * from ${table_name} where id= #{id}
</select>
</mapper> ```
开启sql查询日志
<settings>
<setting name="logImpl" value="STDOUT_LOGGING" />
</settings>
分页插件实现
引入 pageHelper jar包
使用 PageHelper.startPage(pageNum, pageSize); 查询之前调用即可实现分页功能