基于MyBatis的增删改查操作

本文涉及的产品
云数据库 RDS MySQL Serverless,0.5-2RCU 50GB
简介: 版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/kese7952/article/details/81484334 MyBtais入...
版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/kese7952/article/details/81484334

MyBtais入门

  1. Mybatis和hibernate的区别
    • hibernate 是一个全表映射的框架,开发人员只需要定义好持久化对象及相对应的映射文件,并且通过hibernate官方提供的方法就可以完成持久化操作,这过程中可以不需要掌握sql语句的书写,就开发效率而言会高于mybatis

    • 缺点:

      • 对sql语句查询的支持比较差
      • 更新数据时,需要发送所以的字段,不支持存储过程
      • 不可通过优化sql来提升性能
    • mybatis是一个半自动映射的框架,需要手工提供POJO、SQL和映射关系相对较hibernate,mybatis需要手写MyBatis的sql语句,工作量较大;

      但可以配置动态SQL,并且优化SQL;支持存储过程,就大中型的项目而言,更推荐MyBatis的使用

    2.MyBatis的入门程序

    2.1 在项目中引入jar包:

    1533547178388

    2.2 创建数据库

    -- 创建数据库,名称为 mybatis_study
    create database mybatis_study;
    -- 选中名称为 mybatis_study的数据库
    use mybatis_study;
    -- 创建用户表,
    create table user(
    
    # id 整数类型,为主键、自动递增
    
    id int primary key auto_increment,
    
    # 用户名 字符串类型,长度30个字符
    
    username varchar(30),
    
    # 密码 字符串类型,长度30个字符
    
    password varchar(30)
    );

    2.3 持久化类

    package cn.javabs.mybatisdemo.pojo;
    public class User{
       private Integer id;
       private String username;
       private String password;
       // 生成getter和setter方法
       // 覆写 tostring方法
    }

    2.4 持久化映射信息配置文件

    在src下创建cn.javabs.mybatisdemo.mapper包,用于存放映射文件,命名为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">
    <mapper namespace="cn.javabs.mybatisdemo.mapper.UserMapper">
    
    <!-namespace的属性值命名规范为:映射信息文件所在的包名+映射文件名称-->
    <mapper namespace ="cn.javabs.mybatisdemo.mapper.UserMapper">
    <!--insert标签代表插入标签,parameterType为传入参数的类型-->
    <insert id="addUser" parameterType="cn.javabs.mybatisdemo.pojo.User">
        insert into user(id,username,password) values(#{id},#{username},#{password})
    </insert>
    </mapper>

    2.5 持久化核心配置文件:

    在src下创建一个xml文件,命名为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="mysql">
            <environment id="mysql">
                <transactionManager type="jdbc"></transactionManager>
                <dataSource type="POOLED">
                    <property name="driver" value="com.mysql.jdbc.Driver"/>
                    <property name="url" value="jdbc:mysql:///user"/>
                    <property name="username" value="root"/>
                    <property name="password" value="sorry"/>
                </dataSource>
            </environment>
        </environments>
        <mappers>
            <mapper resource="cn/javabs/mybatisdemo/mapper/UserMapper.xml" />
        </mappers>
       </configuration>

  • 添加用户

    public class TestMybatisData{
       @Test
    public void addUserTest(){
        // 通过字节输入流获取核心配置文件
        InputStream is = TestMybatisData.class.getClassLoader.getResouceAsStream("mybatis-config");
        // 构建Sql会话工厂对象
        SqlSessionFactory sessionFactory = new SqlSessionFactoryBuild().builder(is);
        // 通过会话工厂对象获取session
           SqlSession session =  sessionFactory.openSession();
           // 实例化持久化对象,并且完成赋值操作
           User u = new User();
           u.setId(3);
           u.setUsername("李白");
           //insert 中传入的第一个参数为映射文件的全包名+映射文件名
           //              第二个参数为持久化对象
          int rows =  session.insert("cn.javabs.mybatisdemo.mapper.UserMapper.addUser",u);
          if(rows > 0){
              System.out.println("执行成功,已插入"+rows+"条语句");
          }else{
                System.out.println("执行失败);
          }
    }
       session.commit();
       session.close();
    }
    

  • 删除用户

       @Test
    public void delUserById() {
        InputStream is = TestData.class.getClassLoader().getResourceAsStream("mybatis-config.xml");
        SqlSessionFactory sessionFactory = new SqlSessionFactoryBuilder().build(is);
        SqlSession session = sessionFactory.openSession();
        User u = new User();
        u.setId(3);
        int rows = session.delete("cn.javabs.mybatisdemo.mapper.UserMapper.deleteUserById",u);
        if(rows>0){
            System.out.println("语句执行成功,删除"+rows+"条数");
        }else{
            System.out.println("删除语句失败");
        }
        session.commit();
        session.close();
    }     

    映射配置文件:

    <delete id="deleteUserById" parameterType="Integer">
        delete from user where id = #{id}
    </delete>

  • 更改用户

       @Test
    public void updateUserTest {
        InputStream is = TestData.class.getClassLoader().getResourceAsStream("mybatis-config.xml");
        SqlSessionFactory sessionFactory = new SqlSessionFactoryBuilder().build(is);
        SqlSession session = sessionFactory.openSession();
        User u = new User();
        u.setId(31);
        u.setUsername("赵云");
        int rows = session.update("cn.javabs.mybatisdemo.mapper.UserMapper.updateUserById", u);
        if(rows > 0){
            System.out.println("更新了"+rows+"条记录");
        }else{
            System.out.println("更新失败");
        }
    
        session.commit();
        session.close();
    }

    配置文件可以更改为

    <update id="updateUserById" parameterType="cn.javabs.mybatisdemo.po.User">
        update user set username = #{username} where id = #{id}
    </update>

  • 查询全部用户

       @Test
    public void findAll() {
        InputStream is = TestData.class.getClassLoader().getResourceAsStream("mybatis-config.xml");
        SqlSessionFactory sessionFactory = new SqlSessionFactoryBuilder().build(is);
        SqlSession session = sessionFactory.openSession();
        User u = new User();
        u.setId(3);
         List<Object> list = session.selectList("cn.javabs.mybatisdemo.mapper.UserMapper.queryUser");
    
        if(list.size()>0){
            for (int i = 1; i < list.size(); i++) {
                System.out.println("。。。"+list.toString());
            }
        }else{
            System.out.println("查询语句失败");
        }
        session.commit();
        session.close();
    }

    配置文件可以更改为:

    <select id="queryUser"  resultType="cn.javabs.mybatisdemo.po.User">
        select * from user
    </select>

  • 根据Id查询用户

    @Test
    public void findUserById() {
        InputStream is = TestData.class.getClassLoader().getResourceAsStream("mybatis-config.xml");
        SqlSessionFactory sessionFactory = new SqlSessionFactoryBuilder().build(is);
        SqlSession session = sessionFactory.openSession();
        User u = new User();
        u.setId(31);
        u = session.selectOne("cn.javabs.mybatisdemo.mapper.UserMapper.queryUserById", u);
        if(u != null ){
            System.out.println("当前用户是:"+u);
        }else{
            System.out.println("查询失败");
        }
    
        session.commit();
        session.close();
    }

    配置文件可以更改为

    <select id="queryUserById" parameterType="Integer" resultType="cn.javabs.mybatisdemo.po.User">
        select * from user where id  = #{id}
    </select>
相关实践学习
基于CentOS快速搭建LAMP环境
本教程介绍如何搭建LAMP环境,其中LAMP分别代表Linux、Apache、MySQL和PHP。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助 &nbsp; &nbsp; 相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
目录
相关文章
|
3月前
|
存储 Java 数据库连接
MyBatis-Plus 基础操作指南:实现高效的增删改查
MyBatis-Plus 基础操作指南:实现高效的增删改查
126 0
|
3月前
|
关系型数据库 Java 数据库连接
MyBatis-Plus简介和入门操作
【1月更文挑战第5天】 一、MyBatis-Plus简介 二、 MyBatis-Plus操作 1、准备数据库脚本 2、准备boot工程 3、导入依赖 4、配置文件和启动类 5、功能编码 6、测试和使用
105 1
|
3月前
|
SQL Java 数据库连接
初识MyBatis(搭建MyBatis、简单增删改查、核心配置文件讲解及获取参数值)
初识MyBatis(搭建MyBatis、简单增删改查、核心配置文件讲解及获取参数值)
|
28天前
|
SQL JavaScript Java
springboot+springm vc+mybatis实现增删改查案例!
springboot+springm vc+mybatis实现增删改查案例!
23 0
|
3月前
|
SQL Java 数据库连接
用springboot mybatis写一个增删改查
用springboot mybatis写一个增删改查
23 0
|
3月前
|
SQL Oracle 关系型数据库
整合Mybatis-Plus高级,Oracle 主键Sequence,Sql 注入器实现自定义全局操作
整合Mybatis-Plus高级,Oracle 主键Sequence,Sql 注入器实现自定义全局操作
87 0
|
3月前
|
SQL Java 数据库连接
MyBatis的多表操作
MyBatis的多表操作
19 0
|
1月前
|
SQL druid Java
【MyBatis】2、MyBatis 的动态 SQL 和增删改操作
【MyBatis】2、MyBatis 的动态 SQL 和增删改操作
29 0
|
2月前
|
XML Java 数据库连接
【JavaEE进阶】 MyBatis使用XML实现增删改查
【JavaEE进阶】 MyBatis使用XML实现增删改查
|
2月前
|
Java 关系型数据库 数据库连接
【JavaEE进阶】 MyBatis使用注解实现增删改查
【JavaEE进阶】 MyBatis使用注解实现增删改查