Mybatis之入門


mybatis從18年10月開始接觸,一直有使用,和斷斷續續的學習,但是不敢說完全掌控,隔一段時間不用,就忘了如何搭建。這段時間學習重心放到JavaEE,我決定完整的學習下SSM,記錄下我的歷程,以后忘了回來翻一翻,比寫成本地文檔要方便。

mybatis也可以在普通的Java項目中使用,不一定要Web項目。

mybatis核心組件:

  • SqlSessionFactoryBuilder()構造器:它會根據配置或代碼來生成SqlSessionFactory,采用的是分步構建的Builder模式
  • SqlSessionFactory 工廠對象:依靠它來生成SqlSession,使用的是工廠模式;
  • SqlSession 會話:一個即可以發送SQL執行返回結果,也可以獲取Mapper接口。在現有的技術中,一般我們會讓其在業務邏輯代碼中消失,而使用的是mybatis提供的SQL Mapper 接口編程技術,它能提高代碼的可讀性和可維護性。
  • SQL Mapper 映射器:Mybatis新設計的組件,它有一個Java接口和XML文件(注解)構成,需要給出相應的SQL和映射規則。它負責發送SQL去執行並返回結果。

  以上這段精辟的文字摘自《JavaEE互聯網輕量級框架整合》。

使用mybatis第一步,在src下建立一個“mybatis-config.xml”文件,xml文件的內容不需要記住,可以從mybatis 的介紹文件中拷貝,介紹文件在下載的包中。

 

 

 拷貝后修改為自己的相關信息;<mappers></mappers>標簽中放的是 映射器的xml文件位置。所謂映射器就是一個dao層下一個xx接口和xx.xml文件組成一個映射器。

第二步:建立dao層、pojo層,和其中的文件

 

 

 

public interface StudentMapper {
    List<Student> getList();
    
    int add(Student student);
    
    int delete(int id);
    
    int update(Student student);
}
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper
 PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
 "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.houjun.dao.StudentMapper"><!-- namespace是綁定的接口全限定名 -->
 <select id="getList" resultType="student">
 select * from student 
 </select>
</mapper>
package com.houjun.pojo;

public class Student {
    private String name;
    private int id;
    private int age;
    private int tig;
    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
    public int getId() {
        return id;
    }
    public void setId(int id) {
        this.id = id;
    }
    public int getAge() {
        return age;
    }
    public void setAge(int age) {
        this.age = age;
    }
    public int getTig() {
        return tig;
    }
    public void setTig(int tig) {
        this.tig = tig;
    }
    @Override
    public String toString() {
        return "Student [name=" + name + ", id=" + id + ", age=" + age + ", tig=" + tig + "]";
    }
    
}

第三步:測試成果

自己找個地新建一個測試類

public static void main(String[] args) throws SQLException {
        SqlSessionFactory sessionFactory = null;
        try {
            InputStream resourceAsStream = Resources.getResourceAsStream("mybatis-config.xml");
            sessionFactory = new SqlSessionFactoryBuilder().build(resourceAsStream);
            SqlSession session = sessionFactory.openSession();

            Connection connection = session.getConnection();
            Statement createStatement = connection.createStatement();
            ResultSet executeQuery = createStatement.executeQuery("select * from student");
        //回憶初學所用的原生JDBC寫法
            while (executeQuery.next()) {//一行一行循環
                System.out.println(executeQuery.getInt(1) + executeQuery.getString(2) + executeQuery.getString(3));
            }
            System.out.println();
            //方式一 推薦
            StudentMapper mapper = session.getMapper(StudentMapper.class);
            List<Student> list = mapper.getList();
            for (Student student : list) {
                System.out.println(student);
            }
            //方式二
//            List<Student> selectList =  session.selectList("select * from student");不能直接運行sql語句
            List<Student> selectList = session.selectList("com.houjun.dao.StudentMapper.getList");//參數是映射器xml文件中的方法
            for (Student student : selectList) {
                System.out.println(student);
            }
        } catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
    }

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM