Mybatis注解开发CRUD
使用注解来映射简单语句会使代码显得更加简洁
只适合于简单sql语句,复杂sql语句建议使用xml
注解与配置文件协同开发,达到最佳效果
注解开发时,mapper映射注册
< mappers> < mapper class="ltd.lccyj.mapper.UserMapper"/> < /mappers>
@Param
用于给方法参数起一个名字
- 在方法只接受一个参数的情况下,可以不使用@Param。
- 在方法接受多个参数的情况下,建议一定要使用@Param注解给参数命名。
- 如果参数是 JavaBean , 则不能使用@Param。
#{}与${}d的区别
#{}的作用主要是替换预编译语句中的占位符 推荐使用
INSERT INTO user (name) VALUES (#{name}); INSERT INTO user (name) VALUES (?);
${}的作用是直接进行字符替换
INSERT INTO user (name) VALUES ('${name}'); INSERT INTO user (name) VALUES ('kuangshen');
select
mapper接口
@Select("select * from user where id = #{id}")
User selectUserById(@Param("id") int id);
测试方法
@Test
public void selectById() {
SqlSession sqlSession = MybatisUtils.getSqlSession();
UserMapper mapper = sqlSession.getMapper(UserMapper.class);
User user = mapper.selectUserById(1);
System.out.println(user);
sqlSession.close();
}
insert
mapper接口
@Insert("insert into user(id, name, password) values (#{id},#{name},#{password})")
int addUser(User user);
测试方法
@Test
public void addUser() {
SqlSession sqlSession = MybatisUtils.getSqlSession();
UserMapper mapper = sqlSession.getMapper(UserMapper.class);
User user=new User(3,"阿巴","123");
int result = mapper.addUser(user);
System.out.println(result);
sqlSession.commit();
sqlSession.close();
}
update
mapper接口
@Update("update user set name=#{name},password=#{password} where id=#{id}")
int updateUser(User user);
测试方法
@Test
public void updateUser() {
SqlSession sqlSession = MybatisUtils.getSqlSession();
UserMapper mapper = sqlSession.getMapper(UserMapper.class);
User user=new User(3,"阿巴","abaaba");
int result = mapper.updateUser(user);
System.out.println(result);
sqlSession.commit();
sqlSession.close();
}
delete
mapper接口
@Delete("delete from user where id=#{id}")
int deleteUserById(@Param("id") int id);
测试方法
@Test
public void deleteUserById() {
SqlSession sqlSession = MybatisUtils.getSqlSession();
UserMapper mapper = sqlSession.getMapper(UserMapper.class);
int result = mapper.deleteUserById(3);
System.out.println(result);
sqlSession.commit();
sqlSession.close();
}