JAVA - SpringBoot项目引用MyBatis操作数据库

1. 创建SpringBoot项目,参考:https://www.cnblogs.com/1285026182YUAN/p/12329727.html

2. 引用generator生成 Mybatis文件,参考:https://www.cnblogs.com/1285026182YUAN/p/12334401.html

 添加POM依赖

      <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>
<version>8.0.19</version>
</dependency>

创建Service相关文件,controller相关文件。

接口文件:orderservice

package com.example.recordboot.service;

import com.example.recordboot.entity.TblOrder;

import java.util.List;

public interface OrderService {

public TblOrder GetModel();
}

服务文件:orderserviceImpl

package com.example.recordboot.service;

import com.example.recordboot.dao.TblOrderMapper;
import com.example.recordboot.entity.TblOrder;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service; import javax.annotation.Resource; @Service
public class OrderServiceImpl implements OrderService { @Resource
private TblOrderMapper tblOrderMapper; @Override
public TblOrder GetModel() {
TblOrder res = tblOrderMapper.selectByPrimaryKey(50); return res;
} }

controller文件:

package com.example.recordboot.controller;

import com.example.recordboot.entity.TblOrder;
import com.example.recordboot.service.OrderService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController; @RestController
@RequestMapping("/Order")
public class OrderController { @Autowired
private OrderService orderService; @RequestMapping("/GetModel")
public TblOrder GetModel() {
TblOrder res = orderService.GetModel();
return res;
} }

RestController是responsebody+Controller两个注解的合体,一般就拿来直接传json数据。  为什么可以直接传个对象过去呢?这是因为springboot内置了jackson模块,可以在maven的依赖下看到这方面的jar包

简单的配置与设置

好现在讲讲设置,这里会想到,那些Controller啊,@Service啊还有MyBatis的注解@Mapper什么的spring怎么知道在哪呢?不用像mvc那样搞个扫描设置吗?

是的要的,这些我们在启动类做了简单的设置:

package com.example.recordboot;

import org.mybatis.spring.annotation.MapperScan;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication; @SpringBootApplication
@MapperScan(basePackages = "com.example.recordboot.dao")//这个注解注意一下 放DAO层的包名 对这个包下进行注入
public class RecordbootApplication { public static void main(String[] args) {
SpringApplication.run(RecordbootApplication.class, args);
} }

application.properties 配置文件

#设置端口号
server.port= spring.devtools.restart.enabled=true
spring.devtools.restart.additional-paths=src/main/java spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
spring.datasource.url=jdbc:mysql://127.0.0.1:3306/db1?useUnicode=true&characterEncoding=UTF-8&serverTimezone=Asia/Shanghai
spring.datasource.username=root
spring.datasource.password= #mybatis配置
#首先是实体类所在的包的名字
mybatis.type-aliases-package=com.example.recordboot.entity
mybatis.mapper-locations=classpath:mapper/*.xml
#mybatis使用resources的xml来映射数据库表,这里就是resources下的mapper包的所有xml文件

dao 文件

package com.example.recordboot.dao;

import com.example.recordboot.entity.TblOrder;

public interface TblOrderMapper {
int deleteByPrimaryKey(Integer id); int insert(TblOrder record); int insertSelective(TblOrder record); TblOrder selectByPrimaryKey(Integer id); int updateByPrimaryKeySelective(TblOrder record); int updateByPrimaryKey(TblOrder record);
}

entity 文件

package com.example.recordboot.entity;

import java.util.Date;

public class TblOrder {
private Integer id; private String orderCode; private Integer userId; private Integer amount; private Date uptime; private String text; public Integer getId() {
return id;
} public void setId(Integer id) {
this.id = id;
} public String getOrderCode() {
return orderCode;
} public void setOrderCode(String orderCode) {
this.orderCode = orderCode;
} public Integer getUserId() {
return userId;
} public void setUserId(Integer userId) {
this.userId = userId;
} public Integer getAmount() {
return amount;
} public void setAmount(Integer amount) {
this.amount = amount;
} public Date getUptime() {
return uptime;
} public void setUptime(Date uptime) {
this.uptime = uptime;
} public String getText() {
return text;
} public void setText(String text) {
this.text = text;
}
}

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="com.example.recordboot.dao.TblOrderMapper" >
<resultMap id="BaseResultMap" type="com.example.recordboot.entity.TblOrder" >
<id column="id" property="id" jdbcType="INTEGER" />
<result column="order_code" property="orderCode" jdbcType="VARCHAR" />
<result column="user_id" property="userId" jdbcType="INTEGER" />
<result column="amount" property="amount" jdbcType="INTEGER" />
<result column="uptime" property="uptime" jdbcType="TIMESTAMP" />
<result column="text" property="text" jdbcType="VARCHAR" />
</resultMap>
<sql id="Base_Column_List" >
id, order_code, user_id, amount, uptime, text
</sql>
<select id="selectByPrimaryKey" resultMap="BaseResultMap" parameterType="java.lang.Integer" >
select
<include refid="Base_Column_List" />
from tbl_order
where id = #{id,jdbcType=INTEGER}
</select>
<delete id="deleteByPrimaryKey" parameterType="java.lang.Integer" >
delete from tbl_order
where id = #{id,jdbcType=INTEGER}
</delete>
<insert id="insert" parameterType="com.example.recordboot.entity.TblOrder" >
<selectKey resultType="java.lang.Integer" keyProperty="id" order="AFTER" >
SELECT LAST_INSERT_ID()
</selectKey>
insert into tbl_order (order_code, user_id, amount,
uptime, text)
values (#{orderCode,jdbcType=VARCHAR}, #{userId,jdbcType=INTEGER}, #{amount,jdbcType=INTEGER},
#{uptime,jdbcType=TIMESTAMP}, #{text,jdbcType=VARCHAR})
</insert>
<insert id="insertSelective" parameterType="com.example.recordboot.entity.TblOrder" >
<selectKey resultType="java.lang.Integer" keyProperty="id" order="AFTER" >
SELECT LAST_INSERT_ID()
</selectKey>
insert into tbl_order
<trim prefix="(" suffix=")" suffixOverrides="," >
<if test="orderCode != null" >
order_code,
</if>
<if test="userId != null" >
user_id,
</if>
<if test="amount != null" >
amount,
</if>
<if test="uptime != null" >
uptime,
</if>
<if test="text != null" >
text,
</if>
</trim>
<trim prefix="values (" suffix=")" suffixOverrides="," >
<if test="orderCode != null" >
#{orderCode,jdbcType=VARCHAR},
</if>
<if test="userId != null" >
#{userId,jdbcType=INTEGER},
</if>
<if test="amount != null" >
#{amount,jdbcType=INTEGER},
</if>
<if test="uptime != null" >
#{uptime,jdbcType=TIMESTAMP},
</if>
<if test="text != null" >
#{text,jdbcType=VARCHAR},
</if>
</trim>
</insert>
<update id="updateByPrimaryKeySelective" parameterType="com.example.recordboot.entity.TblOrder" >
update tbl_order
<set >
<if test="orderCode != null" >
order_code = #{orderCode,jdbcType=VARCHAR},
</if>
<if test="userId != null" >
user_id = #{userId,jdbcType=INTEGER},
</if>
<if test="amount != null" >
amount = #{amount,jdbcType=INTEGER},
</if>
<if test="uptime != null" >
uptime = #{uptime,jdbcType=TIMESTAMP},
</if>
<if test="text != null" >
text = #{text,jdbcType=VARCHAR},
</if>
</set>
where id = #{id,jdbcType=INTEGER}
</update>
<update id="updateByPrimaryKey" parameterType="com.example.recordboot.entity.TblOrder" >
update tbl_order
set order_code = #{orderCode,jdbcType=VARCHAR},
user_id = #{userId,jdbcType=INTEGER},
amount = #{amount,jdbcType=INTEGER},
uptime = #{uptime,jdbcType=TIMESTAMP},
text = #{text,jdbcType=VARCHAR}
where id = #{id,jdbcType=INTEGER}
</update>
</mapper>

generatorConfig.xml 文件

<?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="application.properties"/>-->
<!--这里注释掉,后面集成插件的时候,在pom.xml文件导入驱动-->
<!--<classPathEntry location="~/mysql/mysql-connector-java-8.0.19.jar" />-->
<!--1,MyBatis3:默认的值;
2,MyBatis3Simple:生成的mapper和xml比较简洁干净-->
<context id="Mysql" targetRuntime="MyBatis3" defaultModelType="flat">
<property name="beginningDelimiter" value="`"/>
<property name="endingDelimiter" value="`"/>
<property name="javaFileEncoding" value="UTF-8"/>
<!--pressAllComments:MyBatis3默认为false,true则默认不生成注释
suppressDate:MyBatis3默认为false,默认不生成时间戳-->
<commentGenerator>
<property name="suppressDate" value="true"/>
<property name="suppressAllComments" value="true"/>
</commentGenerator>
<!--新版mysql驱动用的是com.mysql.cj.jdbc.Driver,老版本的是com.mysql.jdbc.Driver-->
<jdbcConnection driverClass="com.mysql.cj.jdbc.Driver"
connectionURL="jdbc:mysql://127.0.0.1:3306/db1?useUnicode=true&amp;characterEncoding=UTF-8&amp;serverTimezone=UTC"
userId="root"
password="123456">
</jdbcConnection> <javaModelGenerator targetPackage="com.example.recordboot.entity" targetProject="src/main/java"/> <sqlMapGenerator targetPackage="mapper" targetProject="src/main/resources"/> <javaClientGenerator targetPackage="com.example.recordboot.dao" targetProject="src/main/java" type="XMLMAPPER"/> <!--去掉example代码-->
<table tableName="tbl_order" domainObjectName="TblOrder" enableCountByExample="false"
enableUpdateByExample="false" enableDeleteByExample="false"
enableSelectByExample="false" selectByExampleQueryId="false">
<!--% 表示全部表-->
<!--mysql 配置-->
<generatedKey column="id" sqlStatement="Mysql" identity="true"/>
<!--oracle 配置-->
<!-- <generatedKey column="id" sqlStatement="select SEQ_{1}.nextval from dual" identity="false" type="pre"/> -->
</table> </context>
</generatorConfiguration>

完成。

引用:https://www.cnblogs.com/wangshen31/p/8744157.html

JAVA - SpringBoot项目引用MyBatis操作数据库的更多相关文章

  1. JAVA - SpringBoot项目引用generator生成 Mybatis文件

    JAVA - SpringBoot项目引用generator生成 Mybatis文件  在spring官网https://start.spring.io/自动生成springboot项目,这里选择项目 ...

  2. 【转载】JAVA SpringBoot 项目打成jar包供第三方引用自动配置(Spring发现)解决方案

    JAVA SpringBoot 项目打成jar包供第三方引用自动配置(Spring发现)解决方案 本文为转载,原文地址为:https://www.cnblogs.com/adversary/p/103 ...

  3. 170623、springboot编程之JdbcTemplate操作数据库

    使用JdbcTemplate操作mysql数据库! 1.在pom中引入jpa包 <dependency> <groupId>org.springframework.boot&l ...

  4. mybatis 操作数据库(05)

    类型转换.动态排序,查询接口与mapper对应关系说明及其注意事项 一.MyBatis 自带写常见类型转换器.例如:java 类中 String 对应 mySQL中的varchar 二.自定义类型转换 ...

  5. Java SpringBoot 项目构建 Docker 镜像调优实践

    PS:已经在生产实践中验证,解决在生产环境下,网速带宽小,每次推拉镜像影响线上服务问题,按本文方式构建镜像,除了第一次拉取.推送.构建镜像慢,第二.三-次都是几百K大小传输,速度非常快,构建.打包.推 ...

  6. Java web项目引用java项目,类型找不到

    Java web项目引用java项目,类型找不到 错误信息: java.lang.ClassNotFoundException: org.codehaus.jackson.map.ObjectMapp ...

  7. SpringBoot项目启动时链接数据库很慢

    SpringBoot项目启动时链接数据库很慢 springboot项目在启动时候,如下图所示,链接数据库很慢 解决方法:在mysql 的配置文件中 配置 skip-name-resolve

  8. Java基础之原生JDBC操作数据库

    前言 日常开发中,我们都习惯了使用ORM框架来帮我们操作数据库,本文复习.记录Java如何使用原生JDBC操作数据库 代码编写 封装几个简单方法 find查询方法 findOne查询方法 update ...

  9. 170622、springboot编程之JPA操作数据库

    JPA操作数据库 什么事JAP?JPA全称Java Persistence API.JPA通过JDK 5.0注解或XML描述对象-关系表的映射关系,并将运行期的实体对象持久化到数据库中. 1.在pom ...

随机推荐

  1. sklearn中调用集成学习算法

    1.集成学习是指对于同一个基础数据集使用不同的机器学习算法进行训练,最后结合不同的算法给出的意见进行决策,这个方法兼顾了许多算法的"意见",比较全面,因此在机器学习领域也使用地非常 ...

  2. 吴裕雄 Bootstrap 前端框架开发——Bootstrap 辅助类:显示下拉式功能

    <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title> ...

  3. mysql安装到最后一步无响应的问题超简单最有效解决

    mysql安装到最后一步无响应的问题超简单最有效解决 无论你是安装过还是没安装过,通过此方法都可以解决.之前我的机器和服务器就是都到最后一步卡住,上网搜索方法都无果.后自己尝试了很多次,亲测64位机和 ...

  4. android 桌面透明

      目录(?)[-] public void setWallpaperOffsetSteps float xStep float yStep Parameters public void setWal ...

  5. golang Context for goroutines

    概要 goroutine 的控制 取消控制 超时控制 goroutine 之间的传值 总结 概要 golang 的提供的 channel 机制是基于 CSP(Communicating Sequenc ...

  6. 4K对齐

    4K对齐这个概念常常与固态硬盘联系起来.买了一块固态硬盘,装机过程中时有忽略4K对齐这个小细节,但是这个小细节往往十分重要,它影响硬盘的使用寿命和速度. 现在来了解一下4K对齐到底是个什么东西. 一. ...

  7. Wincc V7.3SE安装截图

    打开某个工程出错,能力所限,找不到问题,没能解决

  8. HDFS 命令行基本操作

    1.hdfs命令行 (1)查看帮助 hdfs dfs -help (2)查看当前目录信息 hdfs dfs -ls / (3)上传文件 hdfs dfs -put /本地路径 /hdfs路径 (4)剪 ...

  9. Doxygen 注释语法规范

    背景 这一块的内容更多的是作为了解,但是可以以这样的规范作为自己的编程注释习惯,提高自己的软实力. Doxygen注释语法 注释格式 块注释建议统一使用 /** -- ***/ 行注释建议统一使用 / ...

  10. vim修改缩进问题