Mybatis CRUD

第一步:在Dao中编写接口类

在这里插入图片描述

public interface UserMapper {
    
    
    //查询全部用户
    List<User> getUsers();
    //根据ID查询用户
    User getUserById(int id);
    //插入一个用户
    int addUser(User user);
    //修改用户
    int updataUser(User user);
    //删除用户
    int deleteUser(int id);
}

第二步:在Mapper中绑定接口,并且实现

在这里插入图片描述

<?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绑定一个对应Dao/Mapper的接口-->
<mapper namespace="com.LinXiaoDe.dao.UserMapper">
    <!--    查询全部用户-->
    <select id="getUsers" resultType="com.LinXiaoDe.pojo.User">
    select * from mybatis_db.user_t
    </select>
    <!--根据ID查询用户-->
    <select id="getUserById" parameterType="int" resultType="com.LinXiaoDe.pojo.User">
        select * from mybatis_db.user_t where id=#{id}
    </select>
    <!--插入一个用户-->
    <insert id="addUser" parameterType="com.LinXiaoDe.pojo.User">
        insert into mybatis_db.user_t (id,userName,password) value (#{id},#{userName},#{password})
    </insert>
    <!--修改用户-->
    <update id="updataUser" parameterType="com.LinXiaoDe.pojo.User">
        update mybatis_db.user_t set id=#{id},userName=#{userName},password=#{password} where id=#{id}
    </update>
    <!--删除用户-->
    <delete id="deleteUser" parameterType="int">
        delete from mybatis_db.user_t where id=#{id}
    </delete>
</mapper>

第三步:在JUnity中调用接口,并且提交事务

  • 注意一定要进行事务提交,否则不会生效
public class test {
    
    
    @Test
    public void test1(){
    
    
        SqlSession sqlSession = null;
        try{
    
    
            //第一步,从工具类中获取sqlSession对象
            sqlSession=MyBatisUtil.getSqlSession();
            //第二步,执行SQL
            UserMapper mapper= sqlSession.getMapper(UserMapper.class);
            List<User> users= mapper.getUsers();
            //第三步遍历
            for (User user:users){
    
    
                System.out.println(user);
            }
        }catch (Exception e){
    
    
            e.printStackTrace();
        }finally {
    
    
            //关闭sqlSession
            sqlSession.close();
        }
    }
    @Test
    public void test2(){
    
    
        SqlSession sqlSession=MyBatisUtil.getSqlSession();
        UserMapper mapper= sqlSession.getMapper(UserMapper.class);

        mapper.addUser(new User(4,"EE","E1243"));

        sqlSession.commit();//注意一定要进行事务提交,否则不会生效
        sqlSession.close();
    }
}

万能的Map

在实际项目中,数据库一条数据的属性值可能非常非常的多,但是CRUD操作如果只修改一条信息的某一个属性,如果仍然用上面的方法就会十分繁杂。比如说修改数据,每次要传入一个User对象,这个对象的属性很多,如果全部构造的话将会花费大量精力,这个时候可以考虑使用下面提到的Map方法:

(1)mapper接口

//userMapper.java
public interface UserMapper {
    
    
    int addUser(User user);
    //修改用户
    int updataUser(User user);
    //map方法修改用户
    int updataUserMap(Map<String,Object>map);
}

(2)mapper中

<!--修改用户-->
<update id="updataUser" parameterType="com.LinXiaoDe.pojo.User">
    update mybatis_db.user_t set id=#{
    
    id},userName=#{
    
    userName},password=#{
    
    password} where id=#{
    
    id}
</update>

这里#{
    
    }中的属性名可以不和数据库中的一致,只需要用map<key,value>对应即可
<!--修改用户map-->
<insert id="updataUserMap" parameterType="map">
    update mybatis_db.user_t set userName=#{
    
    name},password=#{
    
    pwd} where id=#{
    
    userId}

(3)测试

@Test
public void updataUserMap()
{
    
    
    SqlSession sqlSession = MyBatisUtil.getSqlSession();
    UserMapper mapper = sqlSession.getMapper(UserMapper.class);
    Map<String,Object> map=new HashMap<String, Object>();
    map.put("userId",5);
    map.put("name","map");
    map.put("pwd","000000");
    mapper.updataUserMap(map);
    sqlSession.commit();
}

在这里插入图片描述

模糊查询

  • 模糊查询根据value值进行查询,在sql语句中用like关键字
  • 注意查询的关键字要用#{%value%}通配符进行拼接
  • 注意写死输入字符串以防止sql注入

(1)mapper接口

    //模糊查询
    List<User> getUserLike(String value);

(2)mapper.xml

    <select id="getUserLike" parameterType="String" resultType="com.LinXiaoDe.pojo.User">
        select * from mybatis_db.user_t where userName like #{
    
    value}
    </select>

(3)测试

 @Test
 public void getUserLike(){
    
    
     SqlSession sqlSession = MyBatisUtil.getSqlSession();
     UserMapper mapper = sqlSession.getMapper(UserMapper.class);
     List<User> users = mapper.getUserLike("%抑%");
     for (User user:users){
    
    
         System.out.println(user);
     }
     sqlSession.commit();
     sqlSession.close();
 }

在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/weixin_44307065/article/details/108024997