本文主要内容:Mybatis中的动态SQL语句、单表查询、多表查询

Mybatis中的动态SQL语句

动态SQL(一):where与if标签的使用

  1. 首先我们在实体类中定义一个QueryVo
    实体类对象
  2. 定义我们需要使用的查询方法(即Dao中的方法)
    查询方法
  3. 在UserDao.xml中完成sql语句的书写,这里有两种书写形式(不建议使用拼字符串where 1 = 1所以不做展示)
    动态SQL方法1

动态SQL(二):foreach标签的使用

  1. 定义我们需要使用的查询方法
    查询方法
  2. 在UserDao.xml中完成sql语句的书写(注意foreach标签的参数)
    动态SQL方法2

单表查询

单表查询(一):一对一单表查询

  1. 数据库外键展示(这里的外键为account表中uid关联user表中的id主键)
    数据库外键展示
  2. 生成user实体类(注意这里的get和set方法因为空间原因没有写全)
    user
  3. 生成account实体类(注意在account中需要添加user表的关系映射)
    account
  4. AccountDao.xml中SQL语句的编写(我这是使用了AccountDao.xml因此需要在主要配置文件修改映射配置文件的位置)
    SQL语句

单表查询(二): 一对多单表查询

  1. 数据库查询展示(即在查询user时获取user的账户信息)
  2. 生成user实体类(注意这里的get和set方法因为空间原因没有写全)(注意在user表需要添加account表的关系映射)
    user表
  3. 生成account实体类
    account
  4. UserDao.xml中SQL语句的编写(我这是使用了UserDao.xml因此需要在主要配置文件修改映射配置文件的位置)
    一对多SQL语句

多表查询

  1. 多表查询所依赖数据库展示
    多表查询数据库展示
  2. 生成user实体类(注意在user表需要添加role表的关系映射是为了获取user时获取role信息)
    user实体类
  3. 生成role实体类(注意在role表需要添加user表的关系映射是为了获取role时获取user信息)
    role实体类
  4. 在查询user时获取role信息的数据库展示
    查询user时获取role信息的数据库展示
  5. 在查询user时获取role信息的sql语言展示(UserDao.xml)
    在查询user时获取role信息的sql语言展示
  6. 在查询role信息时获取user的数据库展示
    在查询role信息时获取user的数据库展示
  7. 在查询role时获取user信息的sql语言展示(RoleDao.xml)
    在查询role时获取user信息的sql语言展示
  8. 主配置文件的起别名标签与映射xml文件的标签
    主配置文件展示
  9. 总结

    1.在一对多,多对多的查询当中,我们需要在查询1的同时查询2,那么我们就需要在1的实体类中映射2的实体
    2.不论在单表还是多表查询时,如果查询结果是单个对象,那么需要在<resultMap>中使用<association>标签,就需要在同时查询列指明查询所依赖的外键列名,还需要通过<javaType>标签指明查询所依赖的实体类,如果查询结果是对象的集合,那么需要在<resultMap>中使用<collection>标签,只需通过<ofType>标签指明查询所依赖的实体类
    3.当两张表有重复字段名时需要对其中的一张表进行起别名的操作,同时在起了别名时需要在<id column="使用别名">和<result colume="中使用别名">
    4.如果实体类中属性名和数据库中字段名不相同,需要在<id proprety="使用别名">和<result proprety="中使用别名">
    5.如果在主配置文件中对实体类起了别名,那么在xml配置文件中就可以不使用全限定类名,而是使用别名(实体类类名大小写即可)

本文由 WarlockMarten 创作,采用 知识共享署名 3.0,可自由转载、引用,但需署名作者且注明文章出处。