增删改查操作

查询

查询所有数据

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的复习就先到这里啦!这次学起来容易了不少嘞!
下次再见!

原文地址:http://www.cnblogs.com/liuzijin/p/16825273.html

1. 本站所有资源来源于用户上传和网络,如有侵权请邮件联系站长! 2. 分享目的仅供大家学习和交流,请务用于商业用途! 3. 如果你也有好源码或者教程,可以到用户中心发布,分享有积分奖励和额外收入! 4. 本站提供的源码、模板、插件等等其他资源,都不包含技术服务请大家谅解! 5. 如有链接无法下载、失效或广告,请联系管理员处理! 6. 本站资源售价只是赞助,收取费用仅维持本站的日常运营所需! 7. 如遇到加密压缩包,默认解压密码为"gltf",如遇到无法解压的请联系管理员! 8. 因为资源和程序源码均为可复制品,所以不支持任何理由的退款兑现,请斟酌后支付下载 声明:如果标题没有注明"已测试"或者"测试可用"等字样的资源源码均未经过站长测试.特别注意没有标注的源码不保证任何可用性