MyBatis入门

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

具体该如何使用呢?开始:

首先新建一个Maven项目:

屏幕快照 2019-01-08 上午11.05.35.png

点击Next然后进入:

屏幕快照 2019-01-08 上午11.07.00.png

点击next:

屏幕快照 2019-01-08 上午11.07.10.png

点击Finish:

屏幕快照 2019-01-08 上午11.08.14.png

接下来我们在项目-src-main-resource目录下,新建一个文件夹:

屏幕快照 2019-01-08 上午11.18.39.png

取名为mapper:

屏幕快照 2019-01-08 上午11.18.53.png

前期准备工作已完成。接下来,我们导入两个依赖库:mybatis和mysql-connector-java。前往:https://mvnrepository.com搜索并复制到pom.xml文件中:

完成后pom.xml是这样的:

屏幕快照 2019-01-09 下午2.53.36.png

接下来我们新建一个java类的User.java,并编码:

package com.bianla.wql;

public class User {

    //这里的属性名要与数据库字段相同,否则获取不到值

    private int id;

    private String name;

    private String phone;

    public int getId() {

        return id;

    }

    public void setId(int id) {

        this.id = id;

    }

    public void setName(String name) {

        this.name = name;

    }

    public String getName() {

        return name;

    }

    public void setPhone(String phone) {

        this.phone = phone;

    }

    public String getPhone() {

        return phone;

    }

}

此时界面如下:

屏幕快照 2019-01-09 下午3.01.27.png

然后打开Database,输入以下代码,创建一张User表:

CREATE TABLE `User` (

                      `id` int(11) NOT NULL AUTO_INCREMENT,

                      `name` varchar(255) DEFAULT NULL,

                      `phone` varchar(255) DEFAULT NULL,

                      PRIMARY KEY (`id`)

) ENGINE=InnoDB AUTO_INCREMENT=3 DEFAULT CHARSET=utf8;

INSERT INTO `User` VALUES (1, '赵子龙', '13788889999');

INSERT INTO `User` VALUES (2, '张三', '13801234567');
屏幕快照 2019-01-08 下午2.17.40.png

然后运行一下:

屏幕快照 2019-01-08 下午2.18.23.png

成功创建了User表。
接下来在resources文件夹下,创建mysql.properties文件:

屏幕快照 2019-01-08 下午1.45.30.png

接着进入:

屏幕快照 2019-01-08 下午1.46.05.png

命名一下即可。

接着在mysql.properties文件中写入:

jdbc.driver=com.mysql.jdbc.Driver

jdbc.url=jdbc:mysql://localhost:3306/wl_test_database?useSSL=false

jdbc.username=root

jdbc.password=Aa123456

效果:

屏幕快照 2019-01-09 下午3.11.04.png

然后我们前往src-main-resources-mapper中创建一个UserMapper.xml文件,并编码:

<?xml version="1.0" encoding="UTF-8"?>

<!DOCTYPE mapper

        PUBLIC "-//[mybatis.org//DTD](http://mybatis.org//DTD)mapper 3.0//EN"

        "[http://mybatis.org/dtd/mybatis-3-mapper.dtd](http://mybatis.org/dtd/mybatis-3-mapper.dtd)">

<mapper namespace="com.bianla.wql.User">

    <!--在映射文件中配置很多sql语句-->

    <!--将sql语句封装到mappedStatement对象中,所以将id称为statement的id-->

    <!--parameterType:指定输入参数的类型-->

    <!--resultType:指定sql的输出结果所映射的java对象类型。select指定resultType表示将单条记录映射成对应的java对象-->

    <!--#{}表示一个占位符号,#{id},其中的id表示接收输入的参数。如果输入参数是简单类型,#{}中的参数名可以任意,可以是value或其他名称-->

    <!--表名要正确,不区分大小写。resultType要写类名,同样不区分大小写-->

    <select id="findById" parameterType="int" resultType="com.bianla.wql.User">

        SELECT * FROM User WHERE id=#{id}

    </select>

</mapper>

效果:

屏幕快照 2019-01-09 下午3.14.46.png

我们接下来在resources文件夹下创建MyBatis-config文件:

<?xml version="1.0" encoding="UTF-8" ?>

<!DOCTYPEconfiguration

        PUBLIC"-//[mybatis.org//DTD](http://mybatis.org//DTD)Config 3.0//EN"

        "[http://mybatis.org/dtd/mybatis-3-config.dtd](http://mybatis.org/dtd/mybatis-3-config.dtd)">

<configuration>

    <!--加载属性文件-->

    <properties resource="mysql.properties"/>

    <typeAliases>

        <!--定义别名,针对单个别名进行定义。type:类的路径  alias:别名-->

        <!--类名不能写错;别名可以随意起,但力求规范-->

        <typeAlias type="com.bianla.wql.User" alias="User"/>

    </typeAliases>

    <!--环境配置-->

    <environments default="development">

        <environment id="development">

            <!--使用JDBC事务管理,事务控制由mybatis-->

            <transactionManager type="JDBC"></transactionManager>

            <!--数据库连接池,由mybatis管理-->

            <dataSource type="POOLED">

                <property name="driver" value="${jdbc.driver}"/>

                <property name="url" value="${jdbc.url}"/>

                <property name="username" value="${jdbc.username}"/>

                <property name="password" value="${jdbc.password}"/>

            </dataSource>

        </environment>

    </environments>

    <!--加载映射文件-->

    <mappers>

        <!--通过resource方法一次加载一个映射文件-->

        <!--注意这里的路径和xml文件名-->

        <mapper resource="mapper/UserMapper.xml"/>

    </mappers>

</configuration>

效果是这样的:

屏幕快照 2019-01-09 下午3.07.07.png

然后我们创建一个UserTest文件来测试一下,编码:

package com.bianla.wql;

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.IOException;

import java.io.InputStream;

public class UserTest {

    public static void main(String [] args){

        // mybatis配置文件,这个地方的root地址为resources,因此我们的配置文件要放置在resources目录下

        String resource = "mybatis-conf.xml";

        // 配置文件流

        InputStream stream = null;

        try {

            // 得到配置文件流

            stream = Resources.getResourceAsStream(resource);

            // 创建会话工厂,传入mybatis的配置文件信息

            SqlSessionFactory factory = new SqlSessionFactoryBuilder().build(stream);

            //通过工厂,得到sqlSession

            SqlSession session = factory.openSession();

            User user = session.selectOne("findById",2);

[session.commit();](http://session.commit();/)

            System.out.println("ID:"+user.getId()+**”****\n名字:"**+user.getName()+**”****\n手机号:"**+user.getPhone());

        }catch (IOException e){

            e.printStackTrace();

        }

    }

}
屏幕快照 2019-01-09 下午3.35.28.png

此时我们运行一下:

屏幕快照 2019-01-09 下午3.35.51.png

加油~

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 214,100评论 6 493
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 91,308评论 3 388
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 159,718评论 0 349
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 57,275评论 1 287
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 66,376评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,454评论 1 292
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,464评论 3 412
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,248评论 0 269
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,686评论 1 306
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,974评论 2 328
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,150评论 1 342
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,817评论 4 337
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,484评论 3 322
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,140评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,374评论 1 267
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,012评论 2 365
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,041评论 2 351

推荐阅读更多精彩内容

  • MyBatis是一个可以自定义SQL、存储过程和高级映射的持久层框架。MyBatis 摒除了大部分的JDBC代码、...
    七寸知架构阅读 6,704评论 6 56
  • 什么是mybatis MyBatis 是支持定制化 SQL、存储过程以及高级映射的优秀的持久层框架。MyBatis...
    seadragonnj阅读 2,329评论 0 7
  • 1. 简介 1.1 什么是 MyBatis ? MyBatis 是支持定制化 SQL、存储过程以及高级映射的优秀的...
    笨鸟慢飞阅读 5,485评论 0 4
  • Mybatis介绍 MyBatis 本是apache的一个开源项目iBatis, 2010年这个项目由apache...
    day_Sunny阅读 2,657评论 0 6
  • 昨天听他说他喝酒了,让我来开车,心里突然咯噔一下,虽然驾照拿到手了,虽然他回老家下高速后开了一会,可是心里还没...
    一两豆阅读 253评论 0 1