如果一个文件夹是springboot项目,就从maven窗口引入它的pom文件
@delete现在里面的value语句没有提示,不知道怎么回事
@Mapper
public interface EmpMapper {
// delete data by id
@Delete("delete from emp where id = # {id}")
public void delete(Integer id);
//返回影响的元组数量
public int delete(Integer id);
}
mybatis.configuration.log-impl=org.apache.ibatis.logging.stdout.StdOutImpl
预编译sql
性能更高:从缓存当中直接拿到编译的sql语句
更安全:防止sql注入
#{...}:预编译,被?取代
${...}:直接拼接sql语句
可以用实体类封装
主键返回:
@Options(keyProperty = "id", UsedGeneratedKeys = True)
根据主键修改员工信息
如果实体类属性名和数据库表查询返回的字段名不一致,不能自动封装
@Select("select id, username, password, name, gender, image, job, entrydate, " +
"dept_id deptID, create_time createTime, update_time updateTime from emp where id = #{id}")
@Results({
@Result(column = "dept_id", property = "deptId"),
@Result(column = "create_time", property = "createTime"),
@Result(column = "update_time", property = "updateTime")
})
#开启驼峰命名自动映射
mybatis.configuration.map-underscore-to-camel-case=true
模糊匹配里面要把'%张%'本来改成'%#{name}%',但是''里面不能装#,所以改成%${name}%',但是性能低,容易被注入
concat函数,改成concat('%',#{name},'%'),这样引号里面就没有问号了
注意!!!test里面的属性名不要写成数据库里面的了
update emp
set
username=#{username},
name=#{name},
gender=#{gender},
image=#{image},
job=#{job},
entrydate=#{entrydate},
dept_id=#{deptId},
update_time=#{updateTime}
where id = #{id}
delete from emp where id in
#{id}
sql定义可重用语句片段
include是一个单标签,里面设置refid值