MyBatis
一款优秀的**持久层(dao)**框架,用于简化JDBC的开发
官网:https://mybatis.org/mybatis-3/zh/index.html
@Mapper // 在运行时,会自动的生成该接口的实现类对象(代理对象),并且将该对象交给IOC容器管理
public interface UserMapper {
// cha'x
@Select("select * from user")
public List<User> list();
}
Lombok
-
Lombok是一个实用的Java类库,能通过注解的形式自动生成构造器、getter/setter等方法,并且可以自动化生成日志变量
注解 作用 @Gertter/@Setter 为所有的属性提供get/set方法 @ToString 会给类自动生成易阅读的toString方法 @EqualsAndHashCode 根据类所拥有的非静态字段自动重写equals方法和hashCode方法 @Data 提供了更综合的生成代码功能(@Getter+@Setter+@ToString+@EqualsAndHashCode) @NoArgsConstructor 为实体类生成无参的构造器方法 @AllArgsConstructor 为实体类生成除了static修饰的字段之外带有各参数的构造器的方法
日志输出
-
可以在application.properties中,打开mybatis的日志,并输出到控制台
#指定mybatis输出日志的位置,输出控制台
mybatis.configuration.log-impl=org.apache.ibatis.logging.stdout.StdOutImpl -
预编译:性能更高,更安全(防止SQL注入)
delete from emp where id = ?(占位符)
1
2
3
用上面三个数依次替换'?'#{……}:执行SQL时,会将#{……}替换成?,生成预编译SQL,会自动设置参数值。在参数传递时使用。${……}:拼接SQL,直接将参数拼接在SQL语句中,存在SQL注入问题。在对表名、列表进行动态设置时使用。
删除操作
文件:mapper.EmpMapper(接口)
@Mapper
public interface EmpMapper {
// 根据ID删除数据
@Delete("delete from emp(表名) where id = #{id}")
public void delete(Integer id);
}
新增操作
主键返回
- 在数据添加成功后,需要获取插入数据库数据的主键
@Mapper
public interface EmpMapper {
@Options(keyProperty="id", useGeneratedKeys = true) // 主键赋值给emp的id属性
@Insert("insert into emp(username, name, gender, image, job, ……)" + "values(#{username}, #{name}, #{gender}, #{image}…… )") // 写属性名,也就是pojo文件夹下的内容
public void insert(Emp emp);
}