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
- 方法的参数是基本数据类型或者 String 时 需要使用@Param注解
- 方法的参数有多个时必须在每个参数前都添加@Param注解,只有一个时可以省略
- 添加注解后,参数名以注解中指定的为准,@Param("xx") xx就是参数名
注3:#{} 和 ${} 的区别
- #{} 相当于是使用了预编译(PrepareStatement) 可以防止 SQL 注入,推荐使用
- ${} 不能防止SQL注入,不推荐使用
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构
· 字符编码:从基础到乱码解决
· 提示词工程——AI应用必不可少的技术