【第三阶段 day13】Mybatis基本操作 简化mybatis配置

1.Mybatis基本操作

1.1 查询

1.1.1查询demo_user表中ID=1的数据
  • UserMapper接口中的操作
//根据ID查询数据
    public User findUserById(Integer id);
  • UserMapper.xml中的操作
<!--
        根据id查询数据
        取值操作:#{id}  id代表的是参数名称
    -->
    <select id="findUserById" resultType="com.jt.pojo.User">
        select * from demo_user where id=#{id};
    </select>
  • 测试

在这里插入图片描述

@Test
    public void testUser() {
        int id=1;
        SqlSession sqlSession = sqlSessionFactory.openSession();
        UserMapper userMapper = sqlSession.getMapper(UserMapper.class);
        User user = userMapper.findUserById(id);
        System.out.println(user);
        sqlSession.close();

1.2 新增

1.2.1 查询demo_user表中ID=1的数据
  • UserMapper接口中的操作

在这里插入图片描述

//根据user对象实现新增操作
    public Integer saveUser(User user);
  • UserMapper.xml中的操作

在这里插入图片描述

    <!--
    实现用户的新增
        1.归于对象参数传递说明:
        2.mybatis取值语法:#{id}
        3.用户在执行"更新"操作时,自动返回影响的行数
    -->
    <insert id="saveUser">
        insert into demo_user(id,name,age,sex)
        VALUES (null,#{name },#{age},#{sex});
    </insert>
  • 测试
    在这里插入图片描述
 /*mybatis在执行"更新"操作时,需要提交事务*/
    @Test
    public void testUserinsert() {
        User user=new User(null, "西王母", 30000, "女");
        SqlSession sqlSession = sqlSessionFactory.openSession();
        UserMapper userMapper = sqlSession.getMapper(UserMapper.class);
        Integer rows=userMapper.saveUser(user);
        System.out.println(rows);
        sqlSession.commit();//提交事务
        sqlSession.close();

    }

1.3 修改

1.3.1 将demo_user表中的嫦娥修改为嫦娥姐姐,年龄改为99
  • UserMapper接口中的操作
 //根据user对象实现修改操作
    Integer updateUser(User user);
  • UserMapper.xml中的操作
    <update id="updateUser">
        update demo_user set name=#{name},age=#{age}
        where id=#{id};
    </update>
  • 测试
    在这里插入图片描述
    /*mybatis在执行"更新"操作时,需要提交事务*/
    @Test
    public void testUserupdate() {
        User user=new User(232, "嫦娥姐姐", 99, "女");
        SqlSession sqlSession = sqlSessionFactory.openSession();
        UserMapper userMapper = sqlSession.getMapper(UserMapper.class);
        Integer rows=userMapper.updateUser(user);
        if(rows>0){
            sqlSession.commit();//提交事务
        }
        System.out.println("影响的行数为:"+rows);
        sqlSession.close();
    }

1.4 删除

1.4.1 将demo_user表中的嫦娥姐姐删除
  • UserMapper接口中的操作
Integer deleteUser(String user);
  • UserMapper.xml中的操作

在这里插入图片描述

    <delete id="deleteUser">
        delete from demo_user where name=#{name};
    </delete>
  • 测试

在这里插入图片描述

 /*mybatis在执行"更新"操作时,需要提交事务*/
    @Test
    public void testUserdelete() {
        String name="嫦娥姐姐";
        SqlSession sqlSession = sqlSessionFactory.openSession();
        UserMapper userMapper = sqlSession.getMapper(UserMapper.class);
        Integer rows=userMapper.deleteUser(name);
        if(rows>0){
            sqlSession.commit();//提交事务
        }
        System.out.println("影响的行数为:"+rows);
        sqlSession.close();
    }

1.5 利用Map集合封装数据

1.5.1 查询demo_user表中age>100和age<1000的数据
  • UserMapper接口中的操作
List<User> UserSelectAge(Map map);
  • UserMapper.xml中的操作
     <!--
        语法:UserSelectAge(Map map)
        取值:#{key}   根据key   获取value的数据
        关于转义的说明:
        xml文件中个别字母需要转义
            大于  >   &gt;
            小于  <   &lt;
            与号  & &amp;
            转移标签    <![CDATA[   需要转移的内容    ]]>
    -->
    <select id="UserSelectAge" resultType="com.jt.pojo.User">
        <!--select * from demo_user
                    where age>#{minage} and age &lt; #{maxage};  -->
        <![CDATA[
        select * from demo_user
        where age>#{minage} and age<#{maxage};
        ]]>
    </select>
  • 测试

在这里插入图片描述

/*mybatis在执行"更新"操作时,需要提交事务*/
    @Test
    public void testUserSelect1() {
        SqlSession sqlSession = sqlSessionFactory.openSession(true);
        UserMapper userMapper = sqlSession.getMapper(UserMapper.class);
        Map map=new HashMap();
        map.put("minage", 100);
        map.put("maxage",1000);
        List<User> user=userMapper.UserSelectAge(map);
        System.out.println(user);
        sqlSession.close();
    }

1.6 利用Param集合封装数据

  • 1.规则Mapper中的方法,不能重名
  • 2.关于mybatis参数封装的说明
    • 只支持单值传参
    • 单值可以使具体的数字,字符串,对象
    • 多值转化为单值
      a.首选Map集合
      b.@Param(“min”) int min 将参数封装为map
      解析:Map={minAge=100,maxAge=1000}
1.6.1 查询demo_user表中age>100和age<1000的数据
  • UserMapper接口中的操作
List<User> UserParamAge(@Param("min") int min,@Param("max") int max);
  • UserMapper.xml中的操作
<select id="UserParamAge" resultType="com.jt.pojo.User">
        select * from demo_user
            where age>#{min} and age &lt; #{max};
    </select>
  • 测试

在这里插入图片描述

 @Test
    public void testParam() {
        SqlSession sqlSession = sqlSessionFactory.openSession(true);
        UserMapper userMapper = sqlSession.getMapper(UserMapper.class);
        int min=100;
        int max=1000;
        List<User> userList=userMapper.UserParamAge(min,max);
        System.out.println(userList);
        sqlSession.close();
    }

1.7 模糊查询

1.7.1 查询name中包含"乔"的用户
  • UserMapper接口中的操作
List<User> userSelectMohu(String name);
  • UserMapper.xml中的操作
<select id="userSelectMohu" resultType="com.jt.pojo.User">
        select * from demo_user where name like "%"#{name}"%";
    </select>
  • 测试

在这里插入图片描述

    /* 查询name中包含"乔"的用户*/
    @Test
    public void testLike() {
        SqlSession sqlSession = sqlSessionFactory.openSession(true);
        UserMapper userMapper = sqlSession.getMapper(UserMapper.class);
        String name="乔";
        List<User> userList=userMapper.userSelectMohu(name);
        System.out.println(userList);
        sqlSession.close();
    }

2.简化mybatis配置

2.1 简化mapper中的resultType

在这里插入图片描述

  • 在mybatis-config.xml文件中进行配置(方法1:typeAlias)
  • mybatis-config.xml文件中有顺序
    typeAliases应该写在最前面

在这里插入图片描述

  • 在mybatis-config.xml文件中进行配置(方法2:package)

在这里插入图片描述

2.1 简化mapper中的sql

在这里插入图片描述

3.课堂总结

3.1 简化test方法:@BeforeEach

3.2 Mybatis常用CURD操作

  • 编辑接口
  • 编辑映射文件,接口与映射文件必须一一对应
  • insert/update/delete 自动返回影响行 / select必须有resultType

3.3 参数传递

  • 基本类型的数据1个
  • 可以将多个参数封装为POJO对象,不能有重名属性
  • 更加通用的是封装为Map集合 @Param(“key”)

3.4 xml中转义字符的写法

3.5 模糊查询xml的写法:"%"#{属性名}"%"

3.6 简化配置

  • 别名包
  • SQL标签
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值