Javaweb实践复习--MyBatis

增删改查操作

查询

查询所有数据

1、编写接口方法:Mapper接口------参数:无------结果:List

2、编写sql语句:SQL映射文件

一般情况下,若是用户实体类里面的变量名称数据库里面的变量名称不一致,是会显示出null,不会输出相关数据;
第一种方法------可以在UserMapper.xml文件里面,在sql语句里面起别名实现;
第二种方法------sql片段
第三种方法------resultMap:

在该标签里面,result用于一般字段的映射;而id用于主键字段的映射;
其中column存放的是数据库表里面的列名;而property存放的是实体类里面的变量名称;

3、执行方法:测试

查看详情

其中的#{}可以用来防止SQL注入问题表名或者列名不固定时,在参数传递时,#{}可以转换为?进行查询使用;

在进行查询时,也可以使用>作为查询条件,<的话,需要利用转义字符或者CDATA区进行转义:

条件查询

散装参数、对象参数、map集合参数

1、散装参数

2、对象参数:对象的属性名称要和参数占位符一致,才能够封装上值

输出即可

3、map集合参数

上面几种方法都能够实现查询

动态查询:上述方法存在一定的bug,我们有可能不会输入全部搜索框的内容,而上述方法若是有一个条件为null,会查不出来,故需要修改!

即需要实现sql语句的动态变化

主要使用到的标签:

使用动态条件查询时,主要有以下两种解决方法:

1、利用恒等式开始判断,后面的if标签里面的语句都加上and连接符

2、利用where标签进行判断,在标签里面加上三种if判断,且都加上and连接符(使用该方法居多)

选择多条件中的单个条件进行查询(动态条件查询)

存在某个条件,或者一个条件也没有时:

再进一步优化:

添加操作

//MyBatisDemo.java
//接收参数
        int num=6;
        int id=20214066;
        int age=89;
        String name="lili";


        //封装对象
        User user=new User();
        user.setNum(num);
        user.setId(id);
        user.setAge(age);
        user.setName(name);

        //1、加载MyBatis核心配置文件
        String resource = "mybatis-config.xml";
        InputStream inputStream = Resources.getResourceAsStream(resource);
        SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);

        //2、获取SqlSession对象,用它执行sql
        SqlSession sqlSession=sqlSessionFactory.openSession();

        //3、执行sql
        //List<User> user=sqlSession.selectList("test.selectAll");

        //获取UserMapper的代理对象
        UserMapper userMapper=sqlSession.getMapper(UserMapper.class);
        userMapper.add(user);

        //事务提交
        sqlSession.commit();


        sqlSession.close();

添加操作---主键返回

//返回添加数据的主键
<insert useGeneratedKeys="true" keyProperty="id">

修改操作

修改动态字段

使用set标签将if标签包裹起来,规避语法错误问题

删除操作

删除一个

删除多个

里面的#{num}的个数,由要删除的数据的条数决定;

注解开发

使用注解开发的话,那么UserMapper.xml就不用再写了,举例来说的话,就是这样的:

//直接在接口里面,使用注解,就省去了写.xml文件的繁琐
@Param("select * from student where id=#{id}")
User selectById(int id);

MyBatis的复习就先到这里啦!这次学起来容易了不少嘞!
下次再见!

posted @ 2022-10-25 21:39  yesyes1  阅读(26)  评论(0编辑  收藏  举报