首页 > 其他分享 >3、Mybatis之CURD

3、Mybatis之CURD

时间:2023-05-20 19:44:27浏览次数:44  
标签:UserMapper void userMapper SqlSession CURD user Mybatis sqlSession

3.1、创建通用工具类

image

package org.rain.mybatis.utils;

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;

/**
 * @author liaojy
 * @date 2023/5/19 - 7:41
 */
public class SqlSessionUtils {
    public static SqlSession getSqlSession(){
        SqlSession sqlSession = null;

        try {
            //读取MyBatis核心配置文件的输入流
            InputStream is = Resources.getResourceAsStream("mybatis-config.xml");
            //创建SqlSessionFactoryBuilder对象
            SqlSessionFactoryBuilder sqlSessionFactoryBuilder = new SqlSessionFactoryBuilder();
            //通过核心配置文件所对应的字节输入流创建工厂类SqlSessionFactory,用于生产SqlSession对象
            SqlSessionFactory sqlSessionFactory = sqlSessionFactoryBuilder.build(is);
            //创建自动提交事务的SqlSession对象
            sqlSession = sqlSessionFactory.openSession(true);
        } catch (IOException e) {
            e.printStackTrace();
        }
        return sqlSession;
    }
}

3.2、修改功能示例

3.2.1、接口方法

image

void updateUser();

3.2.2、映射文件

image

    <!--void updateUser();-->
    <update id="updateUser">
        update t_user set username='root',password='123' where id = 3
    </update>

3.2.3、测试方法

image

    @Test
    public void testUpdate(){
        SqlSession sqlSession = SqlSessionUtils.getSqlSession();
        UserMapper userMapper = sqlSession.getMapper(UserMapper.class);
        userMapper.updateUser();
        sqlSession.close();
    }

3.2.4、执行效果

image

-----------------------------------分割线-----------------------------------

image

3.3、删除功能示例

3.3.1、接口方法

image

void deleteUser();

3.3.2、映射文件

image

    <!--void deleteUser();-->
    <delete id="deleteUser">
        delete from t_user where id = 2
    </delete>

3.3.3、测试方法

image

    @Test
    public void testDelete(){
        SqlSession sqlSession = SqlSessionUtils.getSqlSession();
        UserMapper userMapper = sqlSession.getMapper(UserMapper.class);
        userMapper.deleteUser();
        sqlSession.close();
    }

3.3.4、执行效果

image

-----------------------------------分割线----------------------------------

image

3.4、查询单条数据功能示例

3.4.1、接口方法

image

User getUserById();

3.4.2、映射文件

image

注意:
查询的标签select必须设置属性resultType或resultMap,用于设置实体类和数据库表的映射关系
resultType:自动映射,设置查询结果要转换为的Java类型,用于属性名和字段名一致的情况
resultMap:自定义映射,用于一对多或多对一,或用于字段名和属性名不一致的情况

    <!--User getUserById();-->
    <select id="getUserById" resultType="org.rain.mybatis.pojo.User">
        select * from t_user where id = 3
    </select>

3.4.3、测试方法

image

    @Test
    public void testGetUserById(){
        SqlSession sqlSession = SqlSessionUtils.getSqlSession();
        UserMapper userMapper = sqlSession.getMapper(UserMapper.class);
        User user = userMapper.getUserById();
        System.out.println(user);
        sqlSession.close();
    }

3.4.4、执行效果

image

3.5、查询多条数据功能示例

3.5.1、接口方法

image

List<User> getAllUser();

3.5.2、映射文件

image

    <!--List<User> getAllUser();-->
    <select id="getAllUser" resultType="org.rain.mybatis.pojo.User">
        select * from t_user
    </select>

3.5.3、测试方法

image

    @Test
    public void testGetAllUser(){
        SqlSession sqlSession = SqlSessionUtils.getSqlSession();
        UserMapper userMapper = sqlSession.getMapper(UserMapper.class);
        List<User> allUser = userMapper.getAllUser();
        for (User user : allUser) {
            System.out.println(user);
        }
        sqlSession.close();
    }

3.5.4、执行效果

image

标签:UserMapper,void,userMapper,SqlSession,CURD,user,Mybatis,sqlSession
From: https://www.cnblogs.com/Javaer1995/p/17413725.html

相关文章

  • Mybatisplus3.5.1+shardingsphere-jdbc5.1.1分表
    注意使用雪花ID的话,查询ID时候必须使用long类型的ID,不要使用MP自带的默认的Serializable类型。否则会提示分片主键id数据类型和分片算法不匹配Inlineshardingalgorithmsexpressionxxxandshardingcolumnxxnotmatch错误。。。导入依赖<!--sharding-jdbc分库分表-->......
  • Mybatis Plus 源码分析
    ====================================MybatisPlus源码分析入口:com.baomidou.mybatisplus.autoconfigure.MybatisPlusAutoConfiguration#afterPropertiesSetcom.baomidou.mybatisplus.autoconfigure.MybatisPlusAutoConfiguration#sqlSessionFactorycom.baomidou.mybatisplus.a......
  • MyBatis 在大数据量下使用流式查询进行数据同步
    通常的数据同步中,如果数据量比较少的话可以直接全量同步,默认情况下,完整的检索结果集会将其存储在内存中。在大多数情况下,这是最有效的操作方式,并且由于MySQL网络协议的设计,因此更易于实现。但是如果数据量很大的话,全量同步需要大量的内存,如果内存不足的话则可能会导致内存溢出。......
  • Mybatis框架1
    XML配置:MyBatis的配置文件包含了会深深影响Mybatis行为的设置和属性信息。配置文档的顶层结构如下:configuration(配置)properties(属性)settings(设置)typeAliases(类型别名)typeHandlers(类型处理器)objectFactory(对象工厂)plugins(插件)enviroment(环境配置)environment(环境变量)transactionMa......
  • mybatis plus实体类中字段映射mysql中的json格式方式
    packagecom.example.springbootstudy.entity;importcom.baomidou.mybatisplus.annotation.TableField;importcom.baomidou.mybatisplus.annotation.TableId;importcom.baomidou.mybatisplus.annotation.TableName;importcom.baomidou.mybatisplus.extension.handlers.Fas......
  • 分享一下mybatisPlus新代码生成器3.5.1以上
    pom引入:有MP了就不要再引入mybatis了,会出bug的<!--mybatis-plus--><dependency><groupId>com.baomidou</groupId><artifactId>mybatis-plus-boot-starter</artifactId><version>3.5.3.1</......
  • Mybatis查询
    查询查询的数据为单条实体类使用实体类进行接受即可,或者使用list,map接口均可.后面两者比较浪费使用实体类接受mapper接口:UserselectUserById(intuserid);映射文件:使用实体类<!--第二个一致,对应方法名UserselectUserById(intuserid);--><selec......
  • 老杜MyBatis框架从入门到精通(三)使用MyBatis完成CRUD
    mybatis做为目前国内最为流行的开源orm框架,我们平时在使用时会感受到其带来的诸多便利,但是很少去深入分析,mybatis源码代码量不多,功能丰富,是一个很好的学习样例,本系列文章就和大家一起来学习mybatis框架本系列笔记根据动力节点B站上老杜讲的mybatis教程整理~学习地址:https://www......
  • Mybatis和Mybatis-Plus对MySQL中json类型处理
    目录1MySQL中json类型处理1.1引言1.2准备建表1.3Mybatis1.3.1实体类1.3.2BaseTypeHandler1.3.3application.yml1.3.4修改SQL文件1.4MybatisPlus1.4.1实体类1.4.2application.yml1.4.3SQL文件1MySQL中json类型处理1.1引言mysql5.7开始支持json类型字段点击了解M......
  • 聊聊Mybatis集成Spring的原理
    一般都是研究框架源码,我为什么要反过来研究集成原理呢?在我自己看来,集成虽然比较简单,但要求的细节比较多,需要掌握根本性的东西才能做到集成。Mybatis集成Spring用到了FactoryBean以及BeanDefinition注册的原理,从这两个维度来实现集成,而我们单独学习Spring时,一般会忽略这两点。My......