【Java编码】mybatis的入门简单使用

引入依赖

分别引入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&amp;useUnicode=true&amp;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&amp;useUnicode=true&amp;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);
    }
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值