美文网首页
Mybatis 上手

Mybatis 上手

作者: yudianer | 来源:发表于2018-08-19 10:25 被阅读0次

每一个 Mybatis 应用都基于一个 SqlSesionFactory 实例。
SqlSesionFactory 用于构建 SqlSession 来进行数据库操作。
SqlSesionFactory 实例是由 SqlSessionFactoryBuilder 构建。

SqlSessionFactoryBuilder => SqlSessionFactory => SqlSession

工程结构图.png

一、 SqlSessionFactoryBuilder:

该类用于加载 数据库元配置 和数据库具体操作的相关Mapper

1、从 XML 文件中加载配置 http://www.mybatis.org/mybatis-3/zh/configuration.html
image.png
<?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="mysql-config.properties">
        <property name="username" value="123456"/>
        <property name="password" value="123456"/>
    </properties>
    <environments default="development">
        <environment id="development">
            <transactionManager type="JDBC"/>
            <dataSource type="POOLED">
                <property name="driver" value="com.mysql.cj.jdbc.Driver"/>
                <property name="url" value="${url}"/>
                <property name="username" value="${username}"/>
                <property name="password" value="${password}"/>
            </dataSource>
        </environment>
    </environments>
    <mappers>
        <mapper resource="mapper/user-mapper.xml"/>
    </mappers>
</configuration>

<properties resource="mysql-config.properties"/><mapper resource ="mapper/user-mapper.xml"/> 都是从类路径中加载的,所以直接使用工程项目中的resources下的路径即可。

从 xml 配置文件中构建 SqlSessionFactory:

InputStream in = Resources.getResourceAsStream("mybatis-config.xml");//从类路径下直接加载
SqlSessionFactory factory = new SqlSessionFactoryBuilder().build(in);

也可以使用Java代码来构建 http://www.mybatis.org/mybatis-3/zh/getting-started.html

dataSource 中的 property 可以被<properties 中的 property 或者 <properties resource="mysql-config.properties"> 指定的 properties 文件来代替。

优先级如下:
Java 代码 >= properties 元素 中的resource属性或者url 属性指定的文件 >= propertiesproperty子元素

2、Mapper 映射文件

<mapper resource="mapper/user-mapper.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`中声明了该接口的权限定名,
    该接口中定义了数据库操作
-->
<mapper namespace="mapper.user.UserMapper">
    <select id="getUser" parameterType="String" resultType="mybatis.model.User">
        SELECT * FROM user where NAME =#{name} LIMIT 1
    </select>
</mapper>

<mapper namespace="mapper.user.UserMapper"> 对应于

package mapper.user;
import mybatis.model.User;
public interface UserMapper {
    User getUser(String name);// 指定数据库操作和返回类型
}

返回值类型:

package mybatis.model;

public class User {
    String name;
    String address;
    int age;
    String comment;
    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
    public String getAddress() {
        return address;
    }
    public void setAddress(String address) {
        this.address = address;
    }
    public int getAge() {
        return age;
    }
    public void setAge(int age) {
        this.age = age;
    }
    public String getComment() {
        return comment;
    }
    public void setComment(String comment) {
        this.comment = comment;
    }
    @Override
    public String toString(){
        return name + address;
    }
}

最终代码

public static void main(String[] args) throws IOException {
        InputStream in = Resources.getResourceAsStream("mybatis-config.xml");
        SqlSessionFactory factory = new SqlSessionFactoryBuilder().build(in);
        SqlSession session = factory.openSession();
        System.out.println(session.getMapper(UserMapper.class).getUser("bella"));
        session.close();
    }

相关文章

网友评论

      本文标题:Mybatis 上手

      本文链接:https://www.haomeiwen.com/subject/yqfciftx.html