源码链接: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部分代码如下:

<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.mybatis.spring.boot</groupId>
<artifactId>mybatis-spring-boot-starter</artifactId>
<version>2.1.1</version>
</dependency> <dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<scope>runtime</scope>
</dependency> <dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-thymeleaf</artifactId>
<version>2.1.4.RELEASE</version>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-jdbc</artifactId>
</dependency> <dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
<exclusions>
<exclusion>
<groupId>org.junit.vintage</groupId>
<artifactId>junit-vintage-engine</artifactId>
</exclusion>
</exclusions>
</dependency>
</dependencies> <build>
<!-- maven工程在默认情况下src/main/java目录下的mapper文件是不发布到target目录下的 -->
<!-- 增加下面resource配置将resources目录下的文件和java目录下的配置文件添加资源映射-->
<resources>
<resource>
<directory>src/main/resources</directory>
<includes>
<include>**/*.*</include>
</includes>
<filtering>true</filtering>
</resource>
<resource>
<directory>src/main/java</directory>
<includes>
<include>**/*.properties</include>
<include>**/*.xml</include>
</includes>
<filtering>false</filtering>
</resource>
</resources>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>

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

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

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

<!-- 配置mybatis的缓存,延迟加载等等一系列属性 -->
<settings> <!-- 全局映射器启用缓存 -->
<setting name="cacheEnabled" value="true"/> <!-- 查询时,关闭关联对象即时加载以提高性能 -->
<setting name="lazyLoadingEnabled" value="true"/> <!-- 对于未知的SQL查询,允许返回不同的结果集以达到通用的效果 -->
<setting name="multipleResultSetsEnabled" value="true"/> <!-- 允许使用列标签代替列名 -->
<setting name="useColumnLabel" value="true"/> <!-- 不允许使用自定义的主键值(比如由程序生成的UUID 32位编码作为键值),数据表的PK生成策略将被覆盖 -->
<setting name="useGeneratedKeys" value="false"/> <!-- 给予被嵌套的resultMap以字段-属性的映射支持 FULL,PARTIAL -->
<setting name="autoMappingBehavior" value="PARTIAL"/> <!-- 对于批量更新操作缓存SQL以提高性能 BATCH,SIMPLE -->
<!-- <setting name="defaultExecutorType" value="BATCH" /> --> <!-- 数据库超过25000秒仍未响应则超时 -->
<!-- <setting name="defaultStatementTimeout" value="25000" /> --> <!-- 允许对嵌套语句使用行边界 -->
<setting name="safeRowBoundsEnabled" value="false"/> <!-- Enables automatic mapping from classic database column names A_COLUMN to camel case classic Java property names aColumn. -->
<setting name="mapUnderscoreToCamelCase" value="true"/> <!-- 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
local session will be used just for statement execution, no data will be shared between two different calls to the same SqlSession. -->
<setting name="localCacheScope" value="SESSION"/> <!-- 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
like NULL, VARCHAR or OTHER. -->
<setting name="jdbcTypeForNull" value="OTHER"/> <!-- Specifies which Object's methods trigger a lazy load -->
<setting name="lazyLoadTriggerMethods" value="equals,clone,hashCode,toString"/> <!-- 设置关联对象加载的形态,此处为按需加载字段(加载字段由SQL指 定),不会加载关联表的所有字段,以提高性能 -->
<setting name="aggressiveLazyLoading" value="false"/> </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;

private String username;

private String password;

private Integer age;

public Long getUserId() { return userId; }

public void setUserId(Long userId) { this.userId = userId; }

public String getUsername() {
return username;
} public void setUsername(String username) {
this.username = username;
} public String getPassword() {
return password;
} public void setPassword(String password) {
this.password = password;
} public Integer getAge() {
return age;
} public void setAge(Integer age) {
this.age = age;
}

}

在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);

int insert(User record);

int insertSelective(User record);

User selectByPrimaryKey(Long userid);

List<User> selectAll();

int updateByPrimaryKeySelective(User record);

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 {

List<User> selectAll();

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 {

@Resource
private UserMapper userMapper; @Override
public List<User> selectAll() { return userMapper.selectAll(); } @Override
public int updateByPrimaryKeySelective(User record) {
return userMapper.updateByPrimaryKeySelective(record);
}

}

控制类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 {

@Autowired
private UserService userService; @RequestMapping("/list")
public ModelAndView list(){
List<User> users=userService.selectAll();
ModelMap model = new ModelMap();
model.addAttribute("users",users);
return new ModelAndView("userlist",model);
} @RequestMapping(value = "/update", method = { RequestMethod.POST })
@ResponseBody
public Map<String,String> update(@RequestBody User user){
Map<String,String> result=new HashMap<>(1);
int i = userService.updateByPrimaryKeySelective(user);
if(i > 0){ result.put("success","ok"); }
else{ result.put("success","更新失败"); }
return result;
}

}

最后上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. python 装饰器-初识

    一.装饰器的形成过程 1.函数无参数,无返回值 import time def f1(): # 无参数,无返回值 time.sleep(1) print("Hello, World!&quo ...

  2. Djaingo 日志配置

    1.setting.py文件 # 项目级别的日志配置 BASE_LOG_DIR = os.path.join(BASE_DIR, "log") LOGGING = { 'versi ...

  3. [bzoj4446] [loj#2009] [Scoi2015] 小凸玩密室

    Description 小凸和小方相约玩密室逃脱,这个密室是一棵有 \(n\) 个节点的完全二叉树,每个节点有一个灯泡.点亮所有灯泡即可逃出密室.每个灯泡有个权值 \(Ai\) ,每条边也有个权值 \ ...

  4. 个人任务day6

    今日计划: 学会将网页放到公用网络上,并生成快捷方式. 昨日成果:完成登录页面.

  5. mybatis增强工具MyBatis-plus

    如果你正在用mybatis,那MyBatis-plus你不能错过,配合使用可极大简化开发.提高效率! 简介 MyBatis-Plus(简称 MP)是一个 MyBatis 的增强工具,在 MyBatis ...

  6. 解决luajit ffi cdata引用cdata的问题

    使用luajit ffi会遇到cdata引用cdata的情况.官方说明是必须手动保存所有cdata的引用,否则会被gc掉. ffi.cdef[[ struct A { int id; }; struc ...

  7. 基于playcanvas的3d模型展示

    1.使用基于playcanvas的离线编辑器制作模型效果 2.使用基于playcanvas的开发包读取编辑好的3d模型进行在线3d展示 效果如下:

  8. UML类图的情话诉说

    你知道吗这个世界是个繁杂而又简单的世界 你我在冥冥中都有联系 有时候,你像我的妈妈一样,对你依赖满满, 没有你我不知道何去何从(依赖) 有时候,看你,真如我亲爱孩子般,想一直拥你入我怀抱,但我知道终究 ...

  9. 关于Windows Server 服务器 安装tomcat部署Java Web 项目的问题

    我遇到的问题是:不知道怎么配置,感觉在服务器上部署一个web项目,应该是很高大上,步骤应该很繁琐,但是,事实却不是那样.配置反而挺简单. tomcat配置:在tomcat安装目录中的conf文件夹下有 ...

  10. 找不到文件异常java.io.IOException: Resource [classpath:shiro.ini] could not be found.

    情景 tomcat启东时,老是报错,在classpath下找不到配置文件,但是配置文件已经放在resource目录下了 解决方案 出现该异常的原因,是因为新建的conf文件夹,识别不了,因为没有设置成 ...