Mybatis

1、Mybatis支持普通SQL查询、存储一级高级映射的优秀持久层框架

2、Mybatis可以使用简单的XML或注解用于配置和原始映射,将接口与Java的POJO(Plain Old Java Objects)映射成数据库中的记录

3、Mybatis开发需要导入相应的jar包:mybatis-3.1.1.jar

4、Mybatis配置文件,如:mybatis.xml




  
    
    
    
      
      
      
      
    
    
  
  

5、开发实例:

  • 框架:
Mybatis_第1张图片
structure.png
  • JavaBean对象:

    package com.djh.beans;
    public class User {
    
    private int id;
    private String name;
    private int age;
    
    public int getId() {
       return id;
    }
    
    public void setId(int id) {
      this.id = id;
    }
    
    public String getName() {
       return name;
    }
    
    public void setName(String name) {
      this.name = name;
    }
    
    public int getAge() {
      return age;
    }
    
    public void setAge(int age) {
      this.age = age;
    }
    
    @Override
    public String toString() {
            return "User [id=" + id + ", name=" + name + ", age=" + age + "]";
    }
    

}

  • 配置文件mybatis.xml:

    
    
    
      
            
                    
                    
                       
                       
                       
                       
                    
            
      
      
      
        
      
    
    
  • 持久化类对应的映射文件:userMapper.xml

    
    
    
      
         insert into users(name, age) values(#{name}, #{age});
      
      
        delete from users where id=#{id}
      
      
        update users set name=#{name},age=#{age} where id=#{id}
      
      
    
    
  • 测试类:

    package com.djh.test;
    import java.io.IOException;
    import java.io.Reader;
    import org.apache.ibatis.io.Resources;
    import org.apache.ibatis.session.SqlSession;
    import org.apache.ibatis.session.SqlSessionFactory;
    import org.apache.ibatis.session.SqlSessionFactoryBuilder;
    import com.djh.beans.User;
    public class MybatisTest{
      public static void main(String[] args) throws IOException {
    
        String resource = "mybatis.xml";
        //加载mybatis的配置文件(它也加载关联的映射文件)
        Reader reader = Resources.getResourceAsReader(resource);
        //构建sqlSession工厂
        SqlSessionFactory factory = new SqlSessionFactoryBuilder().build(reader);
        //创建能执行映射文件的sql的sqlSession
        SqlSession sqlSession = factory.openSession();
        //映射sql的标识字符串
        String statement = "com.djh.beans.userMapper" + ".selectUser";
        //执行查询返回一个唯一user对象的sql
        User user = (User) sqlSession.selectOne(statement, new Integer(1));
        System.out.println(user);
        System.out.println();
      }
    }
    
  • 运行结果:


    Mybatis_第2张图片
    result.png
  • 数据库DB:

Mybatis_第3张图片
database capture.png

6、Mybatis使用XML与注解的方式操作DB,如下:

  • 结构:


    Mybatis_第4张图片
    structure.png
  • mybatis.xml:


    Mybatis_第5张图片
    config.png
  • db.properties:

  • Utils:


    Mybatis_第6张图片
    utils.png
  • XML方式:

    • XMLUserDAO:


      Mybatis_第7张图片
      DAO.png
    • XML方式的配置:


      xml config.png
  • 注解方式:

    • 注解接口:


      Mybatis_第8张图片
      interface annotation.png
    • 注解形式的DAO:


      Mybatis_第9张图片
      repository annotation.png
    • 注解形式的配置:


      config.png

      7、log4j的应用:

  • 可以在src下加入log4j的配置文件,打印日志信息

  • 添加jar包,如:log4j-1.2.16.jar

  • 配置方式:

    • 方式一(properties):

      log4j.rootLogger=DEBUG, Console
      #Console
      log4j.appender.Console=org.apache.log4j.ConsoleAppender
      log4j.appender.Console.layout=org.apache.log4j.PatternLayout
      log4j.appender.Console.layout.ConversionPattern=%d [%t] %-5p [%c] - %m%n
      log4j.logger.java.sql.ResultSet=INFO
      log4j.logger.org.apache=INFO
      log4j.logger.java.sql.Connection=DEBUG
      log4j.logger.java.sql.Statement=DEBUG
      log4j.logger.java.sql.PreparedStatement=DEBUG
      
    • 方式二(xml):

      
      
      
        
          
            
          
        
        
          
         
         
          
         
          
            
            
           
      
      

8、数据表字段名与JavaBean属性名不一致的解决

  • 如:表orders(order_id, order_no, order_price), JavaBean(id, orderNo, price)

  • 方式一,通过在sql中定义别名,如:

    
    
  • 方式二:通过的形式,如:

    
    
         
         
         
    
    

9、关联表的查询:

  • 一对一关联,如:

    • table:teacher(t_id, t_name), class(c_id, c_name, teacher_id)

    • JavaBean对象:

      • Teacher(int:id, String:name)
      • Classes(int:id, String:name, Teacher:teacher)
    • sql映射文件:(ClassesMapper.xml)

       
      
      
        
        
        
        
          
          
        
      
      
      
      
      
         
         
              
      
      
      
    • association:用于一对一的关联查询
      • property:对象属性的名称
      • javaType:对象属性的类型
      • column:所对应的外键字段名称
      • select:使用另一个查询封装的结果
  • 一对多关联:

    • 如table:student(s_id, s_name, class_id), class(c_id, c_name, teacher_id)

    • JavaBean对象:

      • Student(int: id, String: name)
      • Classes(int: id, String: name, Teacher: teacher, List: students)
    • sql映射文件ClassMapper.xml:

      
      
      
        
        
        
          
          
        
      
        
          
          
        
      
      
      
      
        
        
        
        
      
      
      
      
    • collection:指定一对多关联查询

    • ofType:指定集合中元素对象的类型

  • Others link:

    https://blog.csdn.net/djh_happy/article/details/76407277
    

你可能感兴趣的:(Mybatis)