使用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();
}
posted @ 2021-01-18 22:34  xxgbl  阅读(120)  评论(0)    收藏  举报