mybatis入门

1、Mybatis介绍

mybatis 是一个优秀的基于java的持久层框架,它内部封装了jdbc,使开发者只需要关注sql语句本身,而不需要花费精力去处理加载驱动、创建连接、创建statement等繁杂的过程。
mybatis通过xml或注解的方式将要执行的各种 statement配置起来,并通过java对象和statement中sql的动态参数进行映射生成最终执行的sql语句。
最后mybatis框架执行sql并将结果映射为java对象并返回。采用ORM思想解决了实体和数据库映射的问题,对jdbc 进行了封装,屏蔽了jdbc api 底层访问细节,使我们不用与jdbc api 打交道,就可以完成对数据库的持久化操作。

2、使用Mybatis步骤

(1)、建项目

(2)、导入mybatis的jar包

<dependencies>
<!--        mysql-->
        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <version>8.0.26</version>
        </dependency>

<!--        mybatis-->
        <dependency>
            <groupId>org.mybatis</groupId>
            <artifactId>mybatis</artifactId>
            <version>3.4.6</version>
        </dependency>
    </dependencies>

(3)、创建表

/*
 Navicat Premium Data Transfer

 Source Server         : zyd
 Source Server Type    : MySQL
 Source Server Version : 80026
 Source Host           : 127.0.0.1:3306
 Source Schema         : b0374

 Target Server Type    : MySQL
 Target Server Version : 80026
 File Encoding         : 65001

 Date: 06/09/2022 10:01:10
*/

SET NAMES utf8mb4;
SET FOREIGN_KEY_CHECKS = 0;

-- ----------------------------
-- Table structure for user
-- ----------------------------
DROP TABLE IF EXISTS `user`;
CREATE TABLE `user`  (
  `id` int(0) NOT NULL AUTO_INCREMENT,
  `name` varchar(19) CHARACTER SET utf8 COLLATE utf8_croatian_ci NOT NULL,
  `pass` varchar(20) CHARACTER SET utf8 COLLATE utf8_croatian_ci NOT NULL,
  PRIMARY KEY (`id`) USING BTREE
) ENGINE = InnoDB AUTO_INCREMENT = 5 CHARACTER SET = utf8 COLLATE = utf8_croatian_ci ROW_FORMAT = Dynamic;

-- ----------------------------
-- Records of user
-- ----------------------------
INSERT INTO `user` VALUES (1, '吕布', '123');
INSERT INTO `user` VALUES (2, '貂蝉', '456');

SET FOREIGN_KEY_CHECKS = 1;

(4)、建一个实体类

package com.buka.po;

public class User {
    private int id;
    private String name;
    private String pass;

    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 getPass() {
        return pass;
    }

    public void setPass(String pass) {
        this.pass = pass;
    }

    @Override
    public String toString() {
        return "User{" +
                "id=" + id +
                ", name='" + name + '\'' +
                ", pass='" + pass + '\'' +
                '}';
    }
}

(5)、配置Mybatis的配置文件

<?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="dev">
        <environment id="dev">
            <transactionManager type="JDBC"></transactionManager>  <!-- 事务管理器-->
            <dataSource type="POOLED"><!-- 连接池技术-->
                <property name="url" value="jdbc:mysql://127.0.0.1:3306/b0374"/>
                <property name="driver" value="com.mysql.cj.jdbc.Driver"/>
                <property name="username" value="root"/>
                <property name="password" value="root"/>
            </dataSource>
        </environment>
    </environments>



<!--    关联映射文件-->
    <mappers>
        <mapper resource="mapper/UserMapper.xml"></mapper>
    </mappers>
</configuration>

(6)、sql语句配置文件(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="userMapper">
    <select id="selAll" >  --  sql语句的名字
        select * from user
    </select>
</mapper>

(7)、测试Mybatis是否可用

@Test
    public void test1() throws IOException {
        //1,读取配置文件
        InputStream resourceAsStream = Resources.getResourceAsStream("SqlMyBatis.xml");
        //2,创建selSession
        SqlSessionFactory build = new SqlSessionFactoryBuilder().build(resourceAsStream);
        //3,从工厂取一个链接独享
        SqlSession sqlSession = build.openSession();
        //4,执行sql
        List<User> users = sqlSession.selectList("userMapper.selAll");
        //5,打印结果
        System.out.println(users);
        //6,归还链接对象
        sqlSession.close();
    }

添加语句:

 @Test
    public void test2() throws IOException {
        User users=new User();
        users.setId(3);
        users.setName("宫本");
        users.setPass("789");


        //1,读取配置文件
        InputStream resourceAsStream = Resources.getResourceAsStream("SqlMyBatis.xml");
        //2,创建selSession
        SqlSessionFactory build = new SqlSessionFactoryBuilder().build(resourceAsStream);
        //3,从工厂取一个链接独享
        SqlSession sqlSession = build.openSession();
        //4,执行sql
        sqlSession.insert("userMapper.addUser",users);
        //5,提交事务
        sqlSession.commit();
        //6,归还链接对象
        sqlSession.close();
    }

xml文件

<!--    增加-->
    <insert id="addUser" parameterType="com.buka.po.User">
        insert into user (id,name,pass) values (#{id},#{name},#{pass})
    </insert>

3、注意事项

  • 插入语句使用insert标签

  • 在映射文件中使用parameterType属性指定要插入的数据类型

  • Sql语句中使用#{实体属性名}方式引用实体中的属性值

  • 插入操作使用的API是sqlSession.insert(“命名空间.id”,实体对象);

  • 插入操作涉及数据库数据变化,所以要使用sqlSession对象显示的提交事务,即sqlSession.commit()

待补充。。。。。。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值