使用注解开发
1 面向接口编程
原因:
解耦、可扩展性、提高复用性
关于接口的理解
- 定义与实现的分离
- 两类接口
- 一个个体的抽象,abstract class
- 一个个体某个方面的抽象,interface
三个面向:
- 面向对象
- 面向过程
- 面向接口
2 使用注解开发
使用步骤:
- 注解在接口上实现
@Select("select * from User")
List<User> getUsers();
- 需要在核心配置文件中绑定接口
<mappers>
<mapper class="com.kuang.dao.UserMapper" />
</mappers>
- 测试
本质:反射机制实现
底层:动态代理!
![v2-9f32e09a976582f2825728a79872af81_b.jpg](http://img-02.proxy.5ce.com/view/image?&type=2&guid=0fad6905-e52f-eb11-8da9-e4434bdf6706&url=https://pic2.zhimg.com/v2-9f32e09a976582f2825728a79872af81_b.jpg)
8.3 注解实现CRUD
- 我们可以在工具类创建的时候实现自动提交事务
//参数表示自动提交事务
public static SqlSession getSqlSession(){
return sqlSessionFactory.openSession(true);
}
- 编写接口,添加注解
public interface UserMapper {
@Select("select * from User")
List<User> getUsers();
//多个参数情况下,必须加上@Param()注解
@Select("select * from user where id=#{id}")
User getUserById(@Param("id") int id);
@Insert("insert into user(id,name,pwd) values(#{id},#{name},#{password})")
int addUser(User user);
@Update("update user set name=#{name},pwd=#{password} where id=#{id}")
int updateUser(User user);
}
测试类
注意:我们必须要将接口注册绑定到我们的核心配置文件中
关于@Param()注解
- 基本类型的参数或者String类型,必须加上
- 引用类型不需要加
- 如果只有一个基本类型的话,可以不加。
- 在sql中引用的就是我们这里的注解中的属性
#{ } 和${ }相比:最好用#{ }