Mybatis-03 CRUD

3、 CRUD

3.1 namespace

namespace中的包名和mapper/Dao接口的报名要一致

3.2 select

选择、查询语句

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

3.3 Insert(一定要提交事务!)

  1. 编写接口:UserDao.java 中
    //增加一个用户
    int addUser(User user);
  1. 编写Mapper: UserMapper.xml中配置
<!--    对象中的属性可以直接取出来-->
    <insert id="addUser" parameterType="com.ex.pojo.User" >
        insert into mybatis.user (id,name,pwd) value (#{id},#{name},#{pwd});
    </insert>

  1. 测试

有一个注意点:一定要提交事务!否则,虽然执行成功,但在数据库中没有修改!

 public void addUser(){
        SqlSession sqlSession = MybatisUtils.getSqlSession();
        UserDao mapper = sqlSession.getMapper(UserDao.class);
        mapper.addUser(new User(3, "哈哈", "12345"));
       
        //提交事务
        sqlSession.commit();
        
        sqlSession.close();
    }

3.4 Update(一定要提交事务!)

 <update id="update" parameterType="com.ex.pojo.User">
        update mybatis.user set name=#{name},pwd=#{pwd} where id=#{id};
    </update>

3.5 Delete(一定要提交事务!)

 <delete id="deleteUser" parameterType="int">
        delete from mybatis.user where id=#{id}
    </delete>

3.6 分析错误

  1. UserMapper.xml 中这里的namespace一定是用 ‘.’
    请添加图片描述

  2. mybatis-config.xml 中Resources中绑定路径用‘/’

请添加图片描述

  1. mybatis-config.xml 中程序配置文件一定要符合规范

3.7 万能Map

//万能的Map
    int addUser2(Map<String,Object> map);

  <insert id="addUser2" parameterType="map">
        insert into mybatis.user (id,name,pwd) value (#{aa},#{bb},#{cc})
    </insert>
 public void testAdd2(){
        SqlSession sqlSession = MybatisUtils.getSqlSession();
        UserDao mapper = sqlSession.getMapper(UserDao.class);
        Map<String, Object> map = new HashMap<String,Object>();
        map.put("aa",3);
        map.put("bb","哈哈");
        map.put("cc","12345");
        mapper.addUser2(map);
        sqlSession.commit();
        sqlSession.close();
    }
  • Map传递参数,直接在sql中取出key即可 parameterType="map"

  • 对象传递参数,直接在sql中取对象的属性即可 parameterType="Object"

  • 只有一个基本类型参数的情况下,可以直接在sql中取到 parameterType="int" 参数还可以不写

  • 多个参数用Map,或者注解

3.8 模糊查询

 List<User> getUserLike(String value);
  <select id="getUserLike" resultType="com.ex.pojo.User">
        select * from mybatis.user where name like #{value}
    </select>
 public void testLike(){
        SqlSession sqlSession = MybatisUtils.getSqlSession();
        UserDao mapper = sqlSession.getMapper(UserDao.class);
//        这里要用通配符
        List<User> users = mapper.getUserLike("%周%");
        for (User user : users) {
            System.out.println(user);
        }
        sqlSession.close();

    }
  1. Java代码执行时写上通配符

     public void testLike(){
            SqlSession sqlSession = MybatisUtils.getSqlSession();
            UserDao mapper = sqlSession.getMapper(UserDao.class);
    //        这里要用通配符
            List<User> users = mapper.getUserLike("%周%");
            for (User user : users) {
                System.out.println(user);
            }
            sqlSession.close();
    
        }
    
  2. 在sql中拼接

    select * from mybatis.user where name like "%"#{value}"%"
    
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值