Java实训(5)-- MyBatis 之 联合查询 -- 2018-06-08

MyBatis 联合查询

MyBatis 创建的一个想法:数据库不用永远是你想要的或需要它们是什么样的。而我们最喜欢的数据库最好是第三范式或 BCNF 模式,但它们有时不是。如果可能有一个单独的数据库映射,所有应用程序都可以使用它,这是非常好的,但有时也不是。结果映射就是 MyBatis 提供处理这个问题的答案。

实体类代码

  1. bean 包下新增一个 Book.java

    package com.neuedu.bookstore.bean;
    
    import java.util.Date;
    
    public class Book {
        private String isbn;
        private String bookName;
        private double price;
        private Date publishDate;
        private String publisher;
        
        // MyBatis 时 orm 框架,设计实体类时需要把表关系转换成对象关系 - 本例是多对一关系
        private Category category;
    
        public Book() {
            super();
        }
    
        public Book(String isbn, String bookName, double price, Date publishDate, String publisher, Category category) {
            super();
            this.isbn = isbn;
            this.bookName = bookName;
            this.price = price;
            this.publishDate = publishDate;
            this.publisher = publisher;
            this.category = category;
        }
        
        @Override
        public String toString() {
            return "Book [isbn=" + isbn + ", bookName=" + bookName + ", price=" + price + ", publishDate=" + publishDate
                    + ", publisher=" + publisher + ", category=" + category + "]";
        } 
        
        // Getting 和 Setting 方法省略
    }
    
  2. 修改 Category.java 文件

    package com.neuedu.bookstore.bean;
    
    import java.util.List;
    
    public class Category {
        private int id;
        private String name;
        
        // 把数据关系转换成对象关系, 本例是一对多关系
        private List books;
        
        public Category() {
            super();
        }
        public Category(int id, String name) {
            super();
            this.id = id;
            this.name = name;
        }
        
        public Category(int id, String name, List books) {
            super();
            this.id = id;
            this.name = name;
            this.books = books;
        }
        public List getBooks() {
            return books;
        }
    
        @Override
        public String toString() {
            return "Category [id=" + id + ", name=" + name + ", books=" + books + "]";
        }
        // Getting 和 Setting 方法省略
    }
    
  3. 添加 Book 的数据映射接口 BookMapper.java

    package com.neuedu.bookstore.mapper;
    
    import java.util.List;
    
    import com.neuedu.bookstore.bean.Book;
    
    public interface BookMapper {
    
        public List findAll();
     
        public List findAllWithCategory();
    
    }
    
  4. 添加 Book 的数据操作映射文件 BookMapper.xml

    
    
    
    
    
    
    
    

关联查询的两种方式配置

  1. 一对多关联查询 -- 同时查出所有分类及其书籍

    
    
    
    
    
    
        
        
        
        
        
        
        
        
            
            
            
            
            
            
        
    
    
    
  2. 一对多关联查询 -- 先查询所有分类,再根据分类id进行二次查询获取分类书籍

    
    
    
    
    
        
        
        
        
        
        
        
    
    
    
        
    
        
        
        
        
        
          
    
    
  3. 多对一 或 一对一关联查询 -- 同时查出所有分类及其书籍

    
    
    
    
            
            
            
            
            
            
                       
                
                
                    
    
    
  4. 多对一 或 一对一关联查询 -- 二次查询

    
    
            
            
            
            
            
            
            
            
    
    
    
    
        
    
  5. MyBatis 不提供多对多映射,如果是多对多关系需要转换成 一对多 和 多对一 关系


配置文件

mybatis-config.xml 别名设置

进行别名设置后,Mapper.xml映射操作文件中可以使用别名替代原名

  1. 通过 typeAlias 标签将类长名命名别名

    
    
      
       
    
    
  2. 通过 package 将包别名,填写类时不用添加包名,可直接写类名

    
    
      
      
    
    
  3. 注意事项

    mybatis-config.xml
    配置全局文件时,需要按照以下先后顺序进行配置

    (properties?, settings?, typeAliases?, typeHandlers?, objectFactory?,
    objectWrapperFactory?, reflectorFactory?, plugins?, environments?, databaseIdProvider?, mappers?)

mybatis-config.xml mapper 设置

  1. 使用 resource 配置
    
       -->
    
    
  1. 使用 calss 配置

     
    
      
      
    
    
  2. 使用 package 配置

     
    
      
      
    
    

mybatis-config.xml 使用 Properties 优化数据库连接参数配置

  1. 在 src 目录下新建一个文件 db_config.properties
    #这是一个属性配置文件,配置了数据连接的参数
    driver=com.mysql.jdbc.Driver
    url=jdbc:mysql://localhost:3306/ssmdb
    username=javauser
    password=123456
    
  2. 修改 mybatis-config.xml 文件
      
    
    
    
    
      
    
    
    
      
        
        
          
          
          
          
        
      
    
    

你可能感兴趣的:(Java实训(5)-- MyBatis 之 联合查询 -- 2018-06-08)