JAVA - SpringBoot项目引用MyBatis操作数据库
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&characterEncoding=UTF-8&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操作数据库的更多相关文章
- JAVA - SpringBoot项目引用generator生成 Mybatis文件
JAVA - SpringBoot项目引用generator生成 Mybatis文件 在spring官网https://start.spring.io/自动生成springboot项目,这里选择项目 ...
- 【转载】JAVA SpringBoot 项目打成jar包供第三方引用自动配置(Spring发现)解决方案
JAVA SpringBoot 项目打成jar包供第三方引用自动配置(Spring发现)解决方案 本文为转载,原文地址为:https://www.cnblogs.com/adversary/p/103 ...
- 170623、springboot编程之JdbcTemplate操作数据库
使用JdbcTemplate操作mysql数据库! 1.在pom中引入jpa包 <dependency> <groupId>org.springframework.boot&l ...
- mybatis 操作数据库(05)
类型转换.动态排序,查询接口与mapper对应关系说明及其注意事项 一.MyBatis 自带写常见类型转换器.例如:java 类中 String 对应 mySQL中的varchar 二.自定义类型转换 ...
- Java SpringBoot 项目构建 Docker 镜像调优实践
PS:已经在生产实践中验证,解决在生产环境下,网速带宽小,每次推拉镜像影响线上服务问题,按本文方式构建镜像,除了第一次拉取.推送.构建镜像慢,第二.三-次都是几百K大小传输,速度非常快,构建.打包.推 ...
- Java web项目引用java项目,类型找不到
Java web项目引用java项目,类型找不到 错误信息: java.lang.ClassNotFoundException: org.codehaus.jackson.map.ObjectMapp ...
- SpringBoot项目启动时链接数据库很慢
SpringBoot项目启动时链接数据库很慢 springboot项目在启动时候,如下图所示,链接数据库很慢 解决方法:在mysql 的配置文件中 配置 skip-name-resolve
- Java基础之原生JDBC操作数据库
前言 日常开发中,我们都习惯了使用ORM框架来帮我们操作数据库,本文复习.记录Java如何使用原生JDBC操作数据库 代码编写 封装几个简单方法 find查询方法 findOne查询方法 update ...
- 170622、springboot编程之JPA操作数据库
JPA操作数据库 什么事JAP?JPA全称Java Persistence API.JPA通过JDK 5.0注解或XML描述对象-关系表的映射关系,并将运行期的实体对象持久化到数据库中. 1.在pom ...
随机推荐
- java程序员,英语那点事
本文选自<Java程序员,上班那点事儿>有时候如果应聘到了一个有外资背景的公司或者这个公司的很多人都有海外或外资工作背景时,你 也许还会用到一些日常工作交流时候的词汇. 比如 ...
- 吴裕雄 Bootstrap 前端框架开发——Bootstrap 按钮:表示成功的动作
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title> ...
- SpingBoot学习(一)
一.概述 Spring Boot是为了简化Spring应用的创建.运行.调试.部署等而出现的,使用它可以做到专注于Spring应用的开发,而无需过多关注XML的配置. 简单来说,它提供了一堆依赖打包, ...
- Python 矩阵相关
Python 中矩阵运算主要使用numpy库.NumPy的主要对象是同种元素的多维数组.这是一个所有的元素都是一种类型.通过一个正整数索引的元素表格(通常是元素是数字).因此对于随机查找来说,比pyt ...
- 利用uboot下载引导Kernel(TFTP)以及挂载网络Rootfs(NFS)
背景: 在嵌入式开发中,经常需要对系统的各个部分进行修改.倘若每次修改都烧写到板子中,一来浪费时间,其次影响存储介质寿命. 所以,需要一些手段来避免此类问题. 概览: 编译uboot 将uboot写入 ...
- Why Helm?【转】
每个成功的软件平台都有一个优秀的打包系统,比如 Debian.Ubuntu 的 apt,Redhat.Centos 的 yum.而 Helm 则是 Kubernetes 上的包管理器. 本章我们将讨论 ...
- python练习题4
1.将字符串“老男孩”转换成UTF-8编码的字节类型 s = "老男孩" bytes(s,'utf8') s.encode('utf8') 2.简述globals(),locals ...
- eclipse环境变量设置
eclipse的运行需要java,但是当安装了多个版本的jdk后,eclipse可能就不能用了. 解决办法就是: #eclipse 文件夹下有eclipse.ini配置文件,在文件首行添加如下信息: ...
- 008.CI4框架CodeIgniter, Controller控制器传输参数到View视图
01. 在CI4中输出VIEW视图,并且传入参数,代码如下: <?php namespace App\Controllers; class Home extends BaseController ...
- python手动实现深拷贝
深拷贝是将对象全拷贝,包括嵌套对象 def deepcopy(cls): if isinstance(cls, dict): dct = {} for k, v in cls.items(): dct ...