spring boot 与 Mybatis整合(*)
- 在pom.xml文件中加入数据库、spring-mybatis整合
<!-- spring boot 整合mybatis -->
<dependency>
<groupId>org.mybatis.spring.boot</groupId>
<artifactId>mybatis-spring-boot-starter</artifactId>
<version>1.3.0</version>
</dependency>
<!-- MYSQL -->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
</dependency> - 在springboot的启动类中添加注解
package cn.java.controller; import org.mybatis.spring.annotation.MapperScan;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.EnableAutoConfiguration;
import org.springframework.boot.autoconfigure.SpringBootApplication; /*
* spring boot 启动程序
*/
@SpringBootApplication(scanBasePackages= {"cn.java.controller","cn.java.service.impl"})
@EnableAutoConfiguration
//配置mapper层扫描
@MapperScan(basePackages="cn.java.mapper")
public class StartApplication {
public static void main(String[] args) {
SpringApplication.run(StartApplication.class, args);
} }
控制层GoodController
package cn.java.controller; import java.util.List;
import java.util.Map; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody; import cn.java.service.GoodService; @Controller
@RequestMapping("/goods/")
public class GoodController {
@Autowired
private GoodService goodService;
//获取goods表中所有数据
@RequestMapping("/selectAllGoods.do")
@ResponseBody
public List<Map<String,Object>> selectAllGoods(){
return goodService.getAll();
}
}
业务层
package cn.java.service; import java.util.List;
import java.util.Map; public interface GoodService { List<Map<String, Object>> getAll(); }
package cn.java.service.impl; import java.util.List;
import java.util.Map; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service; import cn.java.mapper.GoodMapper;
import cn.java.service.GoodService;
@Service
public class GoodServiceImpl implements GoodService {
/*
* 获取springboot库下goods表中所有的数据
*/
@Autowired
private GoodMapper goodMapper; /*
* 查询所有商品
*/ /* (non-Javadoc)
* @see cn.java.service.impl.GoodService#getAll()
*/
@Override
public List<Map<String,Object>> getAll(){
return goodMapper.getAllGoods();
}
}
DAO层
package cn.java.mapper; import java.util.List;
import java.util.Map; import org.apache.ibatis.annotations.Select; public interface GoodMapper {
@Select("SELECT * FROM goods")
public List<Map<String,Object>> getAllGoods();
}
application.properties
#update tomcat port
server.port=8888 #config datasource(mysql)
spring.datasource.driver-class-name=com.mysql.jdbc.Driver
spring.datasource.url=jdbc:mysql:///springboot
spring.datasource.username=root
spring.datasource.password=78978r
实体类
package cn.java.entity; public class Good {
private String goodName;
private Float goodPrice;
private String goodPhone;
private String goodAddress;
private Integer goodNum; public String getGoodName() {
return goodName;
}
public void setGoodName(String goodName) {
this.goodName = goodName;
}
public Float getGoodPrice() {
return goodPrice;
}
public void setGoodPrice(Float goodPrice) {
this.goodPrice = goodPrice;
}
public String getGoodPhone() {
return goodPhone;
}
public void setGoodPhone(String goodPhone) {
this.goodPhone = goodPhone;
}
public String getGoodAddress() {
return goodAddress;
}
public void setGoodAddress(String goodAddress) {
this.goodAddress = goodAddress;
}
public Integer getGoodNum() {
return goodNum;
}
public void setGoodNum(Integer goodNum) {
this.goodNum = goodNum;
} }
数据库springboot
CREATE TABLE `springboot`.`goods`(
`id` BIGINT(20) NOT NULL AUTO_INCREMENT COMMENT '主键',
`good_name` VARCHAR(40) COMMENT '商品名称',
`good_price` FLOAT(10,2) COMMENT '商品单价',
`good_phone` VARCHAR(20) COMMENT '商品联系电话',
`good_address` VARCHAR(40) COMMENT '商品地址',
`good_num` INT COMMENT '商品库存',
PRIMARY KEY (`id`)
);
GoodMapper.xml
<?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="cn.java.mapper.GoodMapper">
<resultMap id="BaseResultMap" type="cn.java.entity.Good">
<id column="id" property="id" jdbcType="BIGINT"/>
<id column="good_name" property="goodName" jdbcType="VARCHAR"/>
<id column="good_price" property="goodPrice" jdbcType="REAL"/>
<id column="good_phone" property="goodPhone" jdbcType="VARCHAR"/>
<id column="good_address" property="goodAddress" jdbcType="VARCHAR"/>
<id column="good_num" property="goodNum" jdbcType="INTEGER"/>
</resultMap>
<sql id="Base_Column_List">
id,good_name,good_price_good_phone,good_address,good_num
</sql> <!-- 查询所有 -->
<select id="selectAllGoods" resultMap="BaseResultMap">
SELECT <include refid="Base_Column_List"></include> FROM goods;
</select> <!-- <select id="selectByPrimarKey" resultMap="BaseResultMap" parmeterType="java.lang.Long">
select
<include refid="Base_Column_List">
from goods
where id = #{id,jdbcType=BIGINT}
</include>
</select>
<delete id="deleteByPrimaryKey" parmeterType="java.lang.Long">
delete from goods
where id = #{id,jdbcType=BIGINT}
</delete>
<insert id="insert" parmeterType="cn.java.entity.Good">
insert into goods(id,good_name,good_price,good_phone,good_address,good_num
)
values(#{id,jdbcType=BIGINT},#{goodName,jdbcType=VARCHAR},#{goodPrice,jdbcType=REAL},#{goodPhone,jdbcType=VARCHAR},
#{goodAddress,jdbcType=VARCHAR},#{goodNum,jdbcType=INTEGER}
)
</insert>
<insert id="insertSelective" parmeterType="cn.java.entity.Good">
insert into goods
<trim prefix="(" suffix=")" suffixOverrides=",">
<if test="id != null">
id,
</if>
<if test="goodName != null">
good_name,
</if>
<if test="goodPrice != null">
good_price,
</if>
<if test="goodPhone != null">
good_phone,
</if>
<if test="goodAddress != null">
good_address,
</if>
<if test="goodNum != null">
good_num,
</if>
</trim>
<trim prefix="values(" suffix=")" suffixOverrides=",">
<if test="id != null">
#{id,jdbcType=BIHINT},
</if>
<if test="goodName != null">
#{goodName,jdbcType=VARCHAR},
</if>
<if test="goodPrice != null">
#{goodPrice,jdbcType=REAL},
</if>
<if test="goodPhone != null">
#{goodPhone,jdbcType=VARCHAR},
</if>
<if test="goodAddress != null">
#{goodAddress,jdbcType=VARCHAR},
</if>
<if test="goodNum != null">
#{goodNum,jdbcType=INTEGER},
</if>
</trim>
</insert>
<update id="updateByPrimaryKeySelective" prameterType="cn.java.entity.Good">
update goods
set good_name = #{goodName,jdbcType=VARCHAR},
good_price = #{goodName,jdbcType=VARCHAR},
good_phone = #{goodPhone,jdbcType=VARCHAR},
good_address = #{goodAddress,jdbcType=VARCHAR},
good_num = #{goodNum,jdbcType=INTEGER}
where id = #{id,jdbcType=BIHINT}
</update> --> </mapper>
(3)当MyBatis 语句较为复杂时 使用xml更加方便
#config mybatis xml
mybatis.mapper-location=classpath:mapping/*.xml
mybatis.type-aliases-package=cn.java.entity
控制层与业务层 业务层与DAO层 通过接口连接
spring boot 与 Mybatis整合(*)的更多相关文章
- Spring Boot与mybatis整合
完整的项目截图 一:pom依赖 新增ojdbc6及batis-spring-boot-starter依赖 <dependency> <groupId>com.oracle< ...
- Spring boot 与mybatis 多数据源问题
https://www.cnblogs.com/ityouknow/p/6102399.html Spring Boot 集成Mybatis实现多数据源 https://blog.csdn.net/m ...
- spring boot + druid + mybatis + atomikos 多数据源配置 并支持分布式事务
文章目录 一.综述 1.1 项目说明 1.2 项目结构 二.配置多数据源并支持分布式事务 2.1 导入基本依赖 2.2 在yml中配置多数据源信息 2.3 进行多数据源的配置 三.整合结果测试 3.1 ...
- Spring Boot 实战 —— MyBatis(注解版)使用方法
原文链接: Spring Boot 实战 -- MyBatis(注解版)使用方法 简介 MyBatis 官网 是这么介绍它自己的: MyBatis 是一款优秀的持久层框架,它支持定制化 SQL.存储过 ...
- spring boot集成mybatis只剩两个sql 并提示 Cannot obtain primary key information from the database, generated objects may be incomplete
前言 spring boot集成mybatis时只生成两个sql, 搞了一个早上,终于找到原因了 找了很多办法都没有解决, 最后注意到生成sql的时候打印了一句话: Cannot obtain pri ...
- Spring Boot的MyBatis注解:@MapperScan和@Mapper(十七)
1.Spring Boot与MyBatis融合的矛盾问题: Spring家族的使命就是为了简化而生,但是随着Spring的发展壮大,有点事与愿违了.为了坚持初心,Spring家族祭出了一大杀器---S ...
- 使用intelliJ创建 spring boot + gradle + mybatis站点
Spring boot作为快速入门是不错的选择,现在似乎没有看到大家写过spring boot + gradle + mybatis在intellij下的入门文章,碰巧.Net同事问到,我想我也可以写 ...
- Spring Boot 2.x整合Redis
最近在学习Spring Boot 2.x整合Redis,在这里和大家分享一下,希望对大家有帮助. Redis是什么 Redis 是开源免费高性能的key-value数据库.有以下的优势(源于Redis ...
- spring boot 2.0 整合 elasticsearch6.5.3,spring boot 2.0 整合 elasticsearch NoNodeAvailableException
原文地址:spring boot 2.0 整合 elasticsearch NoNodeAvailableException 原文说的有点问题,下面贴出我的配置: 原码云项目地址:https://gi ...
随机推荐
- POJ_2253 Frogger 【最短路变形】
一.题目 Frogger 二.分析 题意关键点就是那个青蛙距离.就是所有1到2的点的路径中,每条路径都可以确定一个最大值,这个最大值就是青蛙要跳的青蛙距离,然后要求这个青蛙距离最小值. 其实就是最短路 ...
- The League of Sequence Designers Gym - 102460E
题目链接:https://vjudge.net/problem/Gym-102460E 思路:求: 题目当中给了一段伪代码算法,仔细一看发现它是不会记录负数情况,所以与正确答案会有误差,现在题目给定K ...
- windows使用vscode设置免密登录linux服务器
秘钥原理解释 id_rsa.pub是公钥,部署在服务器上 id_rsa是私钥,放在windows本地 本质上它们都是个文本文件 操作流程 生成秘钥对(windows和linux均可) ssh-keyg ...
- Linux性能优化:内存使用情况分析
Blog:博客园 个人 目录 什么是内存 Linux内存回收机制 查看Linux内存情况 查看/proc/meminfo 使用free命令查看 Buffer和Cache Swap 内存泄漏和内存溢出 ...
- [BFS]细胞问题
细胞问题 题目描述 一矩形阵列由数字0到9组成,数字1到9代表细胞,细胞的定义为沿细胞数字上下左右若还是细胞数字则为同一细胞,求给定矩形阵列的细胞个数.(1<=m,n<=100)? 输入格 ...
- [素数判断]P1125 笨小猴
笨小猴 题目描述 笨小猴的词汇量很小,所以每次做英语选择题的时候都很头疼.但是他找到了一种方法,经试验证明,用这种方法去选择选项的时候选对的几率非常大! 这种方法的具体描述如下:假设maxn是单词中出 ...
- 用RUST写流媒体服务器实战——rtmp chunk 深入解析
用RUST写流媒体服务器实战--rtmp chunk 深入解析 最近几个月断更了,把精力放在了新的开源项目上,一个用rust写的流媒体服务xiu. 实现过程中踩了不少坑,今天说下rtmp中的chunk ...
- python基础(〇):注释
单行注释 Python中单行注释以 # 开头,例如: # 这是一个注释1 print("Hello, World!") # 这是一个注释2 多行注释 单引号(''') ''' 这是 ...
- Dynamics CRM分享记录后出现关联记录被共享的问题
Dynamics CRM的权限配置有许多的问题,其中分享功能也是未来解决标准功能分配的权限不满足需求而设计的.但是这个功能使用的时候也要注意,否则会出现其他记录被共享的问题导致数据泄露可能会对项目的安 ...
- SQL必知必会,带你系统学习
你一定听说过大名鼎鼎的Oracle.MySQL.MongoDB等,这些数据库都是基于一个语言标准发展起来的,那就是SQL. SQL可以帮我们在日常工作中处理各种数据,如果你是程序员.产品经理或者是运营 ...