MyBatis1:MyBatis入门

MyBatis是什么

  MyBatis是什么,MyBatis的jar包中有它的官方文档,文档是这么描述MyBatis的:

MyBatis is a first class persistence framework with support for custom SQL, stored procedures
and advanced mappings. MyBatis eliminates almost all of the JDBC code and manual setting of
parameters and retrieval of results. MyBatis can use simple XML or Annotations for configuration
and map primitives, Map interfaces and Java POJOs (Plain Old Java Objects) to database records.

  翻译过来就是:MyBatis是一款支持普通SQL查询、存储过程和高级映射的持久层框架。MyBatis消除了几乎所有的JDBC代码、参数的设置和结果集的检索。MyBatis可以使用简单的XML或注解用于参数配置和原始映射,将接口和Java POJO(普通Java对象)映射成数据库中的记录。

  本文先入门地搭建表、建立实体类、写基础的配置文件、写简单的Java类,从数据库中查出数据,深入的内容后面的文章再逐一研究。

建表、建立实体类

  从简单表开始研究MyBatis,所以我们先建立一张简单的表:

CREATE TABLE `student` (
  `studentID` varchar(10) NOT NULL,
  `studentName` varchar(10) default NULL,
  `studentAge` varchar(3) default NULL,
  `studentPhone` varchar(11) default NULL,
  PRIMARY KEY  (`studentID`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

INSERT INTO `student` VALUES ('1', 'zs', '10', '15659119790');
INSERT INTO `student` VALUES ('2', 'ls', '11', '15659119791');
INSERT INTO `student` VALUES ('3', 'ww', '12', '15659119792');
INSERT INTO `student` VALUES ('4', 'zl', '13', '15659119793');

  一个名为student的表格,里面存放了student相关字段,当然此时我们需要有一个Java实体类与之对应:

public class Student {
    /*
    * 主键ID
    * */
    private String studentID;
    /*
    * 学生姓名
    * */
    private String studentName;
    /*
    * 学生年龄
    * */
    private String studentAge;
    /*
    * 学生手机号
    * */
    private String studentPhone;

    public String getStudentID() {
        return studentID;
    }

    public void setStudentID(String studentID) {
        this.studentID = studentID;
    }

    public String getStudentName() {
        return studentName;
    }

    public void setStudentName(String studentName) {
        this.studentName = studentName;
    }

    public String getStudentAge() {
        return studentAge;
    }

    public void setStudentAge(String studentAge) {
        this.studentAge = studentAge;
    }

    public String getStudentPhone() {
        return studentPhone;
    }

    public void setStudentPhone(String studentPhone) {
        this.studentPhone = studentPhone;
    }

    @Override
    public String toString() {
        return "Student{" +
                "studentID='" + studentID + '\'' +
                ", studentName='" + studentName + '\'' +
                ", studentAge='" + studentAge + '\'' +
                ", studentPhone='" + studentPhone + '\'' +
                '}';
    }
}

  OK,这样student表及其对应的实体类Student.java就创建好了。

写config.xml文件

  在写SQL语句之前,首先得有SQL运行环境,因此第一步是配置SQL运行的环境。创建一个xml文件config.xml,里面配置数据库的连接:

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE configuration PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
        "http://mybatis.org/dtd/mybatis-3-config.dtd">

<configuration>
    <typeAliases>
        <typeAlias alias="Student" type="com.dajia.test.Student"/>
    </typeAliases>

    <environments default="development">
        <environment id="development">
            <transactionManager type="JDBC"/>
            <dataSource type="POOLED">
                <property name="driver" value="com.mysql.jdbc.Driver"/>
                <property name="url" value="jdbc:mysql://localhost:3306/databasezfy"/>
                <property name="username" value="root"/>
                <property name="password" value="123456"/>
            </dataSource>
        </environment>
    </environments>

    <mappers>
        <mapper resource="resources/student.xml"/>
    </mappers>
</configuration>

  这就是一个最简单的config.xml的写法。接着创建一个student.xml文件,和mapper里面的一致,student.xml这么写:

<?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.dajia.StudentMapper">
    <select id="selectStudentById" parameterType="int" resultType="com.dajia.test.Student">
        select * from student where studentId = #{id}
    </select>
</mapper>

  专门有一个student.xml表示student表的sql语句,一般是一张表有一个对应的含sql的xml文件。至此,MyBatis需要的两个.xml文件都已经建立好,接下来需要做的就是写Java代码了。

Java代码实现

  首先要导入所需的jar包:mybatis和mysql-connector-java。Idea导入jar包的两种方法

  附目录结构如下

  

  接着创建一个类,我起名字叫做StudentOperator,由于这种操作数据库的类被调用频繁但是调用者之间又不存在数据共享的问题,因此使用单例会比较节省资源。为了好看,写一个父类BaseOperator,SqlSessionFactory和Reader都定义在父类里面,子类去继承这个父类:

public class BaseOperator {

    public static SqlSessionFactory sqlSessionFactory;
    public static Reader reader;

    static {
        try {
            reader = Resources.getResourceAsReader("resources/config.xml");
            sqlSessionFactory = new SqlSessionFactoryBuilder().build(reader);
        } catch (IOException e) {
            e.printStackTrace();
        }

    }

}

  然后创建子类StudentOperator:

public class StudentOperator extends BaseOperator{

    private static StudentOperator studentOperator = new StudentOperator();

    public static StudentOperator getStudentOperator(){
        return studentOperator;
    }

    public Student getStudentByID(int studentID){
        SqlSession sqlSession = sqlSessionFactory.openSession();
        Student student = sqlSession.selectOne("com.dajia.StudentMapper.selectStudentById", studentID);
        sqlSession.close();
        return student;
    }
}

  这个类里面做了两件事情:

  1、构造一个StudentOperator的单实例

  2、写一个方法根据studentId查询出一个指定的Student

验证

  至此,所有步骤全部就绪,接着写一个类来验证一下:

public class test {
    public static void main(String[] args) {
        Student studentByID = StudentOperator.getStudentOperator().getStudentByID(1);
        System.out.println(studentByID);
    }
}

  运行结果为:

Student{studentID='1', studentName='zs', studentAge='10', studentPhone='15659119790'}

  看一下数据库中的数据:

  

  数据一致,说明以上的步骤都OK,MyBatis入门完成,后面的章节,将会针对MyBatis的使用细节分别进行研究。

参考资料:

  MyBatis1:MyBatis入门

posted @ 2019-04-18 10:46  吹灭读书灯  阅读(137)  评论(0编辑  收藏  举报