7、使用注解开发
1、注解在接口上实现
/**
* 查询用户
*/
@Select("select * from user")
public List<User> getUsers();
2、需要在核心配置文件中绑定接口
<mappers>
<package name="com.zheng.Dao"/>
</mappers>
本质:反射机制实现
底层:动态代理
使用注解实现增删改查
1、接口
public interface UserMapper {
/**
* 查询用户
*/
@Select("select * from user")
public List<User> getUsers();
/**
* 根据id查询用户
*/
@Select("select * from user where id=#{id}")
public User selectUserById(@Param("id") String id);
/**
* 增加
*/
@Insert("insert into user (id,name,pwd) values (#{id},#{name},#{pwd})")
public int addUser(User user);
/**
* 修改
*/
@Update("update user set name=#{name},pwd=#{pwd} where id=#{id}")
public int update(User user);
/**
* 删除一个用户
*/
@Delete("delete from user where id=#{id}")
public int deleteUser(String id);
}
2、测试
public class UserDaoTest {
@Test //查询所有的用户
public void test() {
SqlSession sqlSession = MyBtaisUtil.getSqlSession();
UserMapper mapper = sqlSession.getMapper(UserMapper.class);
List<User> userList = mapper.getUsers();
for (User user : userList) {
System.out.println(user);
}
sqlSession.close();
}
@Test //根据id查询用户
public void selectUserById(){
SqlSession sqlSession = MyBtaisUtil.getSqlSession();
UserMapper user = sqlSession.getMapper(UserMapper.class);
User user1 = user.selectUserById("1");
if(user1!=null){
System.out.println(user1);
}else{
System.out.println("查询失败");
}
sqlSession.close();
}
@Test //增加用户
public void addUser(){
SqlSession sqlSession = MyBtaisUtil.getSqlSession();
UserMapper mapper = sqlSession.getMapper(UserMapper.class);
int res= mapper.addUser(new User("3","老刘","999"));
if(res>0){
System.out.println("增加成功!!!");
}else{
System.out.println("增加失败");
}
sqlSession.close();
}
@Test //修改用户
public void updateUser(){
SqlSession sqlSession = MyBtaisUtil.getSqlSession();
UserMapper mapper = sqlSession.getMapper(UserMapper.class);
int res = mapper.update(new User("3", "范梦涵", "1234567"));
if(res>0){
System.out.println("修改成功");
}else {
System.out.println("修改失败!!!");
}
sqlSession.close();
}
@Test //删除用户
public void deleteUser(){
SqlSession sqlSession = MyBtaisUtil.getSqlSession();
UserMapper mapper = sqlSession.getMapper(UserMapper.class);
int res = mapper.deleteUser("3");
if(res>0){
System.out.println("删除成功!!!");
}else{
System.out.println("提交失败");
}
sqlSession.close();
}
}
注意
我们可以在工具类创建的时候实现自动提交事务
- 测试类
【注意:我们必须要将接口注册绑定到我们的核心配置文件中】 - 关于@Param()注解
- 基本类型的参数或者String类型,需要加上
- 引用类型不需要加
- 如果只有一个基本类型的话,可以忽略,但是建议大家都加上
- 我们在SQL中引用的就是我们这里的@Param()中设定的属性名