引入依赖
分别引入mybatis依赖和数据库驱动依赖
<!--mybatis依赖 -->
<dependency>
<groupId>org.mybatis.spring.boot</groupId>
<artifactId>mybatis-spring-boot-starter</artifactId>
<version>2.2.1</version>
</dependency>
<!--postsql数据库驱动 -->
<dependency>
<groupId>org.postgresql</groupId>
<artifactId>postgresql</artifactId>
<scope>runtime</scope>
</dependency>
编写连接配置application.yaml
spring:
application:
name: quality-platform
datasource:
url: 'jdbc:postgresql://paychan1.dev.pgsql.db.com:5001/db_paycore_order_01?serverTimezone=UTC&useUnicode=true&characterEncoding=utf-8'
username: order_01
password: ikcZ1D$X4y$CjLa$
driver-class-name: org.postgresql.Driver
server:
port: 8086
mybatis:
mapper-locations: 'classpath:mapper/*Mapper.xml'
configuration:
log-impl: org.apache.ibatis.logging.stdout.StdOutImpl
编写mapper接口
package com.example.demo11;
import com.example.demo11.MchOrder;
import java.util.List;
public interface MchOrderMapper {
/**
* This method was generated by MyBatis Generator.
* This method corresponds to the database table t_mch_order_1
*
* @mbg.generated Thu May 04 16:21:01 CST 2023
*/
int deleteByPrimaryKey(Long id);
/**
* This method was generated by MyBatis Generator.
* This method corresponds to the database table t_mch_order_1
*
* @mbg.generated Thu May 04 16:21:01 CST 2023
*/
int insert(MchOrder record);
/**
* This method was generated by MyBatis Generator.
* This method corresponds to the database table t_mch_order_1
*
* @mbg.generated Thu May 04 16:21:01 CST 2023
*/
MchOrder selectByPrimaryKey(Long id);
/**
* This method was generated by MyBatis Generator.
* This method corresponds to the database table t_mch_order_1
*
* @mbg.generated Thu May 04 16:21:01 CST 2023
*/
List<MchOrder> selectAll();
/**
* This method was generated by MyBatis Generator.
* This method corresponds to the database table t_mch_order_1
*
* @mbg.generated Thu May 04 16:21:01 CST 2023
*/
int updateByPrimaryKey(MchOrder record);
}
编写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.demo11.MchOrderMapper">
<resultMap id="BaseResultMap" type="com.example.demo11.MchOrder">
<!--
WARNING - @mbg.generated
This element is automatically generated by MyBatis Generator, do not modify.
This element was generated on Thu May 04 16:21:01 CST 2023.
-->
<id column="id" jdbcType="BIGINT" property="id" />
<result column="cust_id" jdbcType="VARCHAR" property="custId" />
<result column="user_code" jdbcType="VARCHAR" property="userCode" />
<result column="payee_cust_id" jdbcType="VARCHAR" property="payeeCustId" />
<result column="payee_user_code" jdbcType="VARCHAR" property="payeeUserCode" />
<result column="payee_org_no" jdbcType="VARCHAR" property="payeeOrgNo" />
<result column="originator_cust_id" jdbcType="VARCHAR" property="originatorCustId" />
<result column="originator_user_code" jdbcType="VARCHAR" property="originatorUserCode" />
<result column="originator_org_no" jdbcType="VARCHAR" property="originatorOrgNo" />
<result column="agent_no" jdbcType="VARCHAR" property="agentNo" />
<result column="order_no" jdbcType="VARCHAR" property="orderNo" />
<result column="out_trade_no" jdbcType="VARCHAR" property="outTradeNo" />
<result column="order_type" jdbcType="SMALLINT" property="orderType" />
<result column="sign_product" jdbcType="INTEGER" property="signProduct" />
<result column="biz_code" jdbcType="VARCHAR" property="bizCode" />
<result column="trans_type" jdbcType="SMALLINT" property="transType" />
<result column="pay_mode" jdbcType="INTEGER" property="payMode" />
<result column="pay_product" jdbcType="INTEGER" property="payProduct" />
<result column="currency" jdbcType="VARCHAR" property="currency" />
<result column="order_amount" jdbcType="BIGINT" property="orderAmount" />
<result column="other_pay_mode_amount" jdbcType="BIGINT" property="otherPayModeAmount" />
<result column="allow_repeat_pay" jdbcType="SMALLINT" property="allowRepeatPay" />
<result column="close_source" jdbcType="SMALLINT" property="closeSource" />
<result column="state" jdbcType="SMALLINT" property="state" />
<result column="state_desc" jdbcType="VARCHAR" property="stateDesc" />
<result column="time_expire" jdbcType="TIMESTAMP" property="timeExpire" />
<result column="account_date" jdbcType="VARCHAR" property="accountDate" />
<result column="complete_time" jdbcType="TIMESTAMP" property="completeTime" />
<result column="refund_state" jdbcType="SMALLINT" property="refundState" />
<result column="settle_cycle" jdbcType="SMALLINT" property="settleCycle" />
<result column="clearing_settle_flag" jdbcType="SMALLINT" property="clearingSettleFlag" />
<result column="transaction_id" jdbcType="VARCHAR" property="transactionId" />
<result column="actual_pay_amount" jdbcType="BIGINT" property="actualPayAmount" />
<result column="payable_amount" jdbcType="BIGINT" property="payableAmount" />
<result column="actual_settle_amount" jdbcType="BIGINT" property="actualSettleAmount" />
<result column="settle_id" jdbcType="VARCHAR" property="settleId" />
<result column="discount_total_amount" jdbcType="BIGINT" property="discountTotalAmount" />
<result column="fee_discount_total_amount" jdbcType="BIGINT" property="feeDiscountTotalAmount" />
<result column="chl_discount_total_amount" jdbcType="BIGINT" property="chlDiscountTotalAmount" />
<result column="physical_state" jdbcType="SMALLINT" property="physicalState" />
<result column="create_time" jdbcType="TIMESTAMP" property="createTime" />
<result column="update_time" jdbcType="TIMESTAMP" property="updateTime" />
<result column="settle_state" jdbcType="SMALLINT" property="settleState" />
</resultMap>
<delete id="deleteByPrimaryKey" parameterType="java.lang.Long">
<!--
WARNING - @mbg.generated
This element is automatically generated by MyBatis Generator, do not modify.
This element was generated on Thu May 04 16:21:01 CST 2023.
-->
delete from t_mch_order_1
where id = #{id,jdbcType=BIGINT}
</delete>
<insert id="insert" parameterType="com.example.demo11.MchOrder">
<!--
WARNING - @mbg.generated
This element is automatically generated by MyBatis Generator, do not modify.
This element was generated on Thu May 04 16:21:01 CST 2023.
-->
insert into t_mch_order_1 (id, cust_id, user_code,
payee_cust_id, payee_user_code, payee_org_no,
originator_cust_id, originator_user_code, originator_org_no,
agent_no, order_no, out_trade_no,
order_type, sign_product, biz_code,
trans_type, pay_mode, pay_product,
currency, order_amount, other_pay_mode_amount,
allow_repeat_pay, close_source, state,
state_desc, time_expire, account_date,
complete_time, refund_state, settle_cycle,
clearing_settle_flag, transaction_id, actual_pay_amount,
payable_amount, actual_settle_amount, settle_id,
discount_total_amount, fee_discount_total_amount,
chl_discount_total_amount, physical_state,
create_time, update_time, settle_state
)
values (#{id,jdbcType=BIGINT}, #{custId,jdbcType=VARCHAR}, #{userCode,jdbcType=VARCHAR},
#{payeeCustId,jdbcType=VARCHAR}, #{payeeUserCode,jdbcType=VARCHAR}, #{payeeOrgNo,jdbcType=VARCHAR},
#{originatorCustId,jdbcType=VARCHAR}, #{originatorUserCode,jdbcType=VARCHAR}, #{originatorOrgNo,jdbcType=VARCHAR},
#{agentNo,jdbcType=VARCHAR}, #{orderNo,jdbcType=VARCHAR}, #{outTradeNo,jdbcType=VARCHAR},
#{orderType,jdbcType=SMALLINT}, #{signProduct,jdbcType=INTEGER}, #{bizCode,jdbcType=VARCHAR},
#{transType,jdbcType=SMALLINT}, #{payMode,jdbcType=INTEGER}, #{payProduct,jdbcType=INTEGER},
#{currency,jdbcType=VARCHAR}, #{orderAmount,jdbcType=BIGINT}, #{otherPayModeAmount,jdbcType=BIGINT},
#{allowRepeatPay,jdbcType=SMALLINT}, #{closeSource,jdbcType=SMALLINT}, #{state,jdbcType=SMALLINT},
#{stateDesc,jdbcType=VARCHAR}, #{timeExpire,jdbcType=TIMESTAMP}, #{accountDate,jdbcType=VARCHAR},
#{completeTime,jdbcType=TIMESTAMP}, #{refundState,jdbcType=SMALLINT}, #{settleCycle,jdbcType=SMALLINT},
#{clearingSettleFlag,jdbcType=SMALLINT}, #{transactionId,jdbcType=VARCHAR}, #{actualPayAmount,jdbcType=BIGINT},
#{payableAmount,jdbcType=BIGINT}, #{actualSettleAmount,jdbcType=BIGINT}, #{settleId,jdbcType=VARCHAR},
#{discountTotalAmount,jdbcType=BIGINT}, #{feeDiscountTotalAmount,jdbcType=BIGINT},
#{chlDiscountTotalAmount,jdbcType=BIGINT}, #{physicalState,jdbcType=SMALLINT},
#{createTime,jdbcType=TIMESTAMP}, #{updateTime,jdbcType=TIMESTAMP}, #{settleState,jdbcType=SMALLINT}
)
</insert>
<update id="updateByPrimaryKey" parameterType="com.example.demo11.MchOrder">
<!--
WARNING - @mbg.generated
This element is automatically generated by MyBatis Generator, do not modify.
This element was generated on Thu May 04 16:21:01 CST 2023.
-->
update t_mch_order_1
set cust_id = #{custId,jdbcType=VARCHAR},
user_code = #{userCode,jdbcType=VARCHAR},
payee_cust_id = #{payeeCustId,jdbcType=VARCHAR},
payee_user_code = #{payeeUserCode,jdbcType=VARCHAR},
payee_org_no = #{payeeOrgNo,jdbcType=VARCHAR},
originator_cust_id = #{originatorCustId,jdbcType=VARCHAR},
originator_user_code = #{originatorUserCode,jdbcType=VARCHAR},
originator_org_no = #{originatorOrgNo,jdbcType=VARCHAR},
agent_no = #{agentNo,jdbcType=VARCHAR},
order_no = #{orderNo,jdbcType=VARCHAR},
out_trade_no = #{outTradeNo,jdbcType=VARCHAR},
order_type = #{orderType,jdbcType=SMALLINT},
sign_product = #{signProduct,jdbcType=INTEGER},
biz_code = #{bizCode,jdbcType=VARCHAR},
trans_type = #{transType,jdbcType=SMALLINT},
pay_mode = #{payMode,jdbcType=INTEGER},
pay_product = #{payProduct,jdbcType=INTEGER},
currency = #{currency,jdbcType=VARCHAR},
order_amount = #{orderAmount,jdbcType=BIGINT},
other_pay_mode_amount = #{otherPayModeAmount,jdbcType=BIGINT},
allow_repeat_pay = #{allowRepeatPay,jdbcType=SMALLINT},
close_source = #{closeSource,jdbcType=SMALLINT},
state = #{state,jdbcType=SMALLINT},
state_desc = #{stateDesc,jdbcType=VARCHAR},
time_expire = #{timeExpire,jdbcType=TIMESTAMP},
account_date = #{accountDate,jdbcType=VARCHAR},
complete_time = #{completeTime,jdbcType=TIMESTAMP},
refund_state = #{refundState,jdbcType=SMALLINT},
settle_cycle = #{settleCycle,jdbcType=SMALLINT},
clearing_settle_flag = #{clearingSettleFlag,jdbcType=SMALLINT},
transaction_id = #{transactionId,jdbcType=VARCHAR},
actual_pay_amount = #{actualPayAmount,jdbcType=BIGINT},
payable_amount = #{payableAmount,jdbcType=BIGINT},
actual_settle_amount = #{actualSettleAmount,jdbcType=BIGINT},
settle_id = #{settleId,jdbcType=VARCHAR},
discount_total_amount = #{discountTotalAmount,jdbcType=BIGINT},
fee_discount_total_amount = #{feeDiscountTotalAmount,jdbcType=BIGINT},
chl_discount_total_amount = #{chlDiscountTotalAmount,jdbcType=BIGINT},
physical_state = #{physicalState,jdbcType=SMALLINT},
create_time = #{createTime,jdbcType=TIMESTAMP},
update_time = #{updateTime,jdbcType=TIMESTAMP},
settle_state = #{settleState,jdbcType=SMALLINT}
where id = #{id,jdbcType=BIGINT}
</update>
<select id="selectByPrimaryKey" parameterType="java.lang.Long" resultMap="BaseResultMap">
<!--
WARNING - @mbg.generated
This element is automatically generated by MyBatis Generator, do not modify.
This element was generated on Thu May 04 16:21:01 CST 2023.
-->
select id, cust_id, user_code, payee_cust_id, payee_user_code, payee_org_no, originator_cust_id,
originator_user_code, originator_org_no, agent_no, order_no, out_trade_no, order_type,
sign_product, biz_code, trans_type, pay_mode, pay_product, currency, order_amount,
other_pay_mode_amount, allow_repeat_pay, close_source, state, state_desc, time_expire,
account_date, complete_time, refund_state, settle_cycle, clearing_settle_flag, transaction_id,
actual_pay_amount, payable_amount, actual_settle_amount, settle_id, discount_total_amount,
fee_discount_total_amount, chl_discount_total_amount, physical_state, create_time,
update_time, settle_state
from t_mch_order_1
where id = #{id,jdbcType=BIGINT}
</select>
<select id="selectAll" resultMap="BaseResultMap">
<!--
WARNING - @mbg.generated
This element is automatically generated by MyBatis Generator, do not modify.
This element was generated on Thu May 04 16:21:01 CST 2023.
-->
select id, cust_id, user_code, payee_cust_id, payee_user_code, payee_org_no, originator_cust_id,
originator_user_code, originator_org_no, agent_no, order_no, out_trade_no, order_type,
sign_product, biz_code, trans_type, pay_mode, pay_product, currency, order_amount,
other_pay_mode_amount, allow_repeat_pay, close_source, state, state_desc, time_expire,
account_date, complete_time, refund_state, settle_cycle, clearing_settle_flag, transaction_id,
actual_pay_amount, payable_amount, actual_settle_amount, settle_id, discount_total_amount,
fee_discount_total_amount, chl_discount_total_amount, physical_state, create_time,
update_time, settle_state
from t_mch_order_1
</select>
</mapper>
使用
package com.example.demo;
import org.mybatis.spring.annotation.MapperScan;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
@SpringBootApplication
@MapperScan
public class DemoApplication {
public static void main(String[] args) {
SpringApplication.run(DemoApplication.class, args);
}
}
package com.example.demo11;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;
import javax.annotation.Resource;
/**
* @program: testtt
* @ClassName TestController
* @description:
* @author:
* @create: 2023-04-25 16:28
* @Version 1.0
**/
@RestController
public class TestController {
@Resource
private MchOrderMapper mchOrderMapper;
@GetMapping("/getData")
public String getData(){
mchOrderMapper.selectAll();
return "-";
}
}
使用generator工具
引入依赖
<!--数据库mapper、xml快速生成工具 -->
<dependency>
<groupId>org.mybatis.generator</groupId>
<artifactId>mybatis-generator-core</artifactId>
<version>1.3.7</version>
</dependency>
配置文件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>
<!--targetRuntime用MyBatis3, 也就是默认的-->
<context id="mysqlTables" targetRuntime="MyBatis3Simple">
<commentGenerator>
<!-- 是否去除自动生成的注释 true:是 : false:否 -->
<property name="suppressAllComments" value="false"/>
</commentGenerator>
<!--jdbc的数据库连接-->
<jdbcConnection driverClass="org.postgresql.Driver"
connectionURL="jdbc:postgresql://paychan1.dev.pgsql.db.com:5001/db_paycore_order_01?serverTimezone=UTC&useUnicode=true&characterEncoding=utf-8"
userId="order_01"
password="ikcZ1D$X4y$CjLa$">
</jdbcConnection>
<!--非必须,Java类型解析器,在数据库类型和java类型之间的转换控制-->
<javaTypeResolver>
<!--
true:使用BigDecimal对应DECIMAL和 NUMERIC数据类型
false:默认,
scale>0;length>18:使用BigDecimal;
scale=0;length[10,18]:使用Long;
scale=0;length[5,9]:使用Integer;
scale=0;length<5:使用Short; -->
<property name="forceBigDecimals" value="false"/>
</javaTypeResolver>
<!-- java模型创建器,即配置生成java POJO实体类的位置
负责:1,key类(见context的defaultModelType);2,java类;3,查询类
targetPackage:生成的类要放的包,真实的包受enableSubPackages属性控制;
targetProject:目标项目,指定一个存在的目录下,生成的内容会放到指定目录中,如果目录不存在,MBG不会自动建目录
-->
<javaModelGenerator targetPackage="com.example.demo11" targetProject=".\src\main\java">
<!-- 在targetPackage的基础上,根据数据库的schema再生成一层package,最终生成的类放在这个package下(即是否允许子包),默认为false -->
<property name="enableSubPackages" value="true"/>
<!-- 设置是否在getter方法中,对String类型字段调用trim()方法 -->
<property name="trimStrings" value="true"/>
</javaModelGenerator>
<!-- Mapper映射生成器,即配置生成生成XxxMapper.xml的位置 -->
<sqlMapGenerator targetPackage="mapper" targetProject=".\src\main\resources">
<!-- 在targetPackage的基础上,根据数据库的schema再生成一层package,最终生成的类放在这个package下,默认为false -->
<property name="enableSubPackages" value="true"/>
</sqlMapGenerator>
<!--Mapper接口生成器, 即配置生成生成的 Mapper接口的位置,注意,如果没有配置该元素,那么默认不会生成Mapper接口
type:选择怎么生成mapper接口(在MyBatis3/MyBatis3Simple下):
1,ANNOTATEDMAPPER:会生成使用Mapper接口+Annotation的方式创建(SQL生成在annotation中),不会生成对应的XML;
2,MIXEDMAPPER:使用混合配置,会生成Mapper接口,并适当添加合适的Annotation,但是XML会生成在XML中;
3,XMLMAPPER:会生成Mapper接口,接口完全依赖XML;
注意,如果context是MyBatis3Simple:只支持ANNOTATEDMAPPER和XMLMAPPER
-->
<javaClientGenerator type="XMLMAPPER" targetPackage="com.example.demo11" targetProject=".\src\main\java">
<!-- 在targetPackage的基础上,根据数据库的schema再生成一层package,最终生成的类放在这个package下,默认为false -->
<property name="enableSubPackages" value="true"/>
</javaClientGenerator>
<!-- 指定数据库中的数据表(可同时指定多张表)进行生成 -->
<!--字段命名策略过程: table标签对应数据库中的table表-->
<!--字段命名策略过程: domainObjectName标签对应生成的类名-->
<table tableName="t_mch_order_1" domainObjectName="MchOrder"></table>
<!-- <table tableName="t_role" domainObjectName="Role"></table>-->
</context>
</generatorConfiguration>
进行使用
package com.example.demo;
import org.mybatis.generator.api.MyBatisGenerator;
import org.mybatis.generator.config.Configuration;
import org.mybatis.generator.config.xml.ConfigurationParser;
import org.mybatis.generator.internal.DefaultShellCallback;
import java.io.File;
import java.util.ArrayList;
import java.util.List;
/**
* @program: quality-platform
* @ClassName MybatisGenerator
* @description:
* @author: 莫植铭
* @create: 2023-04-26 16:02
* @Version 1.0
**/
public class MybatisGenerator {
public static void main(String[] args) {
try {
MybatisGenerator app = new MybatisGenerator();
app.generator();
} catch (Exception e) {
e.printStackTrace();
}
}
public void generator() throws Exception{
List<String> warnings = new ArrayList<String>();
boolean overwrite = true;
// 指定 逆向工程配置文件,这两种都可以
String path = this.getClass().getClassLoader().getResource("generatorConfig.xml").getPath();
File configFile = new File(path);
// File configFile = new File("D:/JDWorkspaceIDEA19/jqmybatis/src/main/resources/generatorConfig.xml");
ConfigurationParser cp = new ConfigurationParser(warnings);
Configuration config = cp.parseConfiguration(configFile);
DefaultShellCallback callback = new DefaultShellCallback(overwrite);
MyBatisGenerator myBatisGenerator = new MyBatisGenerator(config, callback, warnings);
myBatisGenerator.generate(null);
}
}