基于MyBatis的增删改查的基础操作

本文涉及的产品
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
云数据库 RDS MySQL,集群版 2核4GB 100GB
推荐场景:
搭建个人博客
云数据库 RDS MySQL,高可用版 2核4GB 50GB
简介: 基于MyBatis的增删改查的基础操作

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包:


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方法--快捷键是---> alt +shift+s  选择r
   // 覆写 tostring方法--快捷键是---> alt +shift+s  选择 s
}

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.mapper.UserMapper">

<!-namespace的属性值命名规范为:映射信息文件所在的包名+映射文件名称-->
<mapper namespace ="cn.javabs.mybatisdemo.mapper.UserMapper">
<!--insert标签代表插入标签,parameterType为传入参数的类型-->
<insert id="addUser" parameterType="cn.javabs.mybatis.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/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("执行失败);
      }
}
}

删除用户

   @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.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.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.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.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.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.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.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
目录
相关文章
|
7天前
|
SQL 存储 Java
基于MyBatis的增删改查操作
基于MyBatis的增删改查操作
13 1
|
4天前
|
SQL Java 数据库连接
2万字实操案例之在Springboot框架下基于注解用Mybatis开发实现基础操作MySQL之预编译SQL主键返回增删改查
2万字实操案例之在Springboot框架下基于注解用Mybatis开发实现基础操作MySQL之预编译SQL主键返回增删改查
15 2
|
23天前
|
SQL Java 数据库连接
MyBatis入门——MyBatis的基础操作(2)
MyBatis入门——MyBatis的基础操作(2)
14 4
|
9天前
|
SQL Java 数据库连接
JavaWeb基础第三章(MyBatis的应用,基础操作与动态SQL)
JavaWeb基础第三章(MyBatis的应用,基础操作与动态SQL)
|
1月前
|
Java 关系型数据库 数据库连接
Mybatis实现增删改查
本文介绍了Mybatis实现增删改查的步骤。首先,需在项目lib目录下添加Mybatis核心及依赖jar包,包括MySQL驱动。接着配置mybatis.xml文件,包括数据库连接信息、日志设置和映射文件。接着创建数据库并设计实体类User。创建UserMapper接口及其XML文件,包含增删改查方法。再编写MybatisUtils工具类以获取SqlSession。最后通过示例展示了添加、修改、查询和删除操作的代码实现。
25 1
|
1月前
|
Java 数据库连接 数据库
spring+mybatis_编写一个简单的增删改查接口
spring+mybatis_编写一个简单的增删改查接口
28 2
|
1月前
|
SQL Java 数据库连接
【mybatis】动态sql之批量增删改查
【mybatis】动态sql之批量增删改查
17 0
|
1月前
|
SQL Java 数据库连接
Javaweb之Mybatis的基础操作之查询操作的详细解析
Javaweb之Mybatis的基础操作之查询操作的详细解析
38 0
|
1月前
|
SQL Java 数据库连接
Javaweb之Mybatis的基础操作之新增和更新操作的详细解析
Javaweb之Mybatis的基础操作之新增和更新操作的详细解析
32 0
|
1月前
|
SQL 安全 Java
Javaweb之Mybatis的基础操作之删除的详细解析
Javaweb之Mybatis的基础操作之删除的详细解析
17 0