MyBatis学习笔记

一、简介

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

二、为什么需要Mybatis
  • 帮助程序员将数据存入到数据库中
  • 方便
  • 传统的JDBC代码太复杂了,简化,框架,自动化
  • 更容易上手

优点

  • 简单易学
  • 灵活
  • sql和代码的分离,提高了可维护性
  • 提供映射标签,支持对象与数据库的orm字段关系映射
  • 提供对象关系映射标签,支持关系组建维护
  • 提供xml标签,支持编写sql动态sql
三、如何获得Mybatis
  1. maven仓库:
<!-- https://mvnrepository.com/artifact/org.mybatis/mybatis -->
<dependency>
    <groupId>org.mybatis</groupId>
    <artifactId>mybatis</artifactId>
    <version>3.5.2</version>
</dependency>
  1. GitHub:http://github.com/mybatis/mybatis-3/releases
  2. 中文文档:https://mybatis.org/mybatis-3/zh/index.html
四、第一个Mybatis程序

需要环境:JDK1.8+Mysql5.7+maven3.6.1+IDEA
一、搭建环境
1.数据库

//建库
create database mybatis;
//使用库
use mybatis;
//建表
 create table user(
    id int(20) not null primary key,
     name varchar(30) default null,
     pwd varchar(30) default null
     )engine=innodb default charset=utf8;
 //插入数据
insert into user(id,name,pwd) values    
     (1,'张三','123456'),
     (2,'李四','123456'),
     (3,'王五','123456');

二、工程搭建
1.打开IDEA,选择一个普通的maven项目,删除src文件夹
2.点击右上角的数据库,连接数据库
在这里插入图片描述

2.导入依赖

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>
    <!--父工程-->
    <groupId>com.ly</groupId>
    <artifactId>mybatis</artifactId>
    <version>1.0-SNAPSHOT</version>
    <!-- 导入依赖-->
    <dependencies>
        <!-- mysql驱动-->
        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <version>5.1.47</version>
        </dependency>

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

        <!-- junit -->
        <dependency>
            <groupId>junit</groupId>
            <artifactId>junit</artifactId>
            <version>4.12</version>
            <scope>test</scope>
        </dependency>
    </dependencies>
</project>

3.创建一个子工程
4.创建工具类MybatisUtils

import org.apache.ibatis.session.SqlSessionFactoryBuilder;

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

public class MybatisUtils {
    private static SqlSessionFactory sqlSessionFactory;


    static {
        try {
            //使用Mybatis第一步:获取SqlSessionFactory对象
            String resource = "mybatis-config.xml";
            InputStream inputStream = Resources.getResourceAsStream(resource);
            SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
        }catch (IOException e){
            e.printStackTrace();
        }
    }

    //既然有了SqlSession,顾名思义,我们就可以从中获取SqlSession的实例了
    //SqlSession完全包涵了面向数据库执行SQL命令所需的所有方法
    public static SqlSession getSqlSession(){
        return sqlSessionFactory.openSession();
    }
}

4.编写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="development">
        <environment id="development">
            <transactionManager type="JDBC"/>
            <dataSource type="POOLED">
                <property name="driver" value="com.mysql.jdbc.Driver"/>
                <property name="url" value="jdbc:mysql://localhost:3306/mybatis?
useSSL=true&amp;useUnicode=true&amp;characterEncoding=UTF-8"/>
                <property name="username" value="root"/>
                <property name="password" value="root123"/>
            </dataSource>
        </environment>
    </environments>

    <!--每一个Mapper.xml都需要在mybatis核心配置文件中注册-->
    <mappers>
        <mapper resource="com/ly/dao/UserMapper.xml"/>
    </mappers>
</configuration>

5.实体类

package com.ly.pojo;

//实体类
public class User {
    private int id;
    private String name;
    private String pwd;

    public User() {
    }

    public User(int id,String name,String pwd){
        this.id = id;
        this.name = name;
        this.pwd = pwd;
    }

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

    public void setName(String name) {
        this.name = name;
    }

    public void setPwd(String pwd) {
        this.pwd = pwd;
    }

    public int getId() {
        return id;
    }

    public String getName() {
        return name;
    }

    public String getPwd() {
        return pwd;
    }

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

6.Dao接口

package com.ly.dao;

import com.ly.pojo.User;

import java.util.List;

public interface UserDao {
    List<User> getUserList();
}

7.接口实现类由原来的UserDaolmpl转变为一个Mapper配置文件

<?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">
            <!--绑定一个对应的DAO/Mapper接口-->
<mapper namespace="com.ly.dao.UserDao">
    <!--select查询语句-->
    <select id="getUserList" resultType="com.ly.pojo.User">
        select * from mybatis.user
    </select>
</mapper>

7.测试
junit测试

package com.ly.dao;

import com.ly.pojo.User;
import com.ly.utils.MybatisUtils;
import org.apache.ibatis.session.SqlSession;
import org.junit.Test;

import java.util.List;

public class UserDaoTest {
    @Test
    public void test(){
        //第一步:获取SqlSession对象
        SqlSession sqlSession =  MybatisUtils.getSqlSession();

        //获取getMapper
        UserDao userDao = sqlSession.getMapper(UserDao.class);
        List<User> userList = userDao.getUserList();

        for (User user : userList){
            System.out.println(user);
        }

        //关闭sqlSession
        sqlSession.close();
    }
}

五、结果及目录结构

在这里插入图片描述
注意:namespace中的包命要和Dao/mapper接口名保持一致
比如:将接口名改为UserMapper

<mapper namespace="com.ly.dao.UserMappper">
    <!--select查询语句-->
    <select id="getUserList" resultType="com.ly.pojo.User">
        select * from mybatis.user
    </select>
</mapper>
六、CRUD操作

注意:增删改需要提交事务
一、步骤:
1.编写接口
2.编写对应的mapper中的sql语句
3.测试

二、操作
1.select:指定id查询用户

  • id:就是对应的namespace的方法名
  • resultType:Sql语句可执行的返回值
  • parameterType:参数类型
    2.insert
    3.update
    4.delete
//UserMapper.java
package com.ly.dao;

import com.ly.pojo.User;
import com.sun.xml.internal.bind.v2.model.core.ID;

import java.util.List;

public interface UserMappper {
    //查询全部用户
    List<User> getUserList();
    //根据id查询用户
    User getUserById(int id);
    //插入一个用户
    int addUser(User user);
    //修改用户
    int updateUser(User user);
    //删除一个用户
    int deleteUser(int id);
}
//UserMapper.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">
            <!--绑定一个对应的DAO/Mapper接口-->
<mapper namespace="com.ly.dao.UserMappper">
    <!--select查询语句-->
    <select id="getUserList" resultType="com.ly.pojo.User">
        select * from mybatis.user
    </select>
    <!--指定id查询-->
    <select id="getUserById" parameterType="int" resultType="com.ly.pojo.User">
        select * from mybatis.user where id=#{id}
    </select>
    <!--插入一个用户-->
    <insert id="addUser" parameterType="com.ly.pojo.User">
        insert into mybatis.user (id, name, pwd) values (#{id},#{name},#{pwd});
    </insert>
    <!--修改用户-->
    <update id="updateUser" parameterType="com.ly.pojo.User">
        update mybatis.user set name=#{name},pwd=#{pwd} where id=#{id};
    </update>
    <!--删除一个用户-->
    <delete id="deleteUser" parameterType="int">
        delete from mybatis.user where id = #{id};
</delete>
</mapper>
//UserDaoTest.java  测试类
package com.ly.dao;

import com.ly.pojo.User;
import com.ly.utils.MybatisUtils;
import org.apache.ibatis.session.SqlSession;
import org.junit.Test;

import java.util.List;

public class UserDaoTest {
  /*  @Test
    public void test(){
        //第一步:获取SqlSession对象
        SqlSession sqlSession =  MybatisUtils.getSqlSession();

        //获取getMapper
        UserMappper userMappper = sqlSession.getMapper(UserMappper.class);
        List<User> userList = userMappper.getUserList();

        for (User user : userList){
            System.out.println(user);
        }

        //关闭sqlSession
        sqlSession.close();
    }
    //指定id查询
    @Test
    public void getUserById(){
        SqlSession sqlSession =  MybatisUtils.getSqlSession();
        UserMappper mapper = sqlSession.getMapper(UserMappper.class);
        User user = mapper.getUserById(1);
        System.out.println(user);
        sqlSession.close();
    }
    //插入一个用户
    @Test
    public void addUser(){
        SqlSession sqlSession =  MybatisUtils.getSqlSession();
        UserMappper mapper = sqlSession.getMapper(UserMappper.class);
        int res = mapper.addUser(new User(4,"哈哈","123333"));
        if(res>0){
            System.out.println("插入成功");
        }
        //提交事务
        sqlSession.commit();
        sqlSession.close();
    }
  //修改用户
  @Test
    public void updateUser(){
      SqlSession sqlSession = MybatisUtils.getSqlSession();
      UserMappper mappper = sqlSession.getMapper(UserMappper.class);
      mappper.updateUser(new User(4,"呵呵","123"));
      sqlSession.commit();
      sqlSession.close();
  }
  */
  //删除一个用户
    @Test
    public void delectUser(){
        SqlSession sqlSession = MybatisUtils.getSqlSession();
        UserMappper mappper = sqlSession.getMapper(UserMappper.class);
        mappper.deleteUser(4);
        sqlSession.commit();
        sqlSession.close();
    }

}
数据治理是确保数据准确性、可靠性、安全性、可用性和完整性的体系和框架。它定义了组织内部如何使用、存储、保护和共享数据的规则和流程。数据治理的重要性随着数字化转型的加速而日益凸显,它能够提高决策效率、增强业务竞争力、降低风险,并促进业务创新。有效的数据治理体系可以确保数据在采集、存储、处理、共享和保护等环节的合规性和有效性。 数据质量管理是数据治理中的关键环节,它涉及数据质量评估、数据清洗、标准化和监控。高质量的数据能够提升业务决策的准确性,优化业务流程,并挖掘潜在的商业价值。随着大数据和人工智能技术的发展,数据质量管理在确保数据准确性和可靠性方面的作用愈发重要。企业需要建立完善的数据质量管理和校验机制,并通过数据清洗和标准化提高数据质量。 数据安全与隐私保护是数据治理中的另一个重要领域。随着数据量的快速增长和互联网技术的迅速发展,数据安全与隐私保护面临前所未有的挑战。企业需要加强数据安全与隐私保护的法律法规和技术手段,采用数据加密、脱敏和备份恢复等技术手段,以及加强培训和教育,提高安全意识和技能水平。 数据流程管理与监控是确保数据质量、提高数据利用率、保护数据安全的重要环节。有效的数据流程管理可以确保数据流程的合规性和高效性,而实时监控则有助于及时发现并解决潜在问题。企业需要设计合理的数据流程架构,制定详细的数据管理流程规范,并运用数据审计和可视化技术手段进行监控。 数据资产管理是将数据视为组织的重要资产,通过有效的管理和利用,为组织带来经济价值。数据资产管理涵盖数据的整个生命周期,包括数据的创建、存储、处理、共享、使用和保护。它面临的挑战包括数据量的快速增长、数据类型的多样化和数据更新的迅速性。组织需要建立完善的数据管理体系,提高数据处理和分析能力,以应对这些挑战。同时,数据资产的分类与评估、共享与使用规范也是数据资产管理的重要组成部分,需要制定合理的标准和规范,确保数据共享的安全性和隐私保护,以及建立合理的利益分配和权益保障机制。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值