• 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();
            }
            
        }
    
    }
  • 相关阅读:
    javascript判断触发事件event的鼠标按钮
    解决IE8 Session共享问题
    SignalR 实现web浏览器客户端与服务端的推送功能
    MFC ActiveX控件与ATL ActiveX控件的比较 .
    rpm relevent operation record
    通过rpm包安装、配置及卸载mysql的详细过程 Richard Shen 运维/架构 51CTO技术博客
    instal python relevent cmds
    ubuntu日志的设置
    关于电信、网通检测ADSL共享上网的技术手段
    Simple usage of Python's logging module
  • 原文地址:https://www.cnblogs.com/yogouo/p/11980913.html
Copyright © 2020-2023  润新知