MyBatis系列(一) MyBatis入门

前言

MyBatis官方文档:https://mybatis.org/mybatis-3/zh/index.html

MyBatis 本是apache的一个开源项目iBatis, 2010年这个项目由apache software foundation 迁移到了google code,并且改名为MyBatis 。是一个支持普通SQL查询,存储过程和高级映射的优秀持久层框架。MyBatis消除了几乎所有的JDBC代码和参数的手工设置以及对结果集的检索封装。MyBatis可以使用简单的XML或注解用于配置和原始映射,将接口和Java的POJO(Plain Old Java Objects,普通的Java对象)映射成数据库中的记录。

一、环境准备

在Java中需要引用MyBatis的Jar包与数据库驱动Jar包,可以在下面的链接下载,其中数据库驱动Jar包只有MySQL与Oracle的,如果需要使用其他数据库请自行搜索下载。

https://files.cnblogs.com/files/yogouo/MyBatisJar%E5%8C%85.zip

二、SqlSessionFactory与SqlSession

SqlSessionFactory

SqlSessionFactory是MyBatis的关键对象,它是个单个数据库映射关系经过编译后的内存镜像。
SqlSessionFactory对象的实例可以通过SqlSessionFactoryBuilder对象类获得。
SqlSessionFactory一旦被创建,在执行期间都存在。
SqlSessionFactoryBuilder则可以从XML配置文件或一个预先定制的Configuration的实例构建出SqlSessionFactory的实例。

SqlSession

SqlSession是MyBatis的关键对象,是执行持久化操作的独享,类似于JDBC中的Connection。
SqlSession对象完全包含以数据库为背景的所有执行SQL操作的方法,它的底层封装了JDBC连接,可以用SqlSession实例来直接执行被映射的SQL语句。
SqlSession的实例不能被共享,同时SqlSession也是线程不安全的 。
SqlSeesion使用完之后需要关闭。

三、实现代码

结构

 

 music源码

此类中的字段需要和查询的字段保持一致,如果不保持一致,则需要在查询SQL中给字段加上一致的别名。

package com.mybatis.bean;

public class music {
    private int id;
    private String name;
    private String music;
    private String musicurl;
    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 String getMusic() {
        return music;
    }
    public void setMusic(String music) {
        this.music = music;
    }
    public String getMusicurl() {
        return musicurl;
    }
    public void setMusicurl(String musicurl) {
        this.musicurl = musicurl;
    }
    
    

}

mybatis-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>
    <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="jdbc:mysql://127.0.0.1:3306/test?serverTimezone=UTC&amp;useSSL=false" />
                <property name="username" value="root" />
                <property name="password" value="Yuhao@520" />
            </dataSource>
        </environment>
    </environments>
    <!-- 将我们写好的sql映射文件(musicMapper.xml)一定要注册到全局配置文件(mybatis-config.xml)中 -->
    <mappers>
        <mapper resource="musicMapper.xml" />
    </mappers>
</configuration>

musicMapper.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.mybatis.dao.musicMapper">
    
    <select id="getmusicall" resultType="com.mybatis.bean.music">
        select id,name,music,musicurl from test where name = #{name};
    </select>
    
</mapper>

mybatistest

package com.mybatis.test;


import java.io.IOException;
import java.io.InputStream;
import java.util.List;
import java.util.Map;

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.testng.annotations.Test;

import com.mybatis.bean.music;

public class mybatistest {

    @Test
    public void test() throws IOException {
        String resource = "mybatis-config.xml";
        InputStream inputStream = Resources.getResourceAsStream(resource);
        SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
        //获取SqlSession对象
        SqlSession openSession = sqlSessionFactory.openSession();
        try {
            List<music> GetmusicList = openSession.selectList("com.mybatis.dao.musicMapper.getmusicall", "许嵩");
            for (int i = 0; i < GetmusicList.size(); i++) {
                System.out.println("歌手:" + GetmusicList.get(i).getName());
                System.out.println("歌名:" + GetmusicList.get(i).getMusic() + "---"
                                 + "歌曲网址:" + GetmusicList.get(i).getMusicurl());
            }
            
        } finally {
            openSession.close();
        }
        
    }

}

 

posted @ 2019-12-10 21:28  大风北吹  阅读(564)  评论(0编辑  收藏  举报