zoukankan      html  css  js  c++  java
  • 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();
            }
        }
  • 相关阅读:
    A1061 Dating [字符串比较]
    A1058 A+B in Hogwarts [进制转换]
    A1027 Colors in Mars[简单模拟--进制转换]
    A1031 Hello World for U[图形输出]
    刷PAT的一些思考—Day 1
    A1009 Product of Polynomials[简单模拟--多项式相乘]
    A1002 A+B for Polynomials[简单模拟--多项式相加]
    A1046 Shortest Distance [简单模拟--卡算法复杂度]
    1009 说反话
    usb之配置描述符
  • 原文地址:https://www.cnblogs.com/houj/p/11728931.html
Copyright © 2011-2022 走看看