mybatis新手入门之注解写法-增删改查

MyBatis(三、注解开发) 实现复杂关系映射之前我们可以在映射文件中通过配置来实现,使用注解开发后,我们可以使用@Results注解 ,@Result注解,@One注解,@Many注解组合完成复杂关系的配置。​ 修改MyBatis的核心配置文件,我们使用了注解替代的映射文件,所以我们只需要加载使用了注解的Mapper接口即可。这几年来注解开发越来越流行,Mybatis也可以使用注解开发方式,这样我们就可以减少编写Mapper 映射文件了。......... 阅读详情

mybatis的环境搭建

第一步:创建maven工程并导入坐标
第二步:创建实体类和dao的接口,并在接口上写上注解SQL语句
第三步:创建Mybatis的主配置文件 SqlMapConifg.xml
第四步:编写测试类

步骤开始

包的层级关系
在这里插入图片描述
**

**第一步:创建maven工程并导入坐标

**

<dependencies>
        <dependency>
            <groupId>org.mybatis</groupId>
            <artifactId>mybatis</artifactId>
            <version>3.4.5</version>
        </dependency>
        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <version>5.1.6</version>
        </dependency>
        <dependency>
            <groupId>log4j</groupId>
            <artifactId>log4j</artifactId>
            <version>1.2.12</version>
        </dependency>
        <dependency>
            <groupId>junit</groupId>
            <artifactId>junit</artifactId>
            <version>4.12</version>
        </dependency>
    </dependencies>

第二步:创建实体类和dao的接口,并在接口上写上注解SQL语句

1.数据库表建立

CREATE TABLE `user` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `username` varchar(32) DEFAULT NULL,
  `birthday` varchar(200) NOT NULL,
  `sex` char(1) DEFAULT NULL,
  `address` varchar(256) DEFAULT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=7 DEFAULT CHARSET=utf8

2.对应的实体类,注意生成set和get方法

import java.io.Serializable;


public class User implements Serializable {
    private Integer id;
    private String username;
    private String birthday;
    private String sex;
    private String address;
    }

重点是这里,接口层的代码,需要在接口上面写上相对应的sql语句

package cn.hs.dao;

import cn.hs.domain.User;
import org.apache.ibatis.annotations.Delete;
import org.apache.ibatis.annotations.Insert;
import org.apache.ibatis.annotations.Select;
import org.apache.ibatis.annotations.Update;

import java.util.List;

//用户的持久层接口
public interface UserDao {
    /**
     * 查询全部的接口
     */
    @Select("select * from user")
    List<User> findAll();

    /**
     * 保存的方法
     * @param user
     */
    @Insert("insert into user values(null,#{username},#{birthday},#{sex},#{address})")
    void saveUser(User user);

    /**
     * 删除的方法
     * @param id
     */
    @Delete("delete from user where id=#{id}")
    void del(Integer id);

    /**
     * 修改的方法
     * @param user
     */
    @Update("update user set username=#{username},birthday=#{birthday},sex=#{sex},address=#{address} where id=#{id}")
    void update(User user);

    /**
     * 根据ID查询的方法
     * @param id
     * @return
     */
    @Select("select * from user where id=#{id}")
    User findOne(Integer id);
}

**

第三步:创建Mybatis的主配置文件 SqlMapConifg.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">
<!--mybatis的主配置文件-->
<configuration>
    <!--配置环境-->
    <environments default="mysql">
        <!--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://localhost:3306/user"/>
                <property name="username" value="root"/>
                <property name="password" value="root"/>
            </dataSource>
        </environment>
    </environments>

    <!--指定映射配置文件的位置,映射配置文件指的是每个dao独立的配置文件-->
    <mappers>
        <!--指向的是相对应的接口文件-->
        <mapper class="cn.hs.dao.UserDao"></mapper>
    </mappers>
</configuration>

**

第四步:编写测试类,亲测有效,复制粘贴建立相应包的层级,即可测试**

**

package cn.hs.test;

import cn.hs.dao.UserDao;
import cn.hs.domain.User;
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 org.junit.After;
import org.junit.Before;
import org.junit.Test;

import java.io.InputStream;
import java.util.List;

public class TestCrud {
   private InputStream in;
   private SqlSession sqlSession;
   private UserDao userDao;

   //把公共的方法提取出来
   @Before //用于在测试方法前执行
   public void init()throws Exception{
      //1.读取配置文件,生成字节输入流
      in= Resources.getResourceAsStream("SqlMapConfig.xml");
      //获取SqlSessionFactory
      SqlSessionFactory factory = new SqlSessionFactoryBuilder().build(in);
      //3.获取SqlSession对象
       sqlSession = factory.openSession();
      //获取dao的代理对象
       userDao = sqlSession.getMapper(UserDao.class);
   }

   //把公共的方法提取出来
   @After  //用于在测试方法之后执行
   public void destory() throws Exception{
      //释放资源
      sqlSession.close();
      in.close();
   }

   /**
    * 查询所有
    */
   @Test
    public void findAll(){
      //执行sql语句,调用的是相对应的接口方法名
       List<User> users = userDao.findAll();
       //遍历
       for (User user : users) {
           System.out.println(user);
       }
   }

   /**
    * 保存数据
    * @throws Exception
    */
   @Test
   public void save()throws Exception{
      //封装数据
      User user = new User();
      user.setUsername("mz");
      user.setSex("男");
      user.setAddress("测试数据");
      user.setBirthday("2019-2-2");
      //执行sql语句,调用的是相对应的接口方法名
      userDao.saveUser(user);
      //提交
      sqlSession.commit();

   }

   /**
   * 删除
   */
   @Test
   public void del(){
      //执行sql语句,调用的是相对应的接口方法名
      userDao.del(2);
      //提交
      sqlSession.commit();
   }

    /**
    * 修改的方法
    */
   @Test
   public void update(){
      //封装数据
      User user = new User();
      user.setId(6);
      user.setUsername("update3");
      user.setAddress("修改成功3");
      user.setBirthday("2022-22-22");
      //执行sql语句,调用的是相对应的接口方法名
      userDao.update(user);
      //提交
      sqlSession.commit();
   }

    /**
    * 根据id查询
    */
   @Test
   public void findOne(){
      //执行sql语句,调用的是相对应的接口方法名
      User user = userDao.findOne(6);
      //提交
      System.out.println(user);
   }


}

mybatis3通过provider注解结合动态sql实现增删改查 大家都知道,传统的mybatis实现数据库的增删改查都是依赖xml写sql语句,外层的mapper接口暴露出来调用,xml实现接口,然后通过调用接口操作数据库。虽然目的实现了,但是有一点麻烦的是,数据库增加一张表,就要对应增加一套mappe接口和xml文件,如果数据库表比较多的话,对应的文件就会很多,那这就很麻烦。所以我一直在想有没有方法可以不用写那些复杂的sql就可以实现对数据库的操作呢?带着这... 阅读详情

相关推荐

CANOE DIVA 工程怎样在具体服务前增加前置条件

然后会在CANoe的Test Module视窗中发现一个跟系统条件相关的Test Module模块,在该模块中有生成跟系统条件相关的CAPL 脚本。这里需要根据你的实际项目进行更改,diva工程加载到canoe的工程的时候,会同步加入你创建的cdd文件,这里示例的ABS_ESP 就是你的cdd的ECU命名,后面就是具体的前置条件服务。4、配置完成后,测试用例就会如下图Trace窗口所示,在每一次10 02请求之前都会调用CAPL Function的PreconditionCheck函数中定义的脚本。

weixin_45940007的博客 1966

java——mybatis——Mybatis注解开发——@Update——修改数据

DAO接口: package com.sunxl.dao; import com.sunxl.pojo.User; import org.apache.ibatis.annotations.Insert; import org.apache.ibatis.annotations.Select; import org.apache.ibatis.annotations.SelectKey;...

小白龙白龙马的博客 3020

无网环境也能玩转DBeaver?手把手教你离线安装与ClickHouse连接(附实测jar包)

本文详细介绍了在无网环境下如何离线安装DBeaver并配置ClickHouse连接的完整指南。通过准备必备工具如DBeaver安装包、ClickHouse JDBC驱动及Maven本地仓库,确保在物理隔离环境中实现数据库管理。文章包含详细的安装步骤、驱动配置和性能优化建议,帮助开发者在严格网络限制下高效工作。

weixin_42635064的博客 375

Mybatis注解用法

MyBatis(八) mybatis注解 一、mybatis简单注解 1、@Select、@Results、@Result 2、@Delete、@Param、@ResultMap 3、@Insert、@SelectKey 4、@Delete、@Param 5、@Update 二、动态SQL 1、简单处理,直接使用``脚本 2、使用Provider注...

u013452337的博客 5万+

QGIS实战:5分钟搞定谷歌地图、高德、天地图等多源地图加载(附最新图源URL)

本文详细介绍了如何在QGIS中快速加载谷歌地图、高德、天地图等多源地图,提供2023年验证可用的最新图源URL和配置步骤。从环境准备到高级技巧,涵盖国内外主流地图服务的完整解决方案,帮助用户提升GIS工作效率。

weixin_29210759的博客 1216

基于PYNQ-Z2复现yolov2

基于PYNQ-Z2复现Yolo_v2 参考资料:源项目工程 开发板配置 0 使用说明 0.1 简介 本文档主要分为三个部分: [1] 搭建HLS工程生成Yolo_v2的IP。 [2] 在Vivado中使用生成好的IP进行block design,导出bit文件和tcl文件。 [3] 将相关文件导入至PYNQ-Z2板中,在Jupyter Notebook上进行编程实现。 0.2 所需硬件  PYNQ-Z2开发板、USB数据线、网线  SD卡、读卡器 0.3 所需软件  Vivado 2018.3  V

谦豫 1万+

Mybatis 注解写法( 附10余个常用例子 )

【前言】 Mybatis 除了 XML 配置写法,还可以使用注解写法。 首先需要引入 Mybatis 的依赖: <dependency> <groupId>org.mybatis.spring.boot</groupId> <artifactId>mybatis-spring-boot-starter</artifact...

小白一个 4785

树莓派烧录验证失败:跳过验证步骤实现成功启动的实用技巧

本文针对树莓派烧录系统时常见的验证失败问题,提供了跳过验证步骤实现成功启动的实用技巧。通过分析Windows与Linux文件系统差异导致的SD卡验证报错,指导用户在烧录完成后立即关闭验证窗口,或使用BalenaEtcher等第三方工具规避问题,确保树莓派正常启动。

yyy34的博客 949

MyBatis:注解操作

MyBatis:注解操作

子夜的个人博客 2130

全球半导体设备氧化钇熔射服务行业规模预测:预计未来六年CAGR为7.8%

本文将对“半导体设备氧化钇熔射服务”行业进行深度分析,探讨市场趋势的演变、核心竞争者的战略布局、供应链结构的内外特点、研发创新的最新进展、法规政策环境的适应性调整以及投资机会与风险评估。这一稳健的增长趋势表明半导体设备氧化钇熔射服务在电子行业中的重要性逐渐增强。由于全球对于高效、高精度和可靠的电子解决方案的需求增加,对能够提供这些功能的半导体设备氧化钇熔射服务的需求日益增长。由于半导体设备氧化钇熔射服务主要为就地服务型,其“配送”主要依赖于专业团队和技术设备的及时调配,强调服务的时效性和高质量。

CC1239777的博客 570

matlab snr矩阵计算公式_基于MATLAB和Adams的悬置系统解耦计算方法对比

一、概述动力总成悬置系统主要有两个作用:一是固定和支撑动力总成,限制动力总成在各种工况下的位移量,防止与其它部件碰撞;二是隔振作用,将动力总成的振动尽可能少的传递到车身。悬置系统隔振性能的核心就是解决刚体模态的频率分配和振动耦合问题,简言之就是关注动力总成的刚体模态和解耦率。动力总成悬置系统的刚体模态频率和能量解耦分析,行业内的主流计算方法分两种:一是用MATLAB编程进行分析计算,二是...

weixin_33416900的博客 1449

Mybatis的注解形式

但有些情况下, 数据插⼊之后, 还需要有后续的关联操作, 需要获取到新插⼊数据的id,如果想要拿到⾃增id, 需要在Mapper接⼝的⽅法上添加⼀个Options的注解。方法的返回值可以是一个集合也可以是一个类对象,集合可以返回0-n条数据,而类只能返回0-1条数据,如有有多条数据则会报错。字段值会丢失‌(可以通过设置别名as,与@Result注解进行匹配与映射)是MyBatis的参数占位符,对应方法参数。中的字段名(列名),与表结构直接对应‌。,则无法自动映射,查询结果中。

2302_81500764的博客 1316

【无标题】 Python自动化法律文书撰写

Jinja2是一个功能强大的模板引擎,支持丰富的语法和功能。除了条件判断和循环语句外,Jinja2还支持过滤器、宏、继承等高级特性,非常适合处理复杂的文书模板。

master_chenchen的博客 2063

【JavaEE】Mybatis基础使用注解 增删改查操作

Mybatis对数据库进行简单的增删改查操作,涉及注解@Insert @Options @Param @Delete @Update @Select @Result @Results @ResultMap @SpringBootTest @Test @AfterEach @BeforeEach

yj20040627的博客 2135

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

mybatis基于注解实现增删改查(详细介绍)

mybatis高级查询——基于注解开发(详细介绍) 文章目录mybatis高级查询——基于注解开发(详细介绍)一、mybatis基于注解实现增删改查1.1 搭建环境1.2 实现增删改查二、使用步骤1.引入库2.读入数据总结 提示 一、mybatis基于注解实现增删改查 在上篇文章中我详细介绍了mybatis的SQL映射文件可以基于xml的方式配置,但是我们发现在映射文件中书写sql语句比较繁琐。因此Mybatis为用户提供了快速的开发方式,即基于注解(Annnotation)的配置方式,其可以提高开发效

weixin_43880289的博客 3841

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

MyBatis注解配置

通过MyBatis注释的方式进行——单表增删改查、多表关联查询、实现动态SQL方法

2302_80892440的博客 2129

迈瑞BS系列全自动生化分析仪LIS协议接口手册(内含HL7和ASTM)

迈瑞BS系列全自动生化分析仪LIS协议接口手册,内含HL7和ASTM)

【Spring集成MyBatis】MyBatis注解开发

MyBatis的注解开发

passer__jw767的博客 1524

mybatis增删改查以及用注解实现

接着上一篇说,上篇写了怎么把它跑起来,并且只写了一个查询所有的语句。 这篇写增删改查和注解实现增删改查。 上篇链接: 实现增删改查 默认是跑起来了mybatis。那实现增删改查,就只需要在UserMapper中添加接口,在UserMapper.xml中写标签和sql语句,然后在测试类中添加测试方法进行测试。 你也可以练习一下,先把接口写上,UserMapper.xml中的内容先自己写。 1、UserMapper类: import java.util.List; public interface U.

java知识整理 1782

【JavaEE进阶】 MyBatis使用注解实现增删改查

如果mapper接⼝⽅法形参只有⼀个普通类型的参数,#{…}⾥⾯的属性名可以随便写,如:#{id}、#{value}。建议和参数名保持⼀致 > 如果有多个参数,属性名一定要与参数名保持一致,当然也可以进行修改,具体方法后面会详细讲解

m0_71731682的博客 2169

【MyBatis】MyBatis如何增删改查

本期讲解:MyBatis如何进行增删改查。

我的主页 3945

mybatis之入门案例-注解写法【新手入门】

mybatis的环境搭建 第一步:创建maven工程并导入坐标 第二步:创建实体类和dao的接口 第三步:创建Mybatis的主配置文件 SqlMapConifg.xml 第四步:编写测试类 ** 步骤开始: ** 包的层级关系: **第一步:创建maven工程并导入坐标 <dependencies> <!--mybatis的依赖--> &...

wangxuejava的博客 427

Mybatis 注解常用写法

1.查询 IN 当需要编写 含有 IN 关键字的查询语句时 使用注解写法如下 @Select({"<script>", "SELECT * FROM user WHERE id IN ", "<foreach collection='ids' item='id' open='(' separator=',' close=')'>#{id}</foreach>", "</script>"}) public List<User> getUser

张启明 641

【JavaEE进阶】MyBatis通过注解实现增删改查

首先我们准备相应的表如下:application.yml配置文件内容如下:UserInfo类代码如下:​​​​​​​以下所有操作都是在该接口进行操作:所有测试单元代码都是在如下代码里面完成的:在学习这些操作之前,我们先来学习MyBatis⽇志打印在Mybatis当中我们可以借助⽇志,查看到sql语句的执⾏、执⾏传递的参数以及

2301_81510374的博客 1766

从头开始学MyBatis—02基于xml和注解分别实现的增删改查

MyBatis系列02部分——MyBatis分别实现基于xml和基于注解方式的增删改查以及注意事项

青春无问西东 岁月自成芳华 2186

MyBatis注解开发

注解开发越来越流行,Mybatis也可以使用注解开发方式,这样我们就可以减少编写Mapper映射文件了。

知足上进,不负野心。 2925

【Mybatis】@Select与@Update注解写法总结

MyBatis 中的 `@Select` 注解用于直接在接口方法上编写 SQL 语句,避免了使用 XML 映射文件。`@Select` 注解的使用使得 SQL 语句的编写更加直观,并且可以直接与接口方法关联,提高了开发效率和代码的可读性。

慕白Lee的博客 1万+
上一篇: mybatis之XML配置文件入门案例-增删改查
下一篇: 斐波拉契数列-源码实现
wangxuejava
博客等级 码龄7年 6粉丝 46原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值