源码链接:https://pan.baidu.com/s/1-LtF56dnCM277v5lILRM7g

提取码:c374

第二篇 Springboot mybatis generate根据数据库表自动生成实体类、Mapper和Mapper.xml

第一个博文没什么废话直接上图和代码

点击【File】- 【New】-【Project】新建项目,

点击【Finish】完成项目的创建,目录结构如下

连接数据库还需要在pom.xml文件中增加一个依赖spring-boot-starter-jdbc,同时将mysql-connector-java依赖的scope属性修改成version版本不修改可能会出现数据库连接不上,另外增增加了依赖项thymeleaf是个模板框架前端使用的。

maven工程在默认情况下src/main/java目录下的mapper文件是不发布到target目录下的,所以我们还要在pom.xml增加下面配置

pom.xml文件依赖部分和resources部分代码如下:

  1. <dependencies>
  2. <dependency>
  3. <groupId>org.springframework.boot</groupId>
  4. <artifactId>spring-boot-starter-web</artifactId>
  5. </dependency>
  6. <dependency>
  7. <groupId>org.mybatis.spring.boot</groupId>
  8. <artifactId>mybatis-spring-boot-starter</artifactId>
  9. <version>2.1.1</version>
  10. </dependency>
  11. <dependency>
  12. <groupId>mysql</groupId>
  13. <artifactId>mysql-connector-java</artifactId>
  14. <scope>runtime</scope>
  15. </dependency>
  16. <dependency>
  17. <groupId>org.springframework.boot</groupId>
  18. <artifactId>spring-boot-starter-thymeleaf</artifactId>
  19. <version>2.1.4.RELEASE</version>
  20. </dependency>
  21. <dependency>
  22. <groupId>org.springframework.boot</groupId>
  23. <artifactId>spring-boot-starter-jdbc</artifactId>
  24. </dependency>
  25. <dependency>
  26. <groupId>org.springframework.boot</groupId>
  27. <artifactId>spring-boot-starter-test</artifactId>
  28. <scope>test</scope>
  29. <exclusions>
  30. <exclusion>
  31. <groupId>org.junit.vintage</groupId>
  32. <artifactId>junit-vintage-engine</artifactId>
  33. </exclusion>
  34. </exclusions>
  35. </dependency>
  36. </dependencies>
  37. <build>
  38. <!-- maven工程在默认情况下src/main/java目录下的mapper文件是不发布到target目录下的 -->
  39. <!-- 增加下面resource配置将resources目录下的文件和java目录下的配置文件添加资源映射-->
  40. <resources>
  41. <resource>
  42. <directory>src/main/resources</directory>
  43. <includes>
  44. <include>**/*.*</include>
  45. </includes>
  46. <filtering>true</filtering>
  47. </resource>
  48. <resource>
  49. <directory>src/main/java</directory>
  50. <includes>
  51. <include>**/*.properties</include>
  52. <include>**/*.xml</include>
  53. </includes>
  54. <filtering>false</filtering>
  55. </resource>
  56. </resources>
  57. <plugins>
  58. <plugin>
  59. <groupId>org.springframework.boot</groupId>
  60. <artifactId>spring-boot-maven-plugin</artifactId>
  61. </plugin>
  62. </plugins>
  63. </build>

下面我们来修改程序启动项配置和数据库连接配置:

将application.properties文件重命名为application.yml,鼠标右键-【Refactor】-【Rname】,之后编辑application.yml文件

在resources目录下新建mybatis-config.xml文件,代码如下图片部分代码编辑器会自动隐藏只能截图:

  1. <!-- 配置mybatis的缓存,延迟加载等等一系列属性 -->
  2. <settings>
  3. <!-- 全局映射器启用缓存 -->
  4. <setting name="cacheEnabled" value="true"/>
  5. <!-- 查询时,关闭关联对象即时加载以提高性能 -->
  6. <setting name="lazyLoadingEnabled" value="true"/>
  7. <!-- 对于未知的SQL查询,允许返回不同的结果集以达到通用的效果 -->
  8. <setting name="multipleResultSetsEnabled" value="true"/>
  9. <!-- 允许使用列标签代替列名 -->
  10. <setting name="useColumnLabel" value="true"/>
  11. <!-- 不允许使用自定义的主键值(比如由程序生成的UUID 32位编码作为键值),数据表的PK生成策略将被覆盖 -->
  12. <setting name="useGeneratedKeys" value="false"/>
  13. <!-- 给予被嵌套的resultMap以字段-属性的映射支持 FULL,PARTIAL -->
  14. <setting name="autoMappingBehavior" value="PARTIAL"/>
  15. <!-- 对于批量更新操作缓存SQL以提高性能 BATCH,SIMPLE -->
  16. <!-- <setting name="defaultExecutorType" value="BATCH" /> -->
  17. <!-- 数据库超过25000秒仍未响应则超时 -->
  18. <!-- <setting name="defaultStatementTimeout" value="25000" /> -->
  19. <!-- 允许对嵌套语句使用行边界 -->
  20. <setting name="safeRowBoundsEnabled" value="false"/>
  21. <!-- Enables automatic mapping from classic database column names A_COLUMN to camel case classic Java property names aColumn. -->
  22. <setting name="mapUnderscoreToCamelCase" value="true"/>
  23. <!-- MyBatis uses local cache to prevent circular references and speed up repeated nested queries. By default (SESSION) all queries executed during a session are cached. If localCacheScope=STATEMENT
  24. local session will be used just for statement execution, no data will be shared between two different calls to the same SqlSession. -->
  25. <setting name="localCacheScope" value="SESSION"/>
  26. <!-- Specifies the JDBC type for null values when no specific JDBC type was provided for the parameter. Some drivers require specifying the column JDBC type but others work with generic values
  27. like NULL, VARCHAR or OTHER. -->
  28. <setting name="jdbcTypeForNull" value="OTHER"/>
  29. <!-- Specifies which Object's methods trigger a lazy load -->
  30. <setting name="lazyLoadTriggerMethods" value="equals,clone,hashCode,toString"/>
  31. <!-- 设置关联对象加载的形态,此处为按需加载字段(加载字段由SQL指 定),不会加载关联表的所有字段,以提高性能 -->
  32. <setting name="aggressiveLazyLoading" value="false"/>
  33. </settings>

配置项都已完成,下面开始代码部分目录结构如下图新增Controller、Service、Mapper、Model:

选中big.strong.disheng右键【New】-【Package】输入big.strong.disheng.user.model创建model包,在model右键【New】-【Java Class】添加实体类User,添加4个属性

代码生成getter和setter的快捷键是alt+Insert:

package big.strong.disheng.user.model;

public class User {

private Long userId;

  1. private String username;
  2. private String password;
  3. private Integer age;
  4. public Long getUserId() { return userId; }
  5. public void setUserId(Long userId) { this.userId = userId; }
  6. public String getUsername() {
  7. return username;
  8. }
  9. public void setUsername(String username) {
  10. this.username = username;
  11. }
  12. public String getPassword() {
  13. return password;
  14. }
  15. public void setPassword(String password) {
  16. this.password = password;
  17. }
  18. public Integer getAge() {
  19. return age;
  20. }
  21. public void setAge(Integer age) {
  22. this.age = age;
  23. }

}

在dao包添加UserMapper类

代码:

package big.strong.disheng.user.dao;

import big.strong.disheng.user.model.User;

import org.apache.ibatis.annotations.Mapper;

import java.util.List;

@Mapper

public interface UserMapper {

int deleteByPrimaryKey(Long userid);

  1. int insert(User record);
  2. int insertSelective(User record);
  3. User selectByPrimaryKey(Long userid);
  4. List<User> selectAll();
  5. int updateByPrimaryKeySelective(User record);
  6. int updateByPrimaryKey(User record);

}

dao包下的UserMapper.xml文件内容(增删改查语句)编辑器将其大部分内容忽略显示异常截取部分截图供参考,需要完整代码可到最下方有连接去下载

service包中的UserService接口文件很简单,是User的查询和修改两个接口代码

package big.strong.disheng.user.service;

import big.strong.disheng.user.model.User;

import java.util.List;

public interface UserService {

  1. List<User> selectAll();
  2. int updateByPrimaryKeySelective(User record);

}

UserServiceImpl类

UserServiceImpl代码:

package big.strong.disheng.user.service.Impl;

import big.strong.disheng.user.dao.UserMapper;

import big.strong.disheng.user.model.User;

import big.strong.disheng.user.service.UserService;

import org.springframework.stereotype.Service;

import javax.annotation.Resource;

import java.util.List;

@Service

public class UserServiceImpl implements UserService {

  1. @Resource
  2. private UserMapper userMapper;
  3. @Override
  4. public List<User> selectAll() { return userMapper.selectAll(); }
  5. @Override
  6. public int updateByPrimaryKeySelective(User record) {
  7. return userMapper.updateByPrimaryKeySelective(record);
  8. }

}

控制类UserController如下图:

上面修改User的请求一定注意@ResponseBody和@RequestBody别漏掉,否则后台会无法响应前端的请求

UserController代码:

package big.strong.disheng.user.controller;

import big.strong.disheng.user.model.User;

import big.strong.disheng.user.service.UserService;

import org.springframework.beans.factory.annotation.Autowired;

import org.springframework.stereotype.Controller;

import org.springframework.ui.ModelMap;

import org.springframework.web.bind.annotation.RequestBody;

import org.springframework.web.bind.annotation.RequestMapping;

import org.springframework.web.bind.annotation.RequestMethod;

import org.springframework.web.bind.annotation.ResponseBody;

import org.springframework.web.servlet.ModelAndView;

import java.util.HashMap;

import java.util.List;

import java.util.Map;

@Controller

@RequestMapping("/user")

public class UserController {

  1. @Autowired
  2. private UserService userService;
  3. @RequestMapping("/list")
  4. public ModelAndView list(){
  5. List<User> users=userService.selectAll();
  6. ModelMap model = new ModelMap();
  7. model.addAttribute("users",users);
  8. return new ModelAndView("userlist",model);
  9. }
  10. @RequestMapping(value = "/update", method = { RequestMethod.POST })
  11. @ResponseBody
  12. public Map<String,String> update(@RequestBody User user){
  13. Map<String,String> result=new HashMap<>(1);
  14. int i = userService.updateByPrimaryKeySelective(user);
  15. if(i > 0){ result.put("success","ok"); }
  16. else{ result.put("success","更新失败"); }
  17. return result;
  18. }

}

最后上userlist.html代码中thymeleaf绑定数据如下

userlist.html代码编辑器无法显示,需要完整代码可到最下方有连接去下载

到目前为止代码全部完成,点击菜单栏【Build】-【Rebuild Ojbect】编译项目,编译完成后点击菜单栏【Run】-【Debug ‘DishengApplication’】项目运行(DishengApplication是项目名称),打开浏览器输入http://localhost:8001/user/list显示下面画面,端口号是在application.yml中设置的,前提数据库中有数据

点击【编辑】可以修改用户名称

第二篇 Springboot mybatis generate根据数据库表自动生成实体类、Mapper和Mapper.xml

源码链接:https://pan.baidu.com/s/1-LtF56dnCM277v5lILRM7g

提取码:c374

第一篇 Springboot + Web MVC + MyBatis + 简单UI + Thymeleaf实现的更多相关文章

  1. 第一篇:web之前端之html

    前端之html   前端之html 本节内容 前端概述 html结构 标签探秘 <!DOCTYPE html>标签 head标签 body标签 1.前端概述 一个web服务的组成分为前端和 ...

  2. 第一篇博客-MVC路由简述

    一直念叨着写博客,可是迟迟不见下笔,工作到现在,技术长进了一点,但是记的东西都很杂,也没个思路,也不知道怎么去写一遍博客,现在在做MVC,写一点跟MVC有关的吧. 我们都知道MVC程序的所有请求都是先 ...

  3. 【第一篇】说说MVC+EF easyui dataGrid 动态加载分页表格

    首先上javascript的代码 <script type="text/javascript"> $(function () { LoadGrid(); }) //加载 ...

  4. “MVC+Nhibernate+Jquery-EasyUI”信息发布系统 第一篇

    一.第一篇内容中必须得简单的介绍一下MVC(在大学时用的是WebForm,拖控件感觉很爽,但是工作后,技术总监让一定要放弃这种 想法!) 1.MVC是什么?:(1) ASP.NET MVC是微软官方提 ...

  5. 使用WSE实现Web Service安全----我的第一篇

    原文:使用WSE实现Web Service安全----我的第一篇 WSE(Web Services Enhancements)是微软为了使开发者通过.NET创建出更强大,更好用的Web Service ...

  6. SpringBoot Web篇(二)

    摘要 继上一篇 SpringBoot Web篇(一) 文件上传 当我们服务器需要接收用户上传的文件时,就需要使用MultipartFile作为参数接收文件.如下: @PostMapping(" ...

  7. Springboot学习与mybatis逆向生成工具

    最近H2数据库越用越觉得方便,在不同办公处无缝继续demo的感觉就是爽.   今天接上一篇Springboot简洁整合mybatis,补上sts(即eclipse)使用mybatis generato ...

  8. Jersey+mybatis实现web项目第一篇

    ---恢复内容开始--- Jesery第一篇:实现Jesery前后台页面交互,Form表单提交,后台控制页面跳转 该项目中有实现的功能: Mybatis实现后台数据持久化 Jersey页面数据提交 后 ...

  9. 【第一篇】ASP.NET MVC快速入门之数据库操作(MVC5+EF6)

    目录 [第一篇]ASP.NET MVC快速入门之数据库操作(MVC5+EF6) [第二篇]ASP.NET MVC快速入门之数据注解(MVC5+EF6) [第三篇]ASP.NET MVC快速入门之安全策 ...

随机推荐

  1. MVEL2.0的使用实例(一)

    本文是对java整合mvel2.0的一点示例: 如果表达式中有变量,解析表达式时必须传一个map MVEL.eval(expression, vars); /** * 基本解析表达式 */@Testp ...

  2. 解决jar包依赖冲突(idea)

    在IDEA状态下查看项目依赖的关系 关系如下图 红色数据jar包冲突 在对应的依赖中出去去冲突依赖

  3. noip2017考前基础复习——数论数学

    ·最大公约数 gcd 辗转相除法  gcd(a,b)=gcd(b,a%b) int gcd(int x,int y){ ) return x; return gcd(y,x%y); } 效率O(log ...

  4. Java的String类常用方法

    一.构造函数 String(byte[ ] bytes):通过byte数组构造字符串对象. String(char[ ] value):通过char数组构造字符串对象. String(Sting or ...

  5. openpyxl库实现对excel文档进行编辑(追加写入)

    首先,这个库只支持xlsx格式的excel文件 预期,对”excel_test.xlsx“的A1单元格写入”hello word“ 1.安装”openpyxl“库,pip install openpy ...

  6. json的结构和表示方式(对象object、数组array)

    json简单说就是javascript中的对象和数组,所以这两种结构就是对象和数组两种结构,通过这两种结构可以表示各种复杂的结构 1.对象:对象在js中表示为“{}”括起来的内容,数据结构为 {key ...

  7. 看看AQS阻塞队列和条件队列

    上一篇简单介绍了AQS,我们大概知道AQS就是一个框架,把很多功能都给实现了(比如入队规则,唤醒节点中的线程等),我们如果要使用的话只需要实现其中的一些方法(比如tryAcquire等)就行了!这次主 ...

  8. cmd 打开文件

    打开cmd Python   文件地址

  9. CAP原理和BASE理论

    CAP原理 概述 CAP理论的主要场景是在分布式环境下,在单机环境下,基本可不考虑CAP问题. CAP理论就是说在分布式存储系统中,最多只能实现上面的两点.而由于当前的网络硬件肯定会出现延迟丢包等问题 ...

  10. gerrit merge后不能提交问题

    需求:git 分支合并 问题:使用 git merge 在本地执行分支合并操作,然后想 push 到 gerrit 上评审入库,可是在提交时,提示:  ! [remote rejected] HEAD ...