Mybatis的CRUD操作

Mybatis的CRUD操作

实现查询操作:

使用的标签:select标签

标签常用的属性

  • id:对应namespace的中的方法名
  • resultType:sql语句执行的返回值
  • parameterType:方法中的参数类型

问题:如果涉及到到多个参数传递呢??解决方法:通过传入的参数装进map集合  或者   使用注解的方法。 这里就只说明用map集合的方法。

解释:map集合的键使用String类型,对应与sql语句配置文件中的 如  #{id}  这个对应 ,即 map的键写成id即可,而值就是对应需要查找的类型。

 <!--根据指定id和username获取数据-->
    <select id="getUser3" resultType="com.domain.User" parameterType="hashmap">
    select * from mybatis.user where  username = #{username} and id = #{id}
  </select>

其UserDao的抽象方法(方法名对应配置文件的select标签的id属性)

//根据指定id,和用户名查找
    User getUser1(HashMap<String ,Object> hashMap);

测试类:

 @Test
    public void getUserTest(){
        SqlSession sqlSession = MybatisUtils.getSqlSession();

        UserDao userDaoImpl = sqlSession.getMapper(UserDao.class);

        HashMap<String, Object> hashMap = new HashMap<String, Object>();
        hashMap.put("username","张三");
        hashMap.put("id",1);

        User user = userDaoImpl.getUser1(hashMap);
        System.out.println(user);
        //User{id=1, username='张三', password='123456'}

        sqlSession.close();
    }

尝试一下模糊查询:如使用 like

 <!--模糊查询获取数据-->
    <select id="getUser2" resultType="com.domain.User" parameterType="hashmap">
    select * from mybatis.user where  username like #{username}
  </select>

    //模糊查询
    User getUser2(HashMap<String ,Object> hashMap);
 //模糊查询
    @Test
    public void getUser2Test(){
        SqlSession sqlSession = MybatisUtils.getSqlSession();

        UserDao userDaoImpl = sqlSession.getMapper(UserDao.class);

        HashMap<String, Object> hashMap = new HashMap<String, Object>();
        hashMap.put("username","%李%");

        User user = userDaoImpl.getUser2(hashMap);

        System.out.println(user);

        sqlSession.close();
    }

注意:不在配置文件中加入%%这个通配符,不然会易造成sql注入问题

增数据:

//向数据库插入数据
    void insertUser(User user);
   <!--插入数据-->
    <insert id="insertUser"  parameterType="com.domain.User">
    insert into mybatis.user (id,username,password) values (#{id},#{username},#{password}) ;
  </insert>
 @Test
    public void insertUserTest(){
        SqlSession sqlSession = MybatisUtils.getSqlSession();

        UserDao userDaoImpl = sqlSession.getMapper(UserDao.class);

        User user = new User(5, "王五", "234232");

        userDaoImpl.insertUser(user);

        //一定要记得增删改需要提交事务
        sqlSession.commit();

        sqlSession.close();
    }

注意:增删改记得提交事务,不然是不能操作数据库成功的。

删数据:

 //根据id删除数据
    void deleteUser(int id);
 <!--删除数据-->
    <delete id="deleteUser"  parameterType="int" >
    delete from mybatis.user where id = #{id}
  </delete>
//删除数据
    @Test
    public void deleteUserTest(){
        SqlSession sqlSession = MybatisUtils.getSqlSession();

        UserDao userDaoImpl = sqlSession.getMapper(UserDao.class);

        userDaoImpl.deleteUser(4);

        //一定要记得增删改需要提交事务
        sqlSession.commit();

        sqlSession.close();
    }

改数据:

//改动数据
    void updateUser(Map<String,Object> map);
<!--修改数据-->
    <update id="updateUser"  parameterType="map" >
    update mybatis.user set username = #{username} where id = #{id}
  </update>
//更改数据
    @Test
    public void updateUserTest(){
        SqlSession sqlSession = MybatisUtils.getSqlSession();

        UserDao userDaoImpl = sqlSession.getMapper(UserDao.class);


        Map<String, Object> map = new HashMap<String, Object>();

        map.put("username" ,"赵六");
        map.put("id",5);

        userDaoImpl.updateUser(map);

        //一定要记得增删改需要提交事务
        sqlSession.commit();

        sqlSession.close();
    }

还是注意:增删改操作需要提交事务

发布了55 篇原创文章 · 获赞 4 · 访问量 1056

猜你喜欢

转载自blog.csdn.net/weixin_45062761/article/details/105386608