当前位置: 首页 > 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环境变量启动开发/生产环境
  • 【笔记】你不知道的JS读书笔记——Promise
  • Mac转Windows的拯救指南
  • Mysql5.6主从复制
  • SQLServer之创建数据库快照
  • Sublime Text 2/3 绑定Eclipse快捷键
  • Vue全家桶实现一个Web App
  • 程序员最讨厌的9句话,你可有补充?
  • 构造函数(constructor)与原型链(prototype)关系
  • 前嗅ForeSpider中数据浏览界面介绍
  • 手写一个CommonJS打包工具(一)
  • 源码安装memcached和php memcache扩展
  • 国内开源镜像站点
  • # Swust 12th acm 邀请赛# [ E ] 01 String [题解]
  • $ git push -u origin master 推送到远程库出错
  • (react踩过的坑)Antd Select(设置了labelInValue)在FormItem中initialValue的问题
  • (二)七种元启发算法(DBO、LO、SWO、COA、LSO、KOA、GRO)求解无人机路径规划MATLAB
  • (附源码)ssm教材管理系统 毕业设计 011229
  • (附源码)计算机毕业设计SSM疫情社区管理系统
  • (力扣)1314.矩阵区域和
  • (论文阅读11/100)Fast R-CNN
  • (七)微服务分布式云架构spring cloud - common-service 项目构建过程
  • (区间dp) (经典例题) 石子合并
  • (算法设计与分析)第一章算法概述-习题
  • (转)大型网站架构演变和知识体系
  • (转载)从 Java 代码到 Java 堆
  • (转载)利用webkit抓取动态网页和链接
  • (轉貼) 寄發紅帖基本原則(教育部禮儀司頒布) (雜項)
  • (状压dp)uva 10817 Headmaster's Headache
  • .net core 源码_ASP.NET Core之Identity源码学习
  • .Net Redis的秒杀Dome和异步执行
  • .NET/C# 在代码中测量代码执行耗时的建议(比较系统性能计数器和系统时间)...
  • @data注解_SpringBoot 使用WebSocket打造在线聊天室(基于注解)
  • @vue/cli脚手架
  • [ Linux Audio 篇 ] 音频开发入门基础知识
  • [14]内置对象
  • [20180129]bash显示path环境变量.txt
  • [20180224]expdp query 写法问题.txt
  • [AR]Vumark(下一代条形码)
  • [CareerCup] 6.1 Find Heavy Bottle 寻找重瓶子
  • [LeetCode] 626. 换座位