mybatis-注解实现CRUD

注解可以代替 mapper.xml 映射文件 虽然十分方便,但不适合复杂的操作.

一.在 UserMapper 接口中的方法上添加注解

public interface UserMapper {
@Select("select * from user")
List<User> getUser();
//方法存在多个基本类型参数,所有的参数前面必须加上 @Param("xx")注解,并且参数名以注解指定的为准
@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("xx")注解,并且参数名以注解指定的为准
@Delete("delete from user where id = #{uid}")
int deleteUser(@Param("uid")int id);
}

二.在核心配置文件 mybatis-config.xml 中绑定接口

<!-- 绑定接口-->
<mappers>
<mapper class="com.lv.dao.UserMapper"/>
</mappers>

三.测试

public class UserMapperTest {
@Test
public void getUser(){
SqlSession sqlSession = MybatisUtils.getSqlSession();
//底层主要应用了反射
UserMapper mapper = sqlSession.getMapper(UserMapper.class);
List<User> userList = mapper.getUser();
for (User user : userList) {
System.out.println(user);
}
sqlSession.close();
}
@Test
public void getUserById(){
SqlSession sqlSession = MybatisUtils.getSqlSession();
UserMapper mapper = sqlSession.getMapper(UserMapper.class);
User user = mapper.getUserById(1);
System.out.println(user);
sqlSession.close();
}
@Test
public void addUser(){
SqlSession sqlSession = MybatisUtils.getSqlSession();
UserMapper mapper = sqlSession.getMapper(UserMapper.class);
mapper.addUser(new User(6,"admin6","123456"));
sqlSession.close();
}
@Test
public void updateUser(){
SqlSession sqlSession = MybatisUtils.getSqlSession();
UserMapper mapper = sqlSession.getMapper(UserMapper.class);
mapper.updateUser(new User(6,"cnm","696969"));
sqlSession.close();
}
@Test
public void deleteUser(){
SqlSession sqlSession = MybatisUtils.getSqlSession();
UserMapper mapper = sqlSession.getMapper(UserMapper.class);
mapper.deleteUser(6);
sqlSession.close();
}
}

注1:增删改可以开启自动提交事务(不建议)

public static SqlSession getSqlSession(){
//参数true : 自动提交事务
return sqlSessionFactory.openSession(true);
}

注2:关于@Param

  1. 方法的参数是基本数据类型或者 String 时 需要使用@Param注解
  2. 方法的参数有多个时必须在每个参数前都添加@Param注解,只有一个时可以省略
  3. 添加注解后,参数名以注解中指定的为准,@Param("xx") xx就是参数名

注3:#{} 和 ${} 的区别

  1. #{} 相当于是使用了预编译(PrepareStatement) 可以防止 SQL 注入,推荐使用
  2. ${} 不能防止SQL注入,不推荐使用

 

相关博文:
阅读排行:
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构
· 字符编码:从基础到乱码解决
· 提示词工程——AI应用必不可少的技术
点击右上角即可分享
微信分享提示