MyBatis总结一:快速入门

简介

MyBatis 是一款优秀的持久层框架,它支持定制化 SQL、存储过程以及高级映射。MyBatis 避免了几乎所有的 JDBC 代码和手动设置参数以及获取结果集。MyBatis 可以使用简单的 XML 或注解来配置和映射原生信息,将接口和 Java 的 POJOs(Plain Old Java Objects,普通的 Java对象)映射成数据库中的记录。

快速入门:

1,创建java项目,并引入相应的jar包 mysql,mybatis

<!--mysql-->
<dependency>
    <groupId>mysql</groupId>
    <artifactId>mysql-connector-java</artifactId>
    <version>5.1.32</version>
</dependency>
<!--mybatis-->
<dependency>
    <groupId>org.mybatis</groupId>
    <artifactId>mybatis</artifactId>
    <version>3.2.8</version>
</dependency>

 2,使用MyBatis查询数据库信息(这里提前准备好了数据库的User表信息)

2.1,创建User对应的实体类

package com.zy.domain;

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 +
                '}';
    }
}

 

2.2,在resources下面创建了如下的文件:

jdbc.properties(存放数据库连接信息):

jdbc.driverClassName=com.mysql.jdbc.Driver
jdbc.url=jdbc:mysql://127.0.0.1:3306/mybatisdb?useUnicode=true&characterEncoding=utf8&autoReconnect=true\
  &allowMultiQueries=true
jdbc.username=root
jdbc.password=root

UserMapper.xml(存放User的映射):

<?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">
<!--
    定义所有用到的sql语句 和 映射关系
    namespace : 当前这个配置文件的唯一标识, 自定义, 但是不能和其他配置文件namespace重复
-->
<mapper namespace="userMapper">
    <!--
        定义一条sql语句, 其实就是一个 statement
            select 代表是查询语句, 与其类似的还有 insert, update, delete等
            id : 这条sql语句的唯一标识,自定义,但是不能和其他sql语句重复
            parameterType:  sql语句需要的参数类型, 需要写 类的全路径
            resultType: sql语句返回的结果类型
    -->
    <select id="getUserById" parameterType="int" resultType="com.zy.domain.User">
        <!--这里写具体的sql语句, #{}是占位符, 编译时会被替换成?, 然后注入真实参数-->
        select * from user where id=#{id}
    </select>
</mapper>

 

mybatis-config.xml(配置数据库信息,注册mapper):

<?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>
    <!--加载外部属性-->
    <properties resource="jdbc.properties"/>

    <!--运行环境可以配置多个, default指定默认使用哪个-->
    <environments default="development">
        <!--配置环境, id是这个环境的唯一标识-->
        <environment id="development">
            <transactionManager type="JDBC"/>
            <dataSource type="POOLED">
                <property name="driver" value="${jdbc.driverClassName}"/>
                <property name="url" value="${jdbc.url}"/>
                <property name="username" value="${jdbc.username}"/>
                <property name="password" value="${jdbc.password}"/>
            </dataSource>
        </environment>
    </environments>

    <!--注册mapper文件-->
    <mappers>
        <mapper resource="UserMapper.xml"/>
    </mappers>
</configuration>

 

2.3,创建Test类 测试

package com.zy.test;

import com.zy.domain.User;
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 java.io.InputStream;

public class Test01 {
    public static void main(String[] args) {
        //mybatis的配置文件
        String resource = "mybatis-config.xml";

        //使用MyBatis提供的Resources类 获取输出流  加载mybatis的配置文件
        //InputStream inputStream = Resources.getResourceAsStream(resource);

        //使用类加载器加载mybatis的配置文件(它也加载关联的映射文件)
        InputStream inputStream = Test01.class.getClassLoader().getResourceAsStream(resource);
        //构建sqlsession工厂
        SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
        //创建能执行映射文件中sql的sqlSession
        SqlSession sqlSession = sqlSessionFactory.openSession();
        // 执行statement, 需要指定两个参数:
        // 1 确定哪个sql语句: mapper文件的namespace + sql语句的id
        // 2 sql语句需要的参数
        User user = sqlSession.selectOne("userMapper.getUserById", 1);
        System.out.println(user);
    }
}

最终运行结果:

posted @ 2017-04-02 20:13  青衫仗剑  阅读(340)  评论(0编辑  收藏  举报