Mybatis学习笔记-CRUD

namespace

namesapce中的包名需与Dao/Mapper接口的包名一致

SELCET

选择,查询语句

  • id:对应namespace中的方法;
  • resultType:Sql语句执行的返回值(Class);
  • parameterType:参数类型;

INSERT&UPDATE&DELETE

编写步骤

  1. 编写接口
    // 根据ID查询用户
    User getUserById(int id);

    // Insert User
    int addUser(User user);

    // Delete User By ID
    int delUser(int id);

    // Update User
    int updateUser(User user);
  1. 编写mapper中的sql语句
    <!--根据ID查询用户-->
    <select id="getUserById" parameterType="int" resultType="cn.iris.pojo.User">
        SELECT * FROM user WHERE id = #{id}
    </select>

    <!--添加用户
        对象中的属性可直接取出()无需调用方法-->
    <insert id="addUser" parameterType="cn.iris.pojo.User">
        INSERT INTO user(id, name, pwd) VALUES (#{id},#{name},#{pwd})
    </insert>

    <!--根据ID删除用户-->
    <delete id="delUser" parameterType="int">
        DELETE FROM user WHERE id=#{id}
    </delete>

    <!--根据ID更新用户信息-->
    <update id="updateUser" parameterType="cn.iris.pojo.User">
        UPDATE user SET name=#{name},pwd=#{pwd} WHERE id=#{id}
    </update>
  1. 测试
    @Test
    public void getUserByIdTest() {
        SqlSession sqlSession = MybatisUtils.getSqlSession();

        UserMapper mapper = sqlSession.getMapper(UserMapper.class);

        User user = mapper.getUserById(1);
        System.out.println(user);

        sqlSession.close();
    }
    @Test
    public void addUserTest(){略}
    @Test
    public void updateUserTest(){略}
    @Test
    public void deleteUserTest(){略}

所有增删改操作均需要提交事务(sqlsession.commit)!!!

排错指南

  • namespace 包名用'.'
<!--绑定对应的Dao/Mapper接口-->
<mapper namespace="cn.iris.dao.UserMapper">
  • Mybatis配置文件
    <mappers>
        <mapper resource="cn/iris/dao/userMapper.xml"/>
    </mappers>

模糊查询

  • Java代码执行时带上通配符(xml中#{}识别为变量,防止sql注入)
List<User> userList = mapper.getUserListLike("%艾%");
  • sql拼接中加入通配符
SELECT * FROM user WHERE name like "%"+#{value}+"%";
posted @ 2021-08-04 15:59  菜鸢爱敲bug  阅读(63)  评论(0编辑  收藏  举报