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

5.2 Mybatis快速入门,轻松学会常用12种注解开发 通过 《上文》,我们完成了SpringBoot整合Mybatis,那么接下来,我们就来使用Mybatis访问MySQL数据库!MyBatis的强大在于它的语句映射,它提供了注解和XML映射两种方式,都是为了减少我们的使用成本,屏蔽JDBC代码细节,节省代码,从而让我们更专注于SQL代码!本文主要使用注解方式实现登录接口DAL层的UserMapper代码,并借此示例讲解Mybatis常用的12种注解用法,让新手轻松学会常用12种注解开发。 阅读详情

mybatis的环境搭建

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

**

步骤开始:

**
包的层级关系:
在这里插入图片描述
**第一步:创建maven工程并导入坐标

<dependencies>
        <!--mybatis的依赖-->
        <dependency>
            <groupId>org.mybatis</groupId>
            <artifactId>mybatis</artifactId>
            <version>3.4.5</version>
        </dependency>
        <!--mysql的配置文件-->
        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <version>5.1.6</version>
        </dependency>
        <!--测试类-->
        <dependency>
            <groupId>junit</groupId>
            <artifactId>junit</artifactId>
            <version>4.12</version>
        </dependency>
        <!--日志文件-->
        <dependency>
            <groupId>log4j</groupId>
            <artifactId>log4j</artifactId>
            <version>1.2.17</version>
        </dependency>
    </dependencies>

第二步:创建实体类和dao的接口

数据库表建立

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

实体类

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

接口代码

import cn.hs.daomain.User;
import org.apache.ibatis.annotations.Select;

import java.util.List;

//用户的持久层接口
public interface UserDao {
    /**
     * 注解配置,查询是:@Select() 参数写sql语句
     * @return
     * 
     * 查询全部的接口
     */
    
    @Select("select * from user")
    List<User> findAll();
}

第三步:创建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>
    
    <mappers>
        <!--XML文件写法配置-->
        <!--指定映射配置文件的位置,映射配置文件指的是每个dao独立的配置文件-->
        <!--<mapper resource="cn/hs/dao/UserDao.xml"/>-->
        
        <!--注解文件配置-->
        <!--注解配置,用class属性指定被注解的全限定类名-->
        <mapper class="cn.hs.dao.UserDao"/>

    </mappers>

</configuration>

第四步:编写测试类**

import cn.hs.dao.UserDao;
import cn.hs.daomain.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 java.io.InputStream;
import java.util.List;

/*
* 入门案例
* */
public class MybatisTest {
    public static void main(String[] args) throws Exception {
//        1.读取配置文件
        InputStream in = Resources.getResourceAsStream("SqlMapConfig.xml");
//        2.创建sqlSessionFactory工厂
        SqlSessionFactoryBuilder builder = new SqlSessionFactoryBuilder();
        SqlSessionFactory factory = builder.build(in);
//        3.使用工厂生产SqlSession对象
        SqlSession session = factory.openSession();
//        4 使用sqlSession创建Dao接口的代理对象
        UserDao userDao = session.getMapper(UserDao.class);
//        5.使用代理对象执行方法
        List<User> users = userDao.findAll();
        for (User user : users) {
            System.out.println(user);
        }
//        6.释放资源
        session.close();
        in.close();
    }
}

输出结果

log4j:WARN No appenders could be found for logger (org.apache.ibatis.logging.LogFactory).
log4j:WARN Please initialize the log4j system properly.
log4j:WARN See http://logging.apache.org/log4j/1.2/faq.html#noconfig for more info.
User{id=1, username='zs', birthday='0000-00-00', sex='男', address='测试数据'}
User{id=2, username='lisi', birthday='2019-06-08', sex='男', address='测试数据'}
User{id=3, username='ww', birthday='2019-07-07', sex='男', address='测试数据'}
User{id=6, username='mz', birthday='2019-2-2', sex='男', address='测试数据'}

Process finished with exit code 0
KiCad 7.0 + 嘉立创打样:从原理图到实物,打造你的双LLCC68 LoRa串口透传板 本文详细介绍了使用KiCad 7.0设计双LLCC68 LoRa串口透传板的完整流程,从原理图设计到嘉立创打样。重点解析了AVR+LLCC68组合的优势、双模块布局的电磁兼容设计、SPI接口配置及射频走线技巧,并提供了实测数据和常见问题解决方案,帮助开发者高效实现物联网设备的低功耗远距离通信。 阅读详情

相关推荐

5090D显卡安装LLaMA-Factory避坑指南:PyTorch与CUDA版本兼容性问题解决

本文是针对5090D显卡安装LLaMA-Factory时遇到的PyTorch与CUDA版本兼容性问题的详细解决指南。文章深入剖析了因GPU架构代际差异导致的“no kernel image”报错根源,并提供了从环境诊断、安装匹配的PyTorch Nightly版本,到最终集成验证的完整路径,帮助用户确保LLaMA-Factory在5090D上稳定运行。

Apple的专栏 868

JavaWeb学习-注解案例

使用注解,完成反射经典案例 需求:写一个“框架”,不能改变该类的任何代码的前提下,可以帮我们创建任意类的对象,并目执行其中任意方法 自定义注解类 MyAnno.java package com.cenyu.annotation; import java.lang.annotation.*; @Target(ElementType.TYPE) @Retention(RetentionPolicy.RUNTIME) public @interface MyAnno { String myAnno

Yu's Blog 333

【科研绘图】【数据拟合曲线】:附Origin详细画图流程

拟合曲线图

weixin_50236590的博客 4万+

注解的实例

之前学了注解和反射机制 现在跟着案例写个注解的示例 简单的结构 两个注解 @Table,@Column 一个实体类,一个测试类 两个注解 注解只有一个元数据的时候 用value就可以了。 @Table @Column Filter实体类先(相当于对于一个表),由于截图原因getter和setter我就不放出来了,里面有id,us...

qq_35598240的博客 471

在MCUXpresso上通过J-link烧写KW45

背景: KW45B是nxp 的ble npi产品,其使用的IDE为MCUXpressso或者IAR,MCUXpressso有一些bug,但是由于MCUXpressso阅读查找代码相对IAR容易,所以我经常使用的MCUXpressso进行开发。当然IAR也有其优势,比如编译、烧写速度相对MCUXpressso更快,是比较通用的一个平台,而MCUXpressso是NXP独有的。 Kw45有两种烧写方式,一是使用MCUlink,二是使用Jlink。NXP ble 产品线提供的IDE资料里有最新的15.0版本的

weixin_41889258的博客 2859

element的el-cascader组件动态加载,以及报错处理问题

Blocked aria-hidden on an element because its descendant retained focus. The focus must not be hidden from assistive technology users. 报错处理

weixin_56527169的博客 1264

通俗易懂的Java 注解 (Annotation),通过简单的代码案例去学习注解

Java 注解 (Annotation) 注解的初认识 注解可以抽象的理解为 是一种标签,只不过这里是对程序作出解释,并且为当前读取该注解的程序提供判断依据。 注解的本质是一个接口 只要用到注解,必然有三角关系:定义注解,使用注解,读取注解。 一 注解的定义 1 注解通过 @interface 关键字进行定义。 public @interface TestAnnotation { //内容 } 注解大致分为三类:自定义注解、JDK内置注解、还有第三方框架提供的注解。 2.1 内置注解 @Over

weixin_45851575的博客 333

看不懂分子动力学模拟的结果?一文读懂RMSD曲线

随后,将每一帧结构与初始模板进行叠合,计算对应原子的平均偏移量,即RMSD。总之,掌握 RMSD 的解读方法,就等于抓住了评估分子动力学模拟成败与质量的“总开关”。①在模拟初始阶段,RMSD会从0迅速上升,这是蛋白质从静态晶体或模型结构释放到溶液环境中并逐渐适应的正常过程。②经过一段时间后,曲线不再系统性上升或下降,而是围绕一个平均值,小幅度地上下波动,形成一个稳定的“平台”。这种情况下,RMSD 在初始快速上升后,并未进入平台,而是持续甚至加速上升,始终未见收敛。🔍 如何解读不同趋势的RMSD曲线。

weixin_46587777的博客 4891

注解+实例介绍

注解: * 概念:说明程序的。给计算机看的 * 注释:用文字描述程序的。给程序员看的 * 定义:注解(Annotation),也叫元数据。一种代码级别的说明。它是JDK1.5及以后版本引入的一个特性,与类、接口、枚举是在同一个层次。它可以声明在包、类、字段、方法、局部变量、方法参数等的前面,用来对这些元素进行说明,注释。 *** 概念描述:** * JDK1.5之后的新特性 *...

deskDopa的博客 1072

2025年“区块链技术”职业院校技能大赛赛后复盘与总结(必看)

记录一次2025年“区块链技术”职业院校技能大赛的参加经验总结与赛后复盘

我是网络安全兼技能大赛工程师,专注网络安全技术学习与技能大赛实战!持续分享最新的技术文章,帮你少走弯路,一起在技术赛道上进步~ 1992

使用 Simulink 进行电力电子系统的大信号模型仿真

电力电子系统(Power Electronics System)包括各种功率转换器(如 DC-DC 转换器、逆变器等)。这些设备中的关键组件(如 MOSFET、IGBT、电容器、电感器等)不仅影响系统的性能,还直接关系到系统的稳定性、效率和可靠性。因此,在设计阶段进行详细的建模和仿真至关重要。大信号模型仿真的目的是通过模拟系统在非线性条件下的真实行为,评估其瞬态响应、稳态性能以及对不同负载和输入电压变化的响应。通过本教程,我们介绍了如何使用 Simulink 进行电力电子系统的大信号模型仿真。背景介绍。

xiaoheshang_123的博客 303

java注解简单讲解以及自定义注解例子

注解(Annotation) jdk5定义了4个标准的元注解。除了元注解,还有其它帮我们定义好的注解如@SuppressWarnings  当然我们也可以自定义注解 @Target, @Retention, @Documented, @Inherited @Retention @Retention定义了该Annotation被保留的时间长短. 如:@Retention(Ret

Howard的博客 4883

【MuJoCo】第一章 仿真环境的搭建与入门

它通过优化的接触动力学算法,能够高效处理复杂的多体交互,这使其成为从机械臂操控到足式机器人运动,再到大规模强化学习训练的理想选择。特别是与 JAX 集成的 MJX 的推出,将高性能仿真的边界推向了新的高度,使得在单台机器上并行数千个仿真环境成为可能。我们将通过编写您的第一个仿真程序,逐步拆解 MuJoCo 的工作流,让您亲手感受物理引擎的脉动。这种加速能力对于需要海量仿真样本的强化学习算法(如 PPO)是颠覆性的,它将原本需要数小时的训练缩短到几分钟。上的几何形状,用于碰撞检测和可视化。

u012133341的博客 368

Mybatis的入门案例以及基于注解的入门案例

mybatis的入门案例 第一步:读取配置文件 第二步:创建SqlSessionFactory工厂 第三步:创建SqlSession 第四步:创建Dao接口的代理对象 第五步:执行dao中的方法 第六步:释放资源 注意事项: 不要忘记在映射配置中告知mybatis要封装到哪个实体类中 配置的方式:指定实体类的全限定类名 mybatis基于注解的入门案例: 把IUserDao.x...

派拉斯兔子的博客 550

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版

Part-E1-SDIO-Specification-Ver4.00-Final-120220.pdf:最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版,包括SDIO 接口的外设,SDIO 接口官方协议等。

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万+

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

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

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

小白一个 4785

mybatis入门案例及注解开发

知识点 mybatis的入门 mybatis注解开发和编写dao实现类的方式 目标 能够掌握编写mybatis的入门案例 能够清楚mybatis可以使用注解和实现类方式开发 在resources中创建一个login4j.properties的文件 # Set root category priority to INFO and its only appender to CONSOLE. #lo...

piaok_yumian的博客 280

mybatis基于注解的入门案例

mybatis基于注解的入门案例: 把IUserDao.xml移除,在dao接口的方法上使用@Select注解,并且指定SQL语句 同时需要在SqlMapConfig.xml中的mapper配置时,使用class属性指定dao接口的全限定类名。 明确: 我们在实际开发中,都...

qq_39368007的博客 302

案例:基于MyBatis注解的学生管理程序

案例:基于MyBatis注解的学生管理程序一、任务目标(1)MyBatis注解实现查询操作(2)MyBatis注解实现修改操作(3)MyBatis注解实现一对多查询二、【实现步骤】:MyBatis注解实现查询操作1.项目搭建2.数据库准备3.POJO类准备4.创建Mapper接口5. 修改mybatis-config.xml核心配置文件6.编写MyBatisUtils工具类7 编写测试方法三、【实现步骤】:MyBatis注解实现一对多查询1. 修改Mapper接口2. 修改mybatis-config.xm

青衣小屋 1万+

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

Mybatis-基于注解的入门案例

基于注解的mybatis入门案例 1.SqlMapConfig.xml文件依然保留 IAccountDao.xml使用注解代替 再dao接口方法上加上@Select标签,并且上sql语句 再SqlMapConfig.xml主配置文件,mapper标签使用class属性,写上dao接口的全限定类名 第一步:SqlMapConfig.xml配置文件 <?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE configuration P

ljsykf的博客 172

23个Mybatis注解:Mybatis架构分析与注解案例(必须收藏)

MyBatis 是一款优秀的持久层框架,它通过提供数据访问对象(DAO)和数据访问层(DAL)的抽象,简化了数据库交互的复杂性。利用注解如 `@Select`、`@Insert`、`@Update`、`@Delete`,MyBatis 支持定制化 SQL、存储过程以及高级映射,使得开发者能够灵活地处理数据库操作。其核心特性包括动态 SQL 构建、强大的数据映射以及插件扩展机制,这些都极大地提升了开发效率和数据访问的性能。MyBatis 的易用性和灵活性使其成为企业级应用开发中的热门选择,特别是在需要细粒度控

肖哥弹架构博客 1427

【JavaEE案例】基于MyBatis注解的学生管理程序

现有一个学生表s_student和一个班级表c_class,其中,班级表c_class和学生表s_student是一对多的关系。创建持久化类IClass,并在类中定义相关属性和方法,该类用于封装IClass对象的id、班级名称以及关联的学生集合等属性。创建持久化类IStudent,并在类中定义相关属性和方法,该类用于封装IStudent对象的id、姓名、年龄和班级等属性。根据表格在数据库分别创建一个学生表s_student和一个班级表c_class,并查询id为2的学生的信息。

weixin_66697650的博客 7881

【Mybatis篇】Mybatis的注解开发

一个有趣爱睡觉的intp,期待和更多人分享自己所学知识的真诚大学生。

m0_74202856的博客 2111

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

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

慕白Lee的博客 1万+

mybatis 注解入门案例

mybatis 注解入门 //用户持久层接口 public interface IUserDao { @Select("select * from User where id=41") List<User> findAll(); } 主配置文件 <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE configuration PUBLIC "-//mybatis.org//DTD Config 3.0

qq_45322341的博客 229

mybatis注解的写法

mybatis注解的写法mybatis注解的写法 mybatis注解的写法 import org.apache.ibatis.annotations.Mapper; import org.apache.ibatis.annotations.Param; import org.springframework.stereotype.Component; import java.math.BigDecimal; @Mapper @Component public interface OrderDao{ @In

maqingbin8888的专栏 306
上一篇: mybatis之入门案例-xml文件写法【新手入门】
下一篇: mybatis之XML配置文件入门案例-增删改查
wangxuejava
博客等级 码龄7年 6粉丝 46原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值