SpringBoot学习(一):整合myBaits

##本章节包含springboot项目创建,mybatis自动生成代码及配置项,以及两者整合。

##开发环境:IDEA2018.2.6 ,JDK1.8 ,mysql5.7 (window10)

第一步:新建数据库及数据表

DROP TABLE IF EXISTS `users`;

CREATE TABLE `users`  (
   `user_id` int(11) NOT NULL AUTO_INCREMENT COMMENT ‘用户id‘,
   `username` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT ‘用户名‘,
   `password` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT ‘密码‘,
   PRIMARY KEY (`user_id`) USING BTREE

) ENGINE = InnoDB AUTO_INCREMENT = 3 CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = Dynamic;

INSERT INTO `users` VALUES (1, ‘admin‘, ‘admin‘);

INSERT INTO `users` VALUES (2, ‘root‘, ‘root‘);

第二步:创建springboot工程,话不多说,有图有真相:

   

第三步:根据数据库表使用mybatis-generator反向生成代码

(参考:https://blog.csdn.net/qq_40307945/article/details/81351302):

3.1 引入依赖(注意:引入位置是在plugins标签下)

<plugin>    <groupId>org.mybatis.generator</groupId>    <artifactId>mybatis-generator-maven-plugin</artifactId>    <version>1.3.7</version>    <configuration>        <verbose>true</verbose>        <overwrite>true</overwrite>    </configuration></plugin>

3.2 修改自动生成代码的配置文件,文件路径:main/resource/generatorConfig.xml、db.properties

<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE generatorConfiguration        PUBLIC "-//mybatis.org//DTD MyBatis Generator Configuration 1.0//EN"        "http://mybatis.org/dtd/mybatis-generator-config_1_0.dtd">

<generatorConfiguration>    <!--导入属性配置-->    <properties resource="db.properties"></properties>

<!-- 指定数据库驱动的jdbc驱动jar包的位置 -->    <classPathEntry location="${db.driverLocation}" />

<!-- context 是逆向工程的主要配置信息 -->    <!-- id:起个名字 -->    <!-- targetRuntime:设置生成的文件适用于那个 mybatis 版本 -->    <context id="default" targetRuntime="MyBatis3">

<!--optional,旨在创建class时,对注释进行控制-->        <commentGenerator>            <property name="suppressDate" value="true" />            <!-- 是否去除自动生成的注释 true:是 : false:否 -->            <property name="suppressAllComments" value="true" />        </commentGenerator>

<!--jdbc的数据库连接-->        <jdbcConnection driverClass="${db.driverClassName}"                        connectionURL="${db.url}"                        userId="${db.username}"                        password="${db.password}">        </jdbcConnection>

<!--非必须,类型处理器,在数据库类型和java类型之间的转换控制-->        <javaTypeResolver>            <!-- 默认情况下数据库中的 decimal,bigInt 在 Java 对应是 sql 下的 BigDecimal 类 -->            <!-- 不是 double 和 long 类型 -->            <!-- 使用常用的基本类型代替 sql 包下的引用类型 -->            <property name="forceBigDecimals" value="false" />        </javaTypeResolver>

<!-- targetPackage:生成的实体类所在的包 -->        <!-- targetProject:生成的实体类所在的硬盘位置 -->        <javaModelGenerator targetPackage="com.ifenglin.learn.entity"                            targetProject=".\src\main\java">            <!-- 是否允许子包 -->            <property name="enableSubPackages" value="false" />            <!-- 是否对modal添加构造函数 -->            <property name="constructorBased" value="true" />            <!-- 是否清理从数据库中查询出的字符串左右两边的空白字符 -->            <property name="trimStrings" value="true" />            <!-- 建立model对象是否不可改变 即生成的model对象不会有setter方法,只有构造方法 -->            <property name="immutable" value="false" />        </javaModelGenerator>

<!-- targetPackage 和 targetProject:生成的 mapper 文件的包和位置 -->        <sqlMapGenerator targetPackage="mapper" targetProject="./src/main/resources">            <!-- 针对数据库的一个配置,是否把 schema 作为字包名 -->            <property name="enableSubPackages" value="true" />        </sqlMapGenerator>

<!-- targetPackage 和 targetProject:生成的 interface 文件的包和位置 -->        <javaClientGenerator type="XMLMAPPER"                             targetPackage="com.ifenglin.learn.dao" targetProject=".\src\main\java">            <!-- 针对 oracle 数据库的一个配置,是否把 schema 作为字包名 -->            <property name="enableSubPackages" value="false" />        </javaClientGenerator>        <table tableName="users" domainObjectName="User"               enableCountByExample="false"               enableUpdateByExample="false"               enableDeleteByExample="false"               enableSelectByExample="false"               selectByExampleQueryId="false">        </table>    </context></generatorConfiguration>
db.driverLocation=D:\\java\\apache-maven-3.5.4\\repo\\mysql\\mysql-connector-java\\8.0.13\\mysql-connector-java-8.0.13.jardb.driverClassName=com.mysql.jdbc.Driverdb.url=jdbc:mysql://127.0.0.1:3306/learn?characterEncoding=utf-8db.username=rootdb.password=123456

3.3 代码生成

Run-> EditConfigurations: 左上角+,添加maven项目,按下图填入内容,运行generatorCode,生成dao\UserMapper.java 、 entity\User.java以及 resources\mapper\UserMapper.xml,这里就不贴代码了。

注意:在UserMapper.java类名上添加@Mapper注解

package com.ifenglin.learn.dao;

import com.ifenglin.learn.entity.User;import org.apache.ibatis.annotations.Mapper;import java.util.List;

@Mapperpublic interface UserMapper {    int deleteByPrimaryKey(Integer userId);

int insert(User record);

int insertSelective(User record);

User selectByPrimaryKey(Integer userId);

int updateByPrimaryKeySelective(User record);

int updateByPrimaryKey(User record);

List<User> selectAll();}

第四步:创建controller service

package com.ifenglin.learn.controller;

import com.ifenglin.learn.entity.User;import com.ifenglin.learn.service.UserService;import org.springframework.beans.factory.annotation.Autowired;import org.springframework.web.bind.annotation.RequestMapping;import org.springframework.web.bind.annotation.RestController;

import java.util.List;

@RestController@RequestMapping("/user")public class UserController {

@Autowired    private UserService userService;

@RequestMapping("/getALlUsers")    public List<User> getALlUsers(){        return userService.getAllUsers();    }}
package com.ifenglin.learn.service;import com.ifenglin.learn.entity.User;import java.util.List;

public interface UserService {

User getUserById(Integer userId);    List<User> getAllUsers();    int updateUser(User user);    int addUser(User user);    int deleteUserById(Integer userId);}
package com.ifenglin.learn.service.impl;

import com.ifenglin.learn.dao.UserMapper;import com.ifenglin.learn.entity.User;import com.ifenglin.learn.service.UserService;import org.springframework.beans.factory.annotation.Autowired;import org.springframework.stereotype.Service;import java.util.List;

@Servicepublic class UserServiceImpl implements UserService {

@Autowired    private UserMapper userMapper;

@Override    public User getUserById(Integer userId) {        return userMapper.selectByPrimaryKey(userId);    }

@Override    public List<User> getAllUsers() {        return userMapper.selectAll();    }

@Override    public int updateUser(User user) {        return userMapper.updateByPrimaryKey(user);    }

@Override    public int addUser(User user) {        return userMapper.insert(user);    }

@Override    public int deleteUserById(Integer userId) {        return userMapper.deleteByPrimaryKey(userId);    }}

第五步:修改application.yml

server:  port: 8080

spring:  datasource:    url: jdbc:mysql://127.0.0.1:3306/learn?characterEncoding=utf-8&serverTimezone=UTC
##此处须注意,本项目未采用连接池,不需用data-user-name、data-password、driver-class-name
    userName: root    password: 123456
##com.mysql.cj.jdbc.Driver为新版mysql-connector-java驱动类    driverClassName: com.mysql.cj.jdbc.Driver

mybatis:  typeAliasesPackage: com.ifenglin.learn.entity  mapperLocations: classpath:mapper/*Mapper.xml

整体代码结构:

至此,代码完成,运行并在浏览器中输入:http://127.0.0.1:8080/user/getAllUsers 。效果如图:

原文地址:https://www.cnblogs.com/ifenglin/p/10061813.html

时间: 2024-10-04 12:41:02

SpringBoot学习(一):整合myBaits的相关文章

SpringBoot学习:整合Mybatis,使用HikariCP超高性能数据源

一.添加pom依赖jar包: 1 <!--整合mybatis--> 2 <dependency> 3 <groupId>org.mybatis.spring.boot</groupId> 4 <artifactId>mybatis-spring-boot-starter</artifactId> 5 <version>1.1.1</version> 6 </dependency> 7 8 <!

SpringBoot学习--04SpringBoot整合Mybatis(上)(配置mybatis generator,PageHelper)

陆陆续续又忙了几天,继续写. 本篇仿照着优秀的文章的书写,加上自己的理解和踩过的坑,原文地址:https://www.jianshu.com/p/5cd772c07041?utm_campaign=haruki&utm_content=note&utm_medium=reader_share&utm_source=weixin 环境/版本一览: 开发工具:eclipse springboot: 2.0.1.RELEASE jdk:1.8.0_40 maven:3.3.9 额外功能:

SpringBoot学习10:springboot整合mybatis

需求:通过使用 SpringBoot+SpringMVC+MyBatis 整合实现一个对数据库中的 t_user 表的 CRUD 的操作 1.创建maven项目,添加项目所需依赖 <!--springboot项目依赖的父项目--> <parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId>

SpringBoot学习- 8、整合Shiro

Shiro是什么,引自百度百科:Apache Shiro是一个强大且易用的Java安全框架,执行身份验证.授权.密码和会话管理.使用Shiro的易于理解的API,您可以快速.轻松地获得任何应用程序,从最小的移动应用程序到最大的网络和企业应用程序. 关于Shiro网上讲的很多,以下代码是来自网上几篇博客文章的代码集成, 下面是集成步骤 1.pom.xml添加以下内容 <dependency> <groupId>org.apache.shiro</groupId> <

SpringBoot学习&lt;一&gt;——快速搭建SpringBoot

这是我的第一篇博客,博客记录我以后的学习,包括一些总结之类的东西,当然,这些记录是针对于与我个人而言的,可能有些地方会有不好的,或者出现错误,欢迎大家来指正(如果有人看的话)废话不多说.进入正题:SpringBoot 当我在学习SSM框架的时候,先不谈Spring的一些核心开年,比如DI ,IOC,AOP等等,只是刚开始它的那些配置就让我觉得很头痛,在网上看了很多配置,但是很杂,而我自己在看了这些很杂的配置后,自己慢慢总结了配置,但也花了不少时间才真正的去弄懂它,不过这已经让我这个对设计思想一无

springboot+mybatis+springmvc整合实例

以往的ssm框架整合通常有两种形式,一种是xml形式,一种是注解形式,不管是xml还是注解,基本都会有一大堆xml标签配置,其中有很多重复性的.springboot带给我们的恰恰是"零配置","零配置"不等于什么也不配置,只是说相对于传统的ssm框架的xml配置或是注解配置,要少的多.作为常规的来说,一个ssm框架整合,拿maven来说,首先在src/main/resource下加入jdbc.properties,spring-mvc.xml,spring-myba

SpringBoot学习笔记(1):配置Mybatis

SpringBoot学习笔记(1):配置Mybatis 参考资料: 1.AndyLizh的博客 2.xiaolyuh123的博客 快速开始 添加Mybatis依赖(其他依赖已省去) <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> </dependency> <dependency> <groupId

SpringBoot: 10.整合mybatis(转)

需求:通过使用 SpringBoot+SpringMVC+MyBatis 整合实现一个对数据库中的 t_user 表的 CRUD 的操作 1.创建maven项目,添加项目所需依赖 <!--springboot项目依赖的父项目--> <parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId>

玩转 SpringBoot 2 之整合 JWT 上篇

前言 该文主要带你了解什么是 JWT,以及JWT 定义和先关概念的介绍,并通过简单Demo 带你了解如何使用 SpringBoot 2 整合?JWT. 介绍前在这里我们来探讨一下如何学习一门新的技术,我个人总结为 RSA. R:read 去读官方文档 . S:search 谷歌或百度先关技术文章或 github 去搜索先关信息. A:ask 可以向技术大牛请教或和自己的同事同学进行探讨. 关于?RSA 仅仅代码个人的学习观点,只是给读者一个不成熟的小建议哈 JWT 介绍 官网介绍如下: What

springboot学习笔记(一)

在我看来,spring-boot 的好处在于能快速的搭建起一个项目的框架 ,省略了繁琐的xml配置,能通过spring boot Application类快速启动工程 快速搭建spring-boot-web: 工具:eclipse+maven+jdk1.8 1.创建maven工程,在pom.xml文件中加入需要依赖的jar包,spring-boot帮我们整合了一些默认的设置在spring-boot-starter-parent, 1.使用java6编译级别 2.使用utf-8编码 3.实现了通用