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相关文件。

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

接口文件: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

上一篇:Swift语言与Objective-C语言混合编程


下一篇:[转]MVC整合Ajax