SSM学习笔记——Mybatis(二)

2、增删改查

增删改查,pom文件,工具类,实体类,核心配置文件都不用改,只需依次修改Mapper接口、接口的xml文件、测试类即可

编写xml文件的时候,需要在同一个下编写,不能存在多个mapper

1、查 —— select

首先,先修改mapper(dao)接口

package com.fu.dao;
import com.fu.pojo.User;
import java.util.List;
public interface UserDao {
    User select(int id); //查找的时候,返回的结果是一个用户,方法名为select,参数是id,就是根据id来查询
}

然后,修改接口的xml文件

<mapper namespace="com.fu.dao.UserDao">
    <select id="select" resultType="com.fu.pojo.User" parameterType="int">//id为方法名,resultType为返回值类型,parameterType为参数类型
       select * from user where id = #{id};  <!--#{}相当于一个占位符,来接受输入的参数-->
    </select>
</mapper>

最后修改测试类

public void test(){
    SqlSession sqlSession = mybatisUtils.getSession();// 第一步:获取sqlsession对象(死的)
    //执行sql
    UserDao userDao = sqlSession.getMapper(UserDao.class);
    User user = userDao.select(2); //方法名修改正确,参数填写需要查询的参数
    System.out.println(user);
    sqlSession.close();//关闭sqlsession (死的)
}
2、增 —— insert

首先,修改mapper接口

package com.fu.dao;
import com.fu.pojo.User;
import java.util.List;
public interface UserDao {
    int insert(User user);  //因为不需要返回值,所以它的类型为int,插入的是一条对象信息,所以他的参数是对象
}

然后,修改xml配置文件,

<insert id="insert" parameterType="com.fu.pojo.User">
       insert into blog.user(id,name,age) value (#{id},#{name},#{age});
    </insert>
</mapper>

最后修改测试类

@Test
public void insertTest(){
    SqlSession sqlSession = mybatisUtils.getSession();
    UserDao userDao = sqlSession.getMapper(UserDao.class);
    userDao.insert(new User(6,"嘿嘿嘿",123));
    sqlSession.commit();
    sqlSession.close();
}
3、改 —— update

首先,修改mapper接口,创建修改方法

package com.fu.dao;
import com.fu.pojo.User;
import java.util.List;
public interface UserDao {
    int updateUser(User user);
}

然后,修改xml配置文件

<mapper namespace="com.fu.dao.UserDao">
    <update id="updateUser" parameterType="com.fu.pojo.User">
        update blog.user set name = #{name}, age = #{age}   where id = #{id} ;
    </update>
</mapper>

最后修改测试类

@Test
public void UpdateTest(){
    SqlSession sqlSession = mybatisUtils.getSession();
    UserDao userDao = sqlSession.getMapper(UserDao.class);
    userDao.updateUser(new User(7,"666",000));
    sqlSession.commit();
    sqlSession.close();
}
4、删 —— delete

首先,修改mapper接口,创建修改方法

package com.fu.dao;
import com.fu.pojo.User;
import java.util.List;
public interface UserDao {
    int deleteUser(int id);
}

然后,修改xml配置文件

<delete id="deleteUser">
    delete from blog.user where id = #{id};
</delete>

最后修改测试类

@Test
public void deleteTest(){
    SqlSession sqlSession = mybatisUtils.getSession();
    UserDao userDao = sqlSession.getMapper(UserDao.class);
    userDao.deleteUser(1);
    sqlSession.commit();
    sqlSession.close();
}
5、错误排查

①、namespace要用.不能用/

②、标签别错了

③、resource用/不能用.

6、map作为参数

如果数据库中的字段过多,可以尝试用map来接收

首先,修改接口

package com.fu.dao;
import com.fu.pojo.User;
import java.util.List;
import java.util.Map;
public interface UserDao {
    int insertMap(Map<String,Object> map);  //参数传入一个key为String类型,value为Object(任意)类型的map
}

然后,修改xml配置文件,绑定接口

<insert id="insertMap" parameterType="map">
    insert into blog.user(id,name,age) value (#{UserId},#{UserName},#{UserAge});<!--这里的value对应的是map的key值-->
</insert>

最后修改测试类

    public void insertMapTest(){
        SqlSession sqlSession = mybatisUtils.getSession();
        UserDao userDao = sqlSession.getMapper(UserDao.class);
        Map<String,Object> map = new HashMap<String, Object>();//因为传入的是map,所以需要创建一个map对象
        map.put("UserId",1);              //然后对应的传入map的key-value对
        map.put("UserName","我是第一");
        map.put("UserAge",18);
        userDao.insertMap(map); //传入map
        sqlSession.commit();
        sqlSession.close();
    }
}
7、模糊查询

注意sql注入的问题

首先,先写接口

package com.fu.dao;
import com.fu.pojo.User;
import java.util.List;
import java.util.Map;
public interface UserDao {
    List<User> getUserLike(String name); //按照name模糊查询
}

然后,修改xml文件

    <select id="getUserLike" resultType="com.fu.pojo.User">  <!--与普通查询一样-->
        select * from blog.user where name like #{value}  <!--value就是模糊查询的值-->
    </select>

最后,写测试类

@Test
public void selectLikeTest() {
    SqlSession sqlSession = mybatisUtils.getSession();
    UserDao userDao = sqlSession.getMapper(UserDao.class);
    List<User> list = userDao.getUserLike("%张%"); //占用位置的通配符用% ,模糊查询有很多结果,用list输出
    for(User user : list){
        System.out.println(user);
    }
    sqlSession.close();
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值