美文网首页
Mybatis的基本配置,原理及使用

Mybatis的基本配置,原理及使用

作者: 我是java程序员 | 来源:发表于2018-11-21 22:15 被阅读0次

1.Mybatis核心配置文件mybatis.cfg.xml
mybatis.cfg.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>
    <!-- 和spring整合后 environments配置将废除 -->
    <environments default="development">
        <environment id="development">
            <!-- 使用jdbc事务管理 -->
            <!-- type="JDBC" 代表使用JDBC的提交和回滚来管理事务 -->
            <transactionManager type="JDBC" />
            <!-- 数据库连接池     
             mybatis提供了3种数据源类型,分别是:POOLED,UNPOOLED,JNDI 
15           POOLED 表示支持JDBC数据源连接池
16           UNPOOLED 表示不支持数据源连接池 
17           JNDI 表示支持外部数据源连接池-->
            <dataSource type="POOLED">
                <property name="driver" value="com.mysql.cj.jdbc.Driver" />
                <property name="url" value="jdbc:mysql:///mybatis?useSSL=false&amp;serverTimezone=UTC" />
                <property name="username" value="root" />
                <property name="password" value="123456" />
            </dataSource>
        </environment>
    </environments>
    <!-- 加载映射文件 -->
    <mappers>
        <mapper resource="com/wuhaitao/mybatis/demo1/user.xml"/>
    </mappers>
</configuration>

2.映射文件和对应实体类
User.java

package com.wuhaitao.mybatis.demo1;

import java.util.Date;

public class User {
    private Integer id;
    private String username;// 用户姓名
    private String sex;// 性别
    private Date birthday;// 生日
    private String address;// 地址

    public Integer getId() {
        return id;
    }

    public void setId(Integer id) {
        this.id = id;
    }

    public String getUsername() {
        return username;
    }

    public void setUsername(String username) {
        this.username = username;
    }

    public String getSex() {
        return sex;
    }

    public void setSex(String sex) {
        this.sex = sex;
    }

    public Date getBirthday() {
        return birthday;
    }

    public void setBirthday(Date birthday) {
        this.birthday = birthday;
    }

    public String getAddress() {
        return address;
    }

    public void setAddress(String address) {
        this.address = address;
    }

    @Override
    public String toString() {
        return "User [id=" + id + ", username=" + username + ", sex=" + sex + ", birthday=" + birthday + ", address="
                + address + "]";
    }
}

对应配置文件user.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">
<!-- namespace 命名空间,用于隔离sql语句,后继有重要作用 -->
<!-- 
      为这个mapper指定一个唯一的namespace,namespace的值习惯上设置成包名+sql映射文件名,这样就能够保证namespace的值是唯一的
      例如namespace="com.wuhaitao.mybatis.demo1.User"就是com.wuhaitao.mybatis.demo1(包名)+user(user.xml文件去除后缀)
-->
<mapper namespace="user">

    <!-- 
        在select标签中编写查询的SQL语句, 设置select标签的id属性为getUSerById,id属性值必须是唯一的,不能够重复
        使用parameterType属性指明查询时使用的参数类型,resultType属性指明查询返回的结果集类型
        resultType="com.wuhaitao.mybatis.demo1.User"就表示将查询结果封装成一个User类的对象返回
        User类就是cst_customer表所对应的实体类
    -->
    <select id="getUserById" parameterType="int" resultType="com.wuhaitao.mybatis.demo1.User">
        <!-- 查询语句这么写是因为,再查询时大量数据时可以节省很多时间 ,在参数上使用' #{}' 来表示 相当于JDBC的?号-->
        SELECT
            `user`.id,
            `user`.username,
            `user`.birthday,
            `user`.sex,
            `user`.address
        FROM `user`
        WHERE id = #{id}
    </select>
</mapper>

3.测试类
MybatisTest.java

package com.wuhaitao.mybatis.demo1;

import java.io.IOException;
import java.io.InputStream;

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 org.junit.Test;

public class MybatisTest {
    @Test
    public void testGetUserById() throws IOException {
        //创建SqlSessionFactoryBuilder对象
        SqlSessionFactoryBuilder sqlSessionFactoryBuilder = new SqlSessionFactoryBuilder();
        //通过Mybatis提供的Resources类加载Mybatis核心配置文件
        InputStream inputStream = Resources.getResourceAsStream("mybatis.cfg.xml");
        //得到SessionFactory对象
        SqlSessionFactory sessionFactory = sqlSessionFactoryBuilder.build(inputStream);
        //得到SqlSession对象,sqlSession包含Mybatis访问数据库的所有API
        SqlSession sqlSession = sessionFactory.openSession();
        //执行操作
        User user = sqlSession.selectOne("user.getUserById", 1);
        System.out.println(user);
        //释放资源
        sqlSession.close();
    }
}

相关文章

网友评论

      本文标题:Mybatis的基本配置,原理及使用

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