IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> Java知识库 -> java连接数据库(4.2):Mybatis框架注解的简单使用 -> 正文阅读

[Java知识库]java连接数据库(4.2):Mybatis框架注解的简单使用

Mybatis的两种映射方式

MyBatis 有两种 SQL 语句映射模式,一种是基于注解,一种是基于XML。

Mybatis应该选择哪种映射方式呢?MyBatis 项目开发中是基于 XML 还是注解?

注解模式与 XML 模式对比
注解模式
优势:开发速度快,开发量小
劣势:难以线上维护(每次修改 SQL 语句都需要重新打包)

XML 模式
优势:便于线上维护(每次修改 SQL 语句不需要重新打包)
劣势:开发速度慢,开发量大

另外,注解模式开发速度快仅限于简单 SQL 语句处理,比如单表 CURD 操作之类。对于复杂的 SQL 语句处理,注解模式就显得有点力不从心,而且会带来混乱。

总结:实际项目开发中,用哪种实现方式取决于团队,因此两种都需要了解。
自己开发时,简单 SQL 语句可以采用注解模式,复杂 SQL 语句采用 XML 模式。(个人认为对Mybatis来说,XML是核心)

1、使用注解的目的:

减少编写Mapper映射文件

2、Mybatis的常用注解

@lnsert:实现新增
@Update:实现更新
@Delete:实现删除
@Select:实现查询
@Result:实现结果集封装
@Results:可以与@Result一起使用,封装多个结果集
@One:实现一对一结果集封装
@Many:实现一对多结果集封装

3、快速入门:

3.1、在核心配置文件中加载配置关系

  <mappers>
        <package name="mapper"/>
    </mappers>

在这里插入图片描述
说明1:该路径是相对与root文件路径下的
说明2:等价于加载映射文件,都是告知mapper接口映射的sql语句的路径

3.2 在Mapper接口写对应sql语句

public interface TeacherMapper {
    //查询所有的教师
    @Select("select  * from teacher ")
    ArrayList<Teacher> findAll();

    //根据ID查询单个教师
    @Select("select  * from teacher where id = #{id}")
    Teacher getTeacherById(int id);

    //插入一个教师对象
    @Insert("insert into test.teacher (id, name) value (#{id},#{name})")
    void addTeacher(Teacher teacher);

    @Insert("insert into test.teacher(id, name) value (#{id},#{name})")
    void addTeacher2(Map<String, Object> map);

    //根据id更新一个对象
    @Update("update test.teacher set name = #{name} where id = #{id}")
    void updateTeacher(Teacher teacher);
    @Delete("delete from test.teacher where id = #{id}")
            
    //根据id删除一个对象
    void deleteTeacher(int id);

//    void updateTeacher2(Map<String,Object> map);
}

对比(XML方式和注解方式)
在这里插入图片描述

3.3 开始测试

备注:下面的代码已经抽取出重复获取mapper对象的操作

@Test
    public void selectAll() throws IOException {
        mapper.findAll();
    }

    @Test
    public void selectbyId() throws IOException {
        mapper.getTeacherById(5);
    }

    //
    @Test
    public void deletebyId() throws IOException {
        mapper.deleteTeacher(5);
    }

    @Test
    public void updateTeacher() throws IOException {
        Teacher t5 = new Teacher(5, "令狐冲");
        mapper.updateTeacher(t5);
    }

    @Test
    public void insert() throws IOException {
        Teacher t5 = new Teacher(4, "东方不败");
        mapper.addTeacher(t5);
        mapper.findAll();
    }

附:用@Before等抽取出获取session会话对象的固定模板

每次测试代码时,都得重复获取mapper,可以使用@before、@After抽取出重复性的操作

public class MybatisTest {
    private TeacherMapper mapper;
    private SqlSession sqlSession;
    @Before
    public void before()throws IOException {
        /**
         * 获取核心配置文件* Resources :import org.apache.ibatis.io.Resources;*/
        InputStream resourceAsStream = Resources.getResourceAsStream("sqlMapConfig.xml");
        /**获取工厂对象*/
        SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(resourceAsStream);
        /**获取session会话对象——工厂打开一个会话*/
        sqlSession = sqlSessionFactory.openSession(true);
        mapper = sqlSession.getMapper(TeacherMapper.class);
    }
    
    @After
    public void after ()throws IOException {
        sqlSession.close();
    }
}

  Java知识库 最新文章
计算距离春节还有多长时间
系统开发系列 之WebService(spring框架+ma
springBoot+Cache(自定义有效时间配置)
SpringBoot整合mybatis实现增删改查、分页查
spring教程
SpringBoot+Vue实现美食交流网站的设计与实
虚拟机内存结构以及虚拟机中销毁和新建对象
SpringMVC---原理
小李同学: Java如何按多个字段分组
打印票据--java
上一篇文章      下一篇文章      查看所有文章
加:2022-05-11 16:17:11  更:2022-05-11 16:20:37 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/23 22:47:18-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码