当前位置: 首页 > news >正文

(一)使用Mybatis实现在student数据库中插入一个学生信息

准备工作

首先下载好对应的maven和修改好其中的xml文件及配好环境变量之后,再下载好mybatis之后,在idea中修改好配置,就可以创建maven文件了,选择创建maven-…-quickstart 然后一个maven项目就创建好了(ps:在联网的时候创建)
创建好之后右下角有个这样的图
在这里插入图片描述
选择enable auto-import就可以了

1.引入相关依赖

使用项目管理工具maven仓库来管理JAR包
因为该项目(插入学生用到了数据库)所以需要在项目的pom.xml文件中导入MySQL驱动包,MyBatis包,JUnit测试包(一般自动有JUnit)
直接在浏览器中搜maven仓库,进去,搜你需要用的包名,选择相应的版本,粘贴到pom.xml文件中即可

另外:idea不会自动编译src/main/java目录下的xml文件,所以需要在pom.xml加上一下代码,目的是将项目中的src/main/java目录下的xml等资源文件进行编译进classes文件夹
加入的位置在</ build>上面

<resources>
          <resource>
              <directory>src/main/java</directory>
              <includes>
                  <include>**/*.xml</include>
              </includes>
          </resource>
 </resources>

创建mybatis核心配置文件

在src/main/java目录下创建mybatis核心配置文件,用于项目的环境配置,如:链接数据库等相关配置,通常命名为mybatis-config,xml
在下载好的mybatis中找到里面的说明文件,搜dtd,选择带有configuration的那个,直接粘贴到里面就行

<?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">
<configuration>
    <environments default="development">
        <environment id="development">
            <transactionManager type="JDBC"/>
            <dataSource type="POOLED">
                <property name="driver" value="com.mysql.jdbc.Driver"/>
                <property name="url" value="jdbc:mysql://localhost:3306/test?serverTimezone=GMT%2B8"/>
                <property name="username" value="root"/>
                <property name="password" value=""/>
            </dataSource>
        </environment>
    </environments>
    <mappers>
        <mapper resource="映射文件的位置"/>
    </mappers>
</configuration>

上面除了修改driver,url等,还有在< mappers>里面需要些映射文件的位置,映射文件可以有多个

3.创建数据库表,创建POJO实体

略(自己创建了一个student表,有自增id属性,name,age,score四个属性)

4.创建映射文件

在你的包下面创建dao包
里面自己写管理学生的接口,和实现接口的类,实现接口的类中先不写内容
下面创建映射文件,在自己的包下面创建一个mapper文件夹,在mapper文件夹下创建映射文件StudentMapper.xml,该文件主要用于配置sql语句和Java对象之间的映射,使sql语句查询出来的数据能够被封装成Java对象。一个项目中可以有多个映射文件,每个实体都可以有其对应的映射文件,映射文件通常使用POJO实体+Mapper命名,例如Student实体类的映射文件名就可以命名成StudentMapper.xml
在下载好的mybatis中找到里面的说明文件,搜dtd,选择带有mapper的那个,直接粘贴到里面就行

<?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="xxx">
    <insert id="insertStudent" parameterType="com.wwj.entity.Student">
        insert into student(name,age,score) values (#{name},#{age},#{score})
    </insert>
</mapper>

上面namespace里面随便写上什么,之后在控制台用log4j输出日志信息的时候可以选择
然后在< mapper>下面写你需要的操作,插入就用insert,查找就用select等,其属性id="insertStudent"现在可以随便起,之后sqlSession执行插入命令的时候会用到,另一个属性parameterType="com.wwj.entity.Student"是参数类型,这个就是Student类型,但是要写全路径,不然项目运行时找不到

5.写student实现类

所有的mybatis应用都是以SqlSessionFactory对象为中心,而SqlSessionFactoryBuilder就是SqlSessionFactory的构造者。SqlSessionFactoryBuilder通过build()方法构建SqlSessionFactory对象。

package com.wwj.dao;

import com.wwj.entity.Student;
import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.session.SqlSessionFactoryBuilder;
import org.apache.ibatis.io.Resources;

import java.io.IOException;
import java.io.InputStream;

public class StudentDaoImp implements IStudentDao {
    @Override
    public void insertStudent(Student student) {
        SqlSession sqlSession = null;
        //    1.创建SqlSessionFactoryBuilder对象
        SqlSessionFactoryBuilder builder = new SqlSessionFactoryBuilder();
        try {
            //    2.读取mybatis-config.xml文件
            InputStream in = Resources.getResourceAsStream("mybatis-config.xml");
//            3.创建sqlsessionfactory对象,参数读取链接哪个数据库
            SqlSessionFactory factory = builder.build(in);
//            4.创建sqlsession对象
            sqlSession = factory.openSession();
//            5.执行插入命令,第一个参数是studentmapper.xml文件中写的哪一条执行语句的id
//            第二个参数是要插入的数据
            sqlSession.insert("insertStudent",student);
//            6.手动提交
            sqlSession.commit();
        } catch (IOException e) {
            e.printStackTrace();
        }finally {
            if(sqlSession != null){
                sqlSession.close();
            }
        }
    }
}

这里写的比较繁琐但是好理解,之后可以简化代码,创建一个辅助类的文件夹用来创建sqlsession对象

6.进行测试

public static void main(String[] args) {
        IStudentDao studentDao = new StudentDaoImp();
        Student student = new Student("jj",15,96.5);
        studentDao.insertStudent(student);
 }

完成!!!

相关文章:

  • 9月2日目标检测学习笔记——自然场景下文本检测
  • 易基因技术推介|植物内生菌宏基因组研究
  • 基于springboot+vue的游戏交流论坛系统 elementui
  • 【目标检测算法】YOLO-V1~V3原理梳理
  • 【Kafka】Docker安装kafka、搭建kafka集群
  • 4.【Linux虚拟机】创建自己的docker image并提供后端服务
  • 基于STFT和卷积神经网络的时序数据分类 代码+数据 可直接运行
  • 神经网络建模的适用范围,神经网络建模流程详解
  • 实名核验类API推荐
  • cmakelist.txt , cmake, makefile, make 【超快区分理解】
  • 【去雾论文阅读】Saturation Based Iterative Approach for Single Image Dehazing
  • 机器学习:详细推导序列最小优化SMO算法+Python实现
  • Flask 学习-20. route 路由中的 endpoint 参数
  • bp神经网络反向传播推导,bp神经网络的传递函数
  • Flask 学习-21. 项目配置通过.env环境变量启动开发/生产环境
  • JavaScript的使用你知道几种?(上)
  • JavaScript新鲜事·第5期
  • Java方法详解
  • vue2.0项目引入element-ui
  • WinRAR存在严重的安全漏洞影响5亿用户
  • 从0到1:PostCSS 插件开发最佳实践
  • 力扣(LeetCode)22
  • 面试遇到的一些题
  • 区块链将重新定义世界
  • 学习笔记TF060:图像语音结合,看图说话
  • 怎样选择前端框架
  • 完善智慧办公建设,小熊U租获京东数千万元A+轮融资 ...
  • ​Base64转换成图片,android studio build乱码,找不到okio.ByteString接腾讯人脸识别
  • ​如何防止网络攻击?
  • # .NET Framework中使用命名管道进行进程间通信
  • #NOIP 2014# day.1 T3 飞扬的小鸟 bird
  • #pragma once与条件编译
  • (Bean工厂的后处理器入门)学习Spring的第七天
  • (C语言版)链表(三)——实现双向链表创建、删除、插入、释放内存等简单操作...
  • (SpringBoot)第七章:SpringBoot日志文件
  • (阿里云万网)-域名注册购买实名流程
  • (仿QQ聊天消息列表加载)wp7 listbox 列表项逐一加载的一种实现方式,以及加入渐显动画...
  • (七)c52学习之旅-中断
  • (转载)VS2010/MFC编程入门之三十四(菜单:VS2010菜单资源详解)
  • (转载)虚幻引擎3--【UnrealScript教程】章节一:20.location和rotation
  • ***通过什么方式***网吧
  • **PHP分步表单提交思路(分页表单提交)
  • .NET C# 使用 SetWindowsHookEx 监听鼠标或键盘消息以及此方法的坑
  • .NET Micro Framework 4.2 beta 源码探析
  • .NET/C# 使用反射注册事件
  • .NET/C# 在代码中测量代码执行耗时的建议(比较系统性能计数器和系统时间)...
  • .NET使用存储过程实现对数据库的增删改查
  • .net通用权限框架B/S (三)--MODEL层(2)
  • .net下简单快捷的数值高低位切换
  • .pyc文件还原.py文件_Python什么情况下会生成pyc文件?
  • @JsonFormat与@DateTimeFormat注解的使用
  • @软考考生,这份软考高分攻略你须知道
  • [ Linux 长征路第五篇 ] make/Makefile Linux项目自动化创建工具
  • [ vulhub漏洞复现篇 ] Apache APISIX 默认密钥漏洞 CVE-2020-13945
  • [C++]打开新世界的大门之C++入门