mybatis第二天——大纲待更新

  大纲摘要:

    1、输入映射和输出映射

      a) 输入参数映射

      b) 返回值映射

    2、动态sql

      a) If

      b) Where

      c) Foreach

      d) Sql片段

    3、关联查询

      a) 一对一关联

      b) 一对多关联

    4、Mybatis整合spring

一、输入映射和输出映射

  1.输入映射

  也就是day01提到的入参

  传递简单类型:见day01,这里不再赘述

  传递POJO包装类型:

      开发中通过pojo传递查询条件 ,查询条件是综合的查询条件,

      不仅包括用户查询条件还包括其它的查询条件(比如将用户购买商品信息也作为查询条件),

      这时可以使用包装对象传递输入参数。即Pojo类中包含pojo。

  创建POJO包装类QueryVo:

package cn.pojo;

/**
 * view object 视图层对象,用来做一些查询等,拓展性较好
 * @author jiangbei01
 *
 */
public class QueryVo {

    private User user;

    public User getUser() {
        return user;
    }

    public void setUser(User user) {
        this.user = user;
    }

}

   mapper文件入参设置SQL:

<!-- 测试入参的SQL -->
    <select id="findUserByVo" parameterType="cn.pojo.QueryVo" resultType="cn.pojo.User">
        SELECT * FROM user where username like ‘%${user.username}%‘ AND sex=#{user.sex}
    </select>

  接口中增加查询方法

public interface UserMapper {

    User findById(Integer id);
    //返回值是list集合时,mybatis会自动调用selectList()方法
    List<User> findByName(String username);
    void insertUser(User user);
    List<User> findUserByVo(QueryVo vo);
}

  测试函数:

@Test
    public void findUserByVo() throws Exception{
        SqlSession session = factory.openSession();
        //通过getMapper()方法实例化实现类
        UserMapper mapper = session.getMapper(UserMapper.class);
        //创建vo对象
        QueryVo vo = new QueryVo();
        //创建vo的属性user
        User user = new User();
        user.setUsername("宋江");
        user.setSex("2");
        user.setBirthday(new Date());
        user.setAddress("北京");
        vo.setUser(user);
        List<User> list = mapper.findUserByVo(vo);
        System.out.println(list);

    }
时间: 2024-10-17 15:07:16

mybatis第二天——大纲待更新的相关文章

maven第二天——大纲待更新

一.在eclipse中建立工程 在day01中我们搭建了eclipse的maven环境,接下来我们开始建立maven项目 1.在eclipse中建立JAVA工程 file->new->maven project,勾选 create a simple project->next 在上述对话框中填入坐标信息和打包方式(这里选择jar),将以下信息填入,建立工程 groupId:com.atguigu.maven ArtifactId:MakeFriends Package:com.atgui

Ajax第二天——大纲待更新

JQuery中的Ajax  jQuery 对 Ajax 操作进行了封装, 在 jQuery 中最底层的方法是 $.ajax(), 第二层是 load(), $.get() 和 $.post(), (常用) 第三层是 $.getScript() 和 $.getJSON() 更详尽的介绍请参见API 什么是回调函数: 这里先引用知乎网友对回调的生动形容,后续概念不再赘述回调函数概念 你到一个商店买东西,刚好你要的东西没有货,于是你在店员那里留下了你的电话, 过了几天店里有货了,店员就打了你的电话,然

mybatis学习之路----批量更新数据两种方法效率对比

原文:https://blog.csdn.net/xu1916659422/article/details/77971696/ 上节探讨了批量新增数据,这节探讨批量更新数据两种写法的效率问题. 实现方式有两种, 一种用for循环通过循环传过来的参数集合,循环出N条sql, 另一种 用mysql的case when 条件判断变相的进行批量更新 下面进行实现. 注意第一种方法要想成功,需要在db链接url后面带一个参数  &allowMultiQueries=true 即:  jdbc:mysql:

mybatis第二天

Mybatis第二天   框架课程 1. 课程计划 1.输入映射和输出映射 a) 输入参数映射 b) 返回值映射 2.动态Sql a) If标签 b) Where标签 c) Sql片段 d) Foreach标签 3.关联对象映射 a) Association(关联单个对象,即一对一) b) Collection(关联集合,即一对多) 4.Mybatis整合Spring a) 如何整合Spring b) 使用原始的方式开发Dao c) 使用Mapper动态代理方式开发Dao 5.Mybatis逆向

mybatis的一种批量更新方法【我】

接手一个项目,项目主要架构用的 servlet 3.0 + spring + mybatis 其中发现一个问题: 操作数据时,批量插入可以,批量更新,使用各种写法都无法成功,直接报 mybatis转换异常等等,最后解决方法是所有批量更新都用如下写法: userXML.xml文件 userXML.xml文件 <!-- 更新user表 --> <insert id="updateUser" parameterType="java.util.List"&

线段树第二弹(区间更新)

上篇文章,我们介绍了线段树的基本概念和单点更新.区间查询,今天,我们来接着上次的线段树问题继续深入研究.在解决线段树问题的过程中,我们会遇到要求修改区间中某一元素值的问题,当然也可能会遇到要求修改一段子区间所有值的问题--即区间更新问题.回忆一下上篇文章单点更新的方法是,由叶节点逐级向上进行更新,此时更新一个节点值的时间复杂度为o(log n),(点击链接了解详情:线段树+RMQ问题第二弹),那么以这样的处理效率来进行区间更新结果会怎样?现在假设待更新区间数据的规模为 n ,那么就需要进行 n

MyBatis动态批量插入、更新Mysql数据库的通用实现方案

一.业务背景 由于需要从A数据库提取大量数据同步到B系统,采用了tomikos+jta进行分布式事务管理,先将系统数据源切换到数据提供方,将需要同步的数据查询出来,然后再将系统数据源切换到数据接收方,进行批量的插入和更新操作, 关于数据源的切换可以参考之前的文章<spring+springMVC+Mybatis架构下采用AbstractRoutingDataSource.atomikos.JTA实现多数据源灵活切换以及分布式事务管理> 二.批量插入的具体实现 1.查询需要同步的数据: @Aut

2500-使用MyBatis操作MySQL进行批量更新的注意事项

原则上一条SQL只更新一条数据库操作,但有时需要批量操作数据,特别是一些DML语句,在操作数据库时,数据库会报出异常,不允许混合语句,此时需要额外配置进行兼容. 例如: Caused by: com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server ve

关于整合spring+mybatis 第二种方式

和第一种方式一样的步骤,不过bean.xml中有些许差异 <!-- 配置sqlSessionFactory --> <bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean"> <property name="dataSource" ref="dataSource"></property&g