当前位置:   article > 正文

Spring boot+Mybatis+达梦数据库的简单开发_idea搭建springboot+mybatis+达梦

idea搭建springboot+mybatis+达梦

引言:相信很多人和我一样,在平常的学习中使用的数据库系统都是MySql或者Oracle,笔者最近突然对国产数据库产生了兴趣,想试试能不能通过我们常用的Spring boot与Mybatis框架访问达梦数据库。说干就干!

一、准备

工欲善其事必先利其器,想要进行开发,首先工具是必不可少的。

编辑器:我自己比较喜欢使用IDEA,这里我就用IDEA作为一个示范

数据库系统:这里我使用的是DM8,DM8是达梦公司的新一代大型通用关系型数据库,大家感兴趣的话可以去达梦公司的官网下载。

jar包:这里我们需要准备达梦数据库的两个Jar包,分别是达梦数据库的驱动和方言依赖包,获取的方式我会在后面展示。

二、工程创建

这一部分是给没有使用IDEA创建过Spring boot项目的新人的一些简单教程,大佬就可以直接略过了(其实这个文章就是给新人看的......)

1、Spring boot项目的创建

1)新建工程:

2)选择Spring Initializr,一般情况下我们可以选择通过图中https://start.spring.io这个网站来创建工程:

 

3)项目的构建和依赖的导入,我们要用到Mybatis,因此在依赖中需要选择Mybatis Framework

4)、构建完毕之后按ctrl+回车,我们会得到一个压缩包,解压后用IDEA打开,就是我们刚刚构建好的工程了。

2、数据库的准备和实例创建

 打开官网上下载好的DM8镜像文件,一步步执行安装,安装完毕之后点击达梦数据库配置助手创建一个实例(图1),按引导教程一步步走,设置端口号(图2)设置你的口令和用户名(图3)(默认为SYSDBA),最后点击完成。

                                        图1                                                                图3

 

                                     图2                                                                        图4

 3、打开DM管理工具,输入你刚才设置的端口号,用户名和口令登录

 到这里工程就创建完毕了,后面我们进行一个小小的项目开发,创建一个Student表,实现增删改查的功能,下面我们来看看pom配置文件和代码怎么写。

三、编程

1、建表: 首先我们创建这样一个表,包含学生id,学生姓名,学生生日和学生介绍四种属性。建表的SQL语句如下:

 设置id为它的主键。

2、pom文件的配置

这个时候回到我们最初的问题,没有JDBC Driver驱动包和方言依赖包。这个问题其实很好解决,DM数据库在安装完成之后可以在你的安装路径下的\deriver\jdbc文件夹中找到对应的驱动包和方言依赖包,之后在你工程的src目录下新建一个lib文件夹将,这两个包拷贝进去就行了,这里我的Java用的是JDK1.8,因此驱动用的是版本最高的DMJdbcDriver18。

驱动包的问题解决了,现在只需要在pom中添加这两个包的依赖就行了。如果你和我前面的配置是相同的,按照我给出的代码,添加依赖就行了。

  1. <!--DM-->
  2. <dependency>
  3. <groupId>com.dm</groupId>
  4. <artifactId>DmJdbcDriver</artifactId>
  5. <version>1.8</version>
  6. <scope>system</scope>
  7. <systemPath>${project.basedir}/src/lib/DmJdbcDriver18.jar</systemPath>
  8. </dependency>
  9. <!--dialect-->
  10. <dependency>
  11. <groupId>com.dm.dialect</groupId>
  12. <artifactId>hibernate5</artifactId>
  13. <version>5.3</version>
  14. <scope>system</scope>
  15. <systemPath>${project.basedir}/src/lib/DmDialect-for-hibernate5.3.jar</systemPath>
  16. </dependency>

3、工程结构如下图所示,StudentMapper就是Mybatis的Mapper映射文件

4、 注意application.properties文件中DM数据库驱动名的书写方式,username和password一定要和刚才我们创建的实例相同。这里笔者的配置方式作为初学者的一个参考。

  1. #DM
  2. spring.datasource.driver-class-name=dm.jdbc.driver.DmDriver
  3. spring.datasource.url =jdbc:dm://localhost:5336
  4. spring.datasource.username=SYSDBA
  5. spring.datasource.password=SYSDBA
  6. mybatis.mapper-locations=classpath:mapper/*Mapper.xml
  7. mybatis.type-aliases-package=com.example.DM.entity
  8. server.port=8080
  9. spring.thymeleaf.cache=false
  10. spring.thymeleaf.mode=HTML
  11. spring.thymeleaf.encoding=UTF-8
  12. spring.thymeleaf.prefix=classpath:/templates/
  13. spring.thymeleaf.suffix=.html

 5、Mybatis映射文件的名字空间一定要和dao层的接口对应,resultMap要和entity的student类以及数据库中的表对应

  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
  3. <mapper namespace="com.example.DM.dao.StudentDao">
  4. <resultMap id="BaseStudentMap" type="com.example.DM.entity.Student">
  5. <result column="id" property="id" jdbcType="INTEGER"/>
  6. <result column="name" property="name" jdbcType="VARCHAR"/>
  7. <result column="birthday" property="birthday" jdbcType="DATE"/>
  8. <result column="notes" property="notes" jdbcType="CLOB" />
  9. </resultMap>
  10. </mapper>

 6、Mapper文件中的增删改查操作

  1. <select id="getAll" parameterType="com.example.DM.entity.Student" resultMap="BaseStudentMap">
  2. SELECT *
  3. FROM
  4. student
  5. </select>
  6. <update id="update" parameterType="com.example.DM.entity.Student">
  7. UPDATE
  8. student
  9. SET
  10. name=#{name},
  11. birthday=#{birthday},
  12. notes=#{notes}
  13. WHERE
  14. id=#{id}
  15. </update>
  16. <delete id="delete" parameterType="com.example.DM.entity.Student">
  17. DELETE
  18. FROM student
  19. WHERE id=#{id}
  20. </delete>
  21. <insert id="insert" parameterType="com.example.DM.entity.Student" >
  22. Insert into
  23. student
  24. values(#{id},#{name},#{birthday},#{notes})
  25. </insert>

 7、StudentDao中每个接口的名字对应Mapper文件中每一个SQL脚本的id

  1. package com.example.DM.dao
  2. import com.example.DM.entity.Student;
  3. import org.springframework.stereotype.Repository;
  4. import java.util.List;
  5. @Repository
  6. public interface StudentDao {
  7. List<Student> getAll();
  8. int update(Student student);
  9. int delete(Student student);
  10. int insert(Student student);
  11. }

 8、service层执行具体的操作,目的是将数据返回给controller层

  1. package com.example.DM.service;
  2. import com.example.DM.dao.StudentDao;
  3. import com.example.DM.entity.Student;
  4. import org.springframework.stereotype.Service;
  5. import javax.annotation.Resource;
  6. import java.util.List;
  7. @Service
  8. public class StudentService {
  9. @Resource
  10. StudentDao studentDao;
  11. public List<Student> getAll(){
  12. //System.out.println("getall");
  13. List<Student> list =studentDao.getAll();
  14. System.out.println(list.size());
  15. return list;
  16. }
  17. public int update(Student student){
  18. studentDao.update(student);
  19. return 1;
  20. }
  21. public int delete(Student student){
  22. studentDao.delete(student);
  23. return 1;
  24. }
  25. public int insert(Student student){
  26. studentDao.insert(student);
  27. return 1;
  28. }
  29. }

 9、controller层负责接收前端的请求并交给service层处理

  1. package com.example.DM.controller;
  2. import com.example.DM.entity.Student;
  3. import com.example.DM.service.StudentService;
  4. import com.example.DM.util.Result;
  5. import org.springframework.web.bind.annotation.RequestMapping;
  6. import org.springframework.web.bind.annotation.RestController;
  7. import javax.annotation.Resource;
  8. import java.util.List;
  9. @RestController
  10. @RequestMapping("/student")
  11. public class StudentController {
  12. @Resource
  13. private StudentService studentService;
  14. @RequestMapping("/all")
  15. public Result all(){
  16. Result result = new Result();
  17. System.out.println("start");
  18. List<Student> allStudent = studentService.getAll();
  19. // for(int i=0;i<allStudent.size();i++){
  20. // System.out.println(allStudent.get(i).toString());
  21. // }
  22. result.setStatus(1);
  23. result.getResultMap().put("data",allStudent);
  24. return result;
  25. }
  26. @RequestMapping("/opt")
  27. public Result opt(Student student){
  28. Result result = new Result();
  29. studentService.update(student);
  30. result.setStatus(1);
  31. return result;
  32. }
  33. @RequestMapping("/del")
  34. public Result del(int i){
  35. Result result = new Result();
  36. Student student = new Student();
  37. student.setId(i);
  38. studentService.delete(student);
  39. result.setStatus(1);
  40. return result;
  41. }
  42. @RequestMapping("/add")
  43. public Result add(Student student){
  44. Result result = new Result();
  45. studentService.insert(student);
  46. result.setStatus(1);
  47. return result;
  48. }
  49. }

 注意:这里的Result是一个自定义类,由一个Map<String, Object>和int值组成,分别存储数据和状态信息返回给前端。

 四、结果

 好了,现在代码写完了,我们在前端用一个表格来显示我们得到的数据吧,将刚才controller的all方法的注释去掉,可以看到前端和后端都打印出了数据。

 

 至于修改、删除和添加功能的前端代码,大家可以根据自己的喜好用JavaScript试着实现一下。

五、声明

 此文章中出现的代码和工程构建方式存在不规范和不安全的情况。仅仅用于学习,请尽量不要在实际工作中使用。

想了解更多达梦数据库相关信息,欢迎访问达梦技术社区:https://eco.dameng.com/

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/IT小白/article/detail/480595
推荐阅读
相关标签
  

闽ICP备14008679号