和我一起迎接明天的太阳吧

klaus08

焦虑源于行动的匮乏

MyBatis的CRUD

namespace

UserMapper.xml 中的 namespace的包名要和接口中的包名一致,指向 UserMapper 接口。

<?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="com.klaus.dao.UserMapper">

    <select id="getUser" resultType="com.klaus.pojo.User">
        select * from mybatis.user;
    </select>


</mapper>

select

查询语句。

  • id:对应 namespace 中的方法名
  • resultType:Sql 语句执行的返回值类型
  • parameterType:参数类型
    需要使用传入的参数时,使用 #{parameter} 代替,parameter 和前面 UserMapper 接口中传入的参数名一致。
package com.klaus.dao;

import com.klaus.pojo.User;

public interface UserMapper {
//    根据 id 查询用户
    User getUserById(int id);
}
<select id="getUserById" resultType="com.klaus.pojo.User" parameterType="int">
    <!-- #{id}这个id和前面 UserMapper 接口中的 参数名 保持一致-->
    select * from mybatis.user where id = #{id};
</select>

Insert

插入语句.

package com.klaus.dao;

import com.klaus.pojo.User;

public interface UserMapper {
//    增加用户
    int addUser(User user);
}
<!-- 对象中的属性可以直接取出来 -->
<insert id="addUser" parameterType="com.klaus.pojo.User">
    insert into mybatis.user (id, name, pwd)
    values (#{id}, #{name}, #{pwd})
</insert>

delete

删除语句。

<delete id="deleteUser" parameterType="int">
    delete
    from mybatis.user
    where id = #{id};
</delete>
package com.klaus.dao;

import com.klaus.pojo.User;

public interface UserMapper {
//    删除用户
    int deleteUser(int id);
}

update

更新语句。

<update id="updateUser" parameterType="com.klaus.pojo.User">
    update mybatis.user
    set name = #{name},
        pwd=#{pwd}
    where id = #{id};
</update>
package com.klaus.dao;
import com.klaus.pojo.User;
public interface UserMapper {
//    修改用户
    int updateUser(User user);
}

过程

  1. 编写接口函数

  2. 编写对应 mapper.xml 中的 sql 语句

  3. 测试

    3.1 测试时, 增删改需要提交事务

使用Map

使用Map添加用户,可以不把对象的所有信息都填进去。在更新信息时,如果只更新一项,没必要创建一个全新的pojo对象赋值。

相较于对象传参:

Map 传参,直接在 sql 中取出 key 即可;

对象传参,直接在 sql 中取出属性即可。

package com.klaus.dao;
import com.klaus.pojo.User;
public interface UserMapper {
//    通过 Map 传参,增加用户
    int addUserByMap(Map<String, Object> map);
}
<insert id="addUserByMap" parameterType="map">
    insert into mybatis.user (name)
    values (#{userName});
</insert>
@Test
public void testUpdateUser(){
    SqlSession sqlSession = MyBatisUtils.getSqlSession();
    UserMapper mapper = sqlSession.getMapper(UserMapper.class);
    mapper.updateUser(new User(4, "klaus02", "123459"));
//        增删改需要提交事务    
    sqlSession.commit();    
    sqlSession.close();
}

模糊查询

package com.klaus.dao;
import com.klaus.pojo.User;
public interface UserMapper {
//    模糊查询
    List<User> getUserList(String value);
}
<select id="getUserList" resultType="com.klaus.pojo.User">
    select *    
    from mybatis.user    
    where name like "%"#{value}"%";
</select>

posted @ 2021-07-25 15:23  klaus08  阅读(26)  评论(0编辑  收藏  举报