java学习之MybBaits

0x00前言

我前面使用的jdbc和jdbc的工具类集成的但是它们在少部分代码的情况下会会简单,但是以后如果项目较大jdbc的固定代码会很难维护,如果使用框架会简单很多,也标志着java学习正式进入到框架阶段

0x01配置MyBaits

0x1创建模块,导入坐标

在maven的配置文件中pom.xml中加入所需要的jar包


        org.mybatis
        mybatis
        3.4.5

        mysql
        mysql-connector-java
        5.1.6

        junit
        junit
        4.11
        test

0x2配置数据库连接文件

修改自己的数据库地址和密码;


0x3编写sql映射文件

这个文件存在的意义是为了以后的开发,查询那个表那个表的语句就写一个这样的映射表,方便管理和维护


        select * from user;

在数据库配置文件中要加入,文件名就是你的sql映射文件


0x02入门使用

0x1定义实体类

实体类的内容为你数据库查询的内容

public class User {
    private String name;
    private String password;
    private String gender;
    private int id;
    public String getName() {
        return name;
    }

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

    public String getPassword() {
        return password;
    }

    public void setPassword(String password) {
        this.password = password;
    }

    public String getGender() {
        return gender;
    }

    public void setGender(String gender) {
        this.gender = gender;
    }

    public int getId() {
        return id;
    }

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

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

0x2基础使用

  1. 加载核心配置文件
  2. 获取sqlSession对象,执行SQL语句
  3. 释放资源
public class demo1 {
    public static void main(String[] args) throws IOException {
        //1.加载mybatis配置文件,获取SqlSessionFactory,sql语句工厂
        InputStream resourceAsStream = Resources.getResourceAsStream("mybatis-config.xml");//输出流获取配置文件地址
        SqlSessionFactoryBuilder sqlSessionFactoryBuilder = new SqlSessionFactoryBuilder();//获取bulid对象然后获取Factory对象
        SqlSessionFactory build = sqlSessionFactoryBuilder.build(resourceAsStream);
        SqlSession sqlSession = build.openSession();
        List users = sqlSession.selectList("test.findAll");//通过sql语句的映射文件去查询
        System.out.println(users);
        sqlSession.close();
    }
}

0x03代理开发

0x1配置映射文件和接口

定义sql映射文件相同名字的Mapper文件,且文件路径要一致,就是要在同一个文件夹下面

UserMapper文件:

public interface UserMapper {
   List findAll();
}

映射文件是在resources下面的所以我们要给它新的一个文件夹他的命名方式是com/test而接口的命名方式是com.test这点是要注意的,随后需要修改

0x2配置核心文件


需要把在mybatis-config中的映射声明改成新的文件路径

0x3使用Mapper开发

  1. 还是先获取配置文件,然后用sqlSession对象获取userMapper.class文件,mapper就是UserMapper的代理对象了
  2. 用代理对象去实现UserMapper中的方法
public class demo2 {
    public static void main(String[] args) throws IOException {
        //1.加载mybatis配置文件,获取SqlSessionFactory,sql语句工厂
        InputStream resourceAsStream = Resources.getResourceAsStream("mybatis-config.xml");
        SqlSessionFactoryBuilder sqlSessionFactoryBuilder = new SqlSessionFactoryBuilder();
        SqlSessionFactory build = sqlSessionFactoryBuilder.build(resourceAsStream);
        SqlSession sqlSession = build.openSession();
        UserMapper mapper = sqlSession.getMapper(UserMapper.class);
        List all = mapper.findAll();
        System.out.println(all);

0x04MyBatis的增删改查

0x1条件查询

如果是对同一个表进行的操作就写在一个接口里面

public interface UserMapper {
   List findAll();
   User selectbyID(int id);
}

在对于的xml文件里面写入对应的sql语句


        select * from user;

        select * from user where id =#{id}

还是用代理的方式进行开发和查询

public class dmo3 {
    public static void main(String[] args) throws IOException {
        InputStream resourceAsStream = Resources.getResourceAsStream("mybatis-config.xml");
        SqlSessionFactoryBuilder sqlSessionFactoryBuilder = new SqlSessionFactoryBuilder();
        SqlSessionFactory build = sqlSessionFactoryBuilder.build(resourceAsStream);
        SqlSession sqlSession = build.openSession();
        UserMapper mapper = sqlSession.getMapper(UserMapper.class);
        User user = mapper.selectbyID(5);
        System.out.println(user);
        sqlSession.close();
    }
}

0x2resultMap标签


这个标签的作用可以用于当你的pojo(实体)对象的属性和你的数据的表明对不上的时候可以做一个属性的映射

  • id=唯一表示符合
  • type=pojo对象
  • property:实体类的属性名

0x3增删改查

学习完这些基础的以后剩下的就是sql代码的问题了列如;模糊查询应该怎么做

1.在对应表的接口写出方法

public interface UserMapper {
   List findlike(String name);
}

写出对于的sql语句,模糊查询select *(需要的属性名) from user(对应的表名) where name like #{name}(条件)


    select * from  user where name like #{mame}

对应的删除方法

public interface UserMapper {
   void delById(int id );
}

    delete * from user where id=#{id}

对应修改方法

void updateId(User user);

    UPDATE user set
                    name =#{name},
                    gender=#{gender},
                    password=#{password}
    where id=#{id}

public static void main(String[] args) throws IOException {
        User user = new User();
        user.setGender("男");
        user.setName("小小");
        user.setPassword("123452");
        user.setId(14);
        InputStream resourceAsStream = Resources.getResourceAsStream("mybatis-config.xml");
        SqlSessionFactoryBuilder sqlSessionFactoryBuilder = new SqlSessionFactoryBuilder();
        SqlSessionFactory build = sqlSessionFactoryBuilder.build(resourceAsStream);
        SqlSession sqlSession = build.openSession();
        UserMapper mapper = sqlSession.getMapper(UserMapper.class);
        mapper.updateId(user);

对应修改方法

void add(User user);

    insert into user (name,password,gender)
    values (#{name},#{password},#{gender})

public static void main(String[] args) throws IOException {
    User user = new User();
    user.setPassword("root");
    user.setName("hellopw");
    user.setGender("女");
    InputStream resourceAsStream = Resources.getResourceAsStream("mybatis-config.xml");
    SqlSessionFactoryBuilder sqlSessionFactoryBuilder = new SqlSessionFactoryBuilder();
    SqlSessionFactory build = sqlSessionFactoryBuilder.build(resourceAsStream);
    SqlSession sqlSession = build.openSession();
    UserMapper mapper = sqlSession.getMapper(UserMapper.class);
    mapper.add(user);
    sqlSession.close();

#0x05总结

其实现在的MyBatis还有一些负责当它和spring一起使用的时候会更简单,需要记住的是sql语句的语法。

Original: https://www.cnblogs.com/0x3e-time/p/16324209.html
Author: 不成大哥不改名
Title: java学习之MybBaits

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/607980/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

  • nginx只允许域名访问,禁止ip访问

    背景:为什么要禁止ip访问页面呢? 这样做是为了避免其他人把未备案的域名解析到自己的服务器IP,而导致服务器被断网,我们可以通过禁止使用ip访问的方法,防止此类事情的发生。 解决方…

    Java 2023年5月30日
    065
  • sentinel基础概念及使用

    点赞再看,养成习惯,微信搜索「 小大白日志」关注这个搬砖人。 文章不定期同步公众号,还有各种一线大厂面试原题、我的学习系列笔记。 什么是sentinel sentinel是Spri…

    Java 2023年6月8日
    085
  • 容器编排工具鉴赏- docker-compose 、Kubernetes、OpenShift、Docker Swarm

    任务编排工具 我们发现我们现在管理微服务比较麻烦,现在只是三个微服务,如果更多会更加麻烦,怎么办呢,下面我们就来学习下docker编排工具 什么是任务编排 编排是一个新的词汇,经过…

    Java 2023年6月15日
    0104
  • ZXing二维码解析&精度提高一瞥

    报表中含有单号二维码,纸质单据经扫描仪扫描为图片后,使用 com.google.zxing解析二维码生成单号供程序使用。在实际使用过程中发现二维码解析时而有失败的情况,对扫描的单据…

    Java 2023年6月5日
    081
  • 第一个mybatis程序

    第一步创建sql create database mybatisuse mybatiscreate table user(  id int(20) not null primary…

    Java 2023年6月7日
    054
  • supervisor 使用教程

    简介: Supervisord 是用 Python 实现的一款的进程管理工具,supervisord 要求管理的程序是非 daemon 程序,supervisord 会帮你把它转成…

    Java 2023年6月5日
    079
  • SpringBoot注解@NotNull,@NotBlank,@Valid自动判定空值

    搭建springboot项目,我们都是采用的Restful接口,那么问题来了,当前端调用接口或者是其他项目调用时,我们不能单一靠调用方来控制参数的准确性,自己也要对一些非空的值进行…

    Java 2023年6月5日
    084
  • 【Java开发基础】生成两个正数之间的随机数

    java;gutter:true; int rangeStart = 99; int rangeEnd = 180;</p> <pre><code&g…

    Java 2023年5月29日
    0105
  • Java 继承

    继承就是子类继承父类的特征和行为,使得子类对象(实例)具有父类的实例域和方法,或子类从父类继承方法,使得子类具有父类相同的行为。 在 Java 中通过 extends 关键字可以申…

    Java 2023年6月5日
    082
  • git拉项目出现的小问题

    问题描述 在IDEA中拉代码事报错。 点击查看报错信息 error: unable to read askpass response from ‘C:\Users\&#x9…

    Java 2023年6月15日
    078
  • 利用MySQL实现分布式锁,涉及到乐观锁和悲观锁的思想

    对于一些并发量不是很高的场景,使用MySQL来实现分布式锁会比较精简且巧妙。 下面就一个小例子,针对不加锁、乐观锁以及悲观锁这三种方式来实现。 主要是一个用户表,它有一个年龄的字段…

    Java 2023年6月8日
    0184
  • Java HashMap 四个构造函数

    HashMap():构造一个空的 HashMap ,默认初始容量(16)和默认负载系数(0.75)。 HashMap(int initialCapacity):构造一个空的 Has…

    Java 2023年6月5日
    080
  • 动力节点-王妈妈Springboot教程(六)Redis

    *官方下载地址:动力节点官网 *视频观看地址 Redis : 一个NoSQL数据库, 常用作缓存使用 (cache) Redis的数据类型: string , hash ,set …

    Java 2023年6月7日
    091
  • 权限管理系统之项目框架搭建并集成日志、mybatis和分页

    前一篇博客中使用LayUI实现了列表页面和编辑页面的显示交互,但列表页面table渲染的数据是固定数据,本篇博客主要是将固定数据变成数据库数据。 一、项目框架 首先要解决的是项目框…

    Java 2023年5月30日
    072
  • nginx Segmentation fault (core dumped)

    1,问题描述 nginx运行正常,某些时候登陆服务器 nginx -t命令,突然出现 Segmentation fault (core dumped) 2,解决步骤 对nginx进…

    Java 2023年5月30日
    088
  • VS Code插件

    怎么安装插件? 方法一: 按F1或Ctrl+Shift+p,输入extensions,点击第一个安装扩展就可以 方法二: ctrl + P 然后输入 ext install 方法三…

    Java 2023年6月7日
    0112
亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球