使用Mybatis实现CRUD
使用Mybatis实现CRUD
dao层接口
public interface UserMapper {
//增
public int addUser(User user);
//删
public int deleteUserById(@Param("id") int id);
//改
public int updateUser(User user);
//查
public List<User> queryAllUser();
}
实现类
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<!--
namespace: 表明你要实现的是UserMapper这个接口。
-->
<mapper namespace="cn.gbl.dao.UserMapper">
<!--
id:表明你要实现queryAllUser这个方法。
parameterType: 参数类型。
resultType: 返回值类型。
-->
<!--增 -->
<insert id="addUser" parameterType="cn.gbl.pojo.User">
insert into mybatis.user(id, name, password) VALUES (#{id},#{name},#{password});
</insert>
<!--删 -->
<delete id="deleteUserById" parameterType="int">
delete from user where id = #{id}
</delete>
<!--改 -->
<update id="updateUser" parameterType="cn.gbl.pojo.User">
update mybatis.user set name = #{name},password = #{password} where id = #{id};
</update>
<!--查 -->
<select id="queryAllUser" resultType="cn.gbl.pojo.User">
select * from user;
</select>
</mapper>
注意:增删改需要事务支持。通过SqlSessionFactory获取SqlSession时,sqlSessionFactory.openSession(true);可以设置自动提交事务。
万能Map
看上面的修改操作:
public int updateUser(User user);
<!--改 -->
<update id="updateUser" parameterType="cn.gbl.pojo.User">
update mybatis.user set name = #{name},password = #{password} where id = #{id};
</update>
@Test
public void updateUser(){
SqlSession sqlSession = MybatisUtils.getSqlSession();
UserMapper mapper = sqlSession.getMapper(UserMapper.class);
int i = mapper.updateUser(new User(4, "赵钱", "1234"));
if(i>0){
System.out.println("修改成功!");
}
//关闭资源
sqlSession.close();
}
传入的是一个User对象,假设这个对象有一百个字段,难道要写一百个字段才能实现修改吗?现在我只想通过id值修改name值该怎么实现呢?
看如下操作:
public int updateUserById(Map<Object,Object> map);
<!--传入一个map -->
<update id="updateUser" parameterType="map">
update mybatis.user set name = #{name} where id = #{id};
</update>
@Test
public void updateUserById(){
SqlSession sqlSession = MybatisUtils.getSqlSession();
UserMapper mapper = sqlSession.getMapper(UserMapper.class);
Map<Object, Object> map = new HashMap<>();
map.put("name","44");
map.put("id",4);
int i = mapper.updateUserById(map);
if(i>0){
System.out.println("修改成功!");
}
//关闭资源
sqlSession.close();
}
通过万能map就可以实现想修改那个字段就修改那个字段。主要应用于要传递多个参数的情况下。
使用Mybatis实现模糊查询
//传入模糊查询条件
public List<User> queryAllUserLike(String value);
<select id="queryAllUserLike" parameterType="String" resultType="cn.gbl.pojo.User">
select * from user where name like #{value};
</select>
@Test
public void queryAllUserLike(){
SqlSession sqlSession = MybatisUtils.getSqlSession();
UserMapper mapper = sqlSession.getMapper(UserMapper.class);
List<User> users = mapper.queryAllUserLike("%张%");
for (User user : users) {
System.out.println(user);
}
//关闭资源
sqlSession.close();
}

浙公网安备 33010602011771号