目录
在JSP中使用servlet的时候需要先在web.xml中配置相关的servlet类才能正常使用,然后还有一种快捷的方式就是使用@WebServlet的快速开发。在之前的MyBatis中也都是使用的xml文件的配置,然后这个是说说用注解的方式使用Mybatis。
使用了注解开发后就不再需要mapper.xml的配置文件了。
/**
* 查询全部用户
* @return
*/
@Select("select * from user")
public List<User> getAllUser();
<!--使用class绑定接口-->
<mappers>
<mapper class="com.kailong.mapper.UserMapper"></mapper>
</mappers>
@Test
public void testGetAllUser(){
SqlSession sqlSession = MybatisUtils.getSession();
UserMapper mapper = sqlSession.getMapper(UserMapper.class);
List<User> users = mapper.getAllUser();
for (User user:users){
System.out.println(user);
}
sqlSession.close();
}
改造MybatisUtils工具类的getSession( ) 方法,重载实现。
//获取SqlSession连接
public static SqlSession getSession(){
return getSession(true); //事务自动提交
}
public static SqlSession getSession(boolean flag){
return sqlSessionFactory.openSession(flag);
}
注意:确保实体类和数据库字段对应
/**
* 根据Id查询用户
* @param id
* @return
*/
@Select(" select * from user where id = #{id}")
User selectUserById(@Param("id")int id);
@Test
public void testSelectUserById() {
SqlSession session = MybatisUtils.getSession();
UserMapper mapper = session.getMapper(UserMapper.class);
User user = mapper.selectUserById(1);
System.out.println(user);
session.close();
}
/**
* 添加用户
* @param user
* @return
*/
@Insert("insert into user(id,name,pwd) values (#{id},#{name},#{pwd})")
int addUser(User user);
@Test
public void testAddUser() {
SqlSession session = MybatisUtils.getSession();
UserMapper mapper = session.getMapper(UserMapper.class);
User user = new User(5,"愚生浅末","123456");
int i = mapper.addUser(user);
System.out.println(i);
session.commit(); //提交事务,重点!不写的话不会提交到数据库
session.close();
}
/**
* 根据ID修改用户的信息
* @param user
* @return
*/
@Update("update user set name=#{name},pwd=#{pwd} where id = #{id}")
int updateUser(User user);
@Test
public void testUpdateUser() {
SqlSession session = MybatisUtils.getSession();
UserMapper mapper = session.getMapper(UserMapper.class);
User user = new User(5, "愷龍test", "kailong");
mapper.updateUser(user);
session.close();
}
/**
* 根据Id删除用户
* @param id
* @return
*/
@Delete("delete from user where id = #{id}")
int deleteUser(@Param("id")int id);
@Test
public void testDeleteUser() {
SqlSession session = MybatisUtils.getSession();
UserMapper mapper = session.getMapper(UserMapper.class);
mapper.deleteUser(5);
session.close();
}
注意:增删改一定记得对事务的处理!
@Param注解用于给方法参数起一个名字。以下是总结的使用原则:
#{} 的作用主要是替换预编译语句(PrepareStatement)中的占位符? 【推荐使用】
INSERT INTO user (name) VALUES (#{name});
INSERT INTO user (name) VALUES (?);
${} 的作用是直接进行字符串替换
INSERT INTO user (name) VALUES ('${name}');
INSERT INTO user (name) VALUES ('kailong');
使用注解和配置文件协同开发,才是MyBatis的最佳实践!
公众号本文地址:https://mp.weixin.qq.com/s/YsZgx7VtB18PsJkUgn7Ntg 欢迎关注公众号:愚生浅末。