mybatis

1.mybatis持久化实现

http://mybatis.org/mybatis-3/

MyBatis框架
1、是什么?(一个用于简化JDBC操作的持久层框架)
2、应用的优势?(简单、开源、稳定、功能强大、灵活的sql定制、参数映射、结果映射)
3、SpringBoot工程中的应用?
Mybatis 是一个优秀的持久层框架,底层基于 JDBC 实现与数据库的交互。并在 JDBC操作的基础上做了封装和优化,它借助灵活的 SQL 定制,参数及结果集的映射方式,更好的适应了当前互联网技术的发展。Mybatis 框架的简单应用架构,如图所示:
![在这里插入图片描述](https://img-blog.csdnimg.cn/20210322184752661.png在这里插入图片描述

在当今的互联网应用中项目,mybatis 框架通常会由 spring 框架进行资源整合,作为数据层技术实现数据交互操作。


4、SpringBoot工程中mybatis应用快速实践(操作sys_notice表中数据)
1)第一步:定义POJO对象SysNotice(用于在内存中封装通知信息)
2)第二步:创建Dao接口SysNoticeDao并使用@Mapper进行描述
3)第三步:在Dao接口中添加insertObject(Notice noyice)方法
4)第四步:定义Dao接口对应的映射文件,并添加insert()对应sql的映射文件
5)第五步:定义单元测试SysNoticeTests,并对insertObjcet方法进行分析

1.1添加依赖

第一步:添加 mybatis 启动依赖。

org.mybatis.spring.boot
mybatis-spring-boot-starter
2.1.3

我们添加了 mybatis 依赖以后,spring 框架启动时会对 mybatis 进行自动配置。例如 SqlSessionFactory 工厂对象的创建。

第二步:Mybatis 简易配置实现。
假如需要对 mybatis 框架进行简易配置,可以打开 application.properties 文件,在此文件中进行基本配置(可选,暂时可以不配置),例如:
配置sql超时
mybatis.configuration.default-statement-timeout=30
驼峰命名规则
mybatis.configuration.map-underscore-to-camel-case=true
映射文件路径
mybatis.mapper-locations=classpath:/mapper//.xml
配置 mybatis 中的 sql 日志的输出:(com.cy 为我们写的项目的根包)
logging.level.com.cy=DEBUG

1.2测试实现代码

在测试类实现代码如下:

package com.cy.pj.sys.dao;

import org.apache.ibatis.session.SqlSession;
import org.junit.jupiter.api.Test;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;

import java.sql.Connection;

@SpringBootTest
public class MyBatisTests {

    //SqlSession是mybatis框架中实现与数据库进行会话的入口对象
    @Autowired
    private SqlSession sqlSession;

    @Test
    void testGetConnection(){
        Connection conn=sqlSession.getConnection();
        System.out.println("conn="+conn);
    }
}

结果如下:
conn=HikariProxyConnection@1790430792 wrapping com.zaxxer.hikari.pool.ProxyConnection.ClosedConnection

	在 SpringBoot 脚手架工程中,Spring 框架会基于 MyBatis 框架底层配置,创建SqlSessionFactory 对象,然后再通过此工厂对象创建 SqlSession,最后基于 Springku框架为测试类注入 SqlSession 对象,接下来,我们可以通过 SqlSession 对象实现与数据库的会话了。

1.3通告业务设计及实现

1.3.1业务描述:
基于 SpringBoot 脚手架工程对 MyBatis 框架的整合,实现对通告数据的操作。
1.3.2 pojo类设计

package com.cy.pj.sys.pojo;
import java.util.Date;
public class SysNotice {
    /** 公告 ID */
    private Long id;
    /** 公告标题 */
    private String title;
    /** 公告类型(1 通知 2 公告) */
    private String type;
    /** 公告内容 */
    private String content;
    /** 公告状态(0 正常 1 关闭) */
    private String status;
    /** 创建时间 */
    private Date createdTime;
    /** 修改时间*/
    private Date modifiedTime;
    /** 创建用户 */
    private String createdUser;
    /** 修改用户*/
    private String modifiedUser;
    private String remark;
    //自己添加 set/get/toString 方法
    //alt+insert
}

1.3.3 Dao 接口及方法
第一步:定义通告业务数据层接口及业务方法。

package com.cy.pj.sys.dao;

import com.cy.pj.sys.pojo.SysNotice;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Select;

import java.util.List;

@Mapper
public interface SysNoticeDao {

    List<SysNotice> selectNotices(SysNotice notice);

    int deleteById(Long... id);

    @Select("select * from sys_notice where id=#{id}")
    SysNotice selectById(Integer id);

    int insertNotice(SysNotice notice);

    int updateNotice(SysNotice notice);

}

	其中:@Mapper 是由 MyBatis 框架中定义的一个描述数据层接口的的注解(所有的注解只起到一个描述性的作用),用于告诉 Spring 框架此接口的实现由 mybatis 创建,并将其实现类对象存储到 spring 容器。

第二步:创建 NoticeDao 接口对应的 SQL 映射文件,名字为 SysNoticeMapper.xml,
存储在 resources/mapper/sys 目录下,同时定义 xml 文件头以及根元素,代码如下:

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.cy.pj.sys.dao.NoticeDao">

</mapper>

第三步:在映射文件中添加 insertNotice 方法对应的 Sql 映射,关键代码如下:

<insert id="insertNotice">
 insert into sys_notice
 (title,type,content,status,remark,
createdTime,modifiedTime,createdUser,modifiedUser)
 values
 (#{title},#{type},#{content},#{status},#{remark},
now(),now(),#{createdUser},#{modifiedUser})
</insert>

1.3.4单元测试实现及分析
在 src/java/test 目录下定义测试类,对 NoticeDao 对象进行应用测试

package com.cy.pj.sys.dao;

import com.cy.pj.sys.pojo.SysNotice;
import org.junit.jupiter.api.Test;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;

@SpringBootTest
public class SysNoticeDaoTests {
    @Autowired
    private SysNoticeDao sysNoticeDao;
    @Test
    void testInserNotice(){
        SysNotice notice=new SysNotice();
        notice.setTitle("cgb2011");
        notice.setContent("2021/3/22测试");
        notice.setStatus("0");
        notice.setType("1");
        notice.setCreatedUser("tony");
        notice.setModifiedUser("tony");
        sysNoticeDao.insertNotice(notice);
    }
}

数据库内容如下:
在这里插入图片描述

这里只写了添加一种方法,还未加上其他的修改删除、更新方法;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值