在线时间:8:00-16:00
迪恩网络APP
随时随地掌握行业动态
扫描二维码
关注迪恩网络微信公众号
开源软件名称:mybatis-mapper2sql开源软件地址:https://gitee.com/rtttte/mybatis-mapper2sql开源软件介绍:mybatis-mapper2sqlGenerate SQL Statements from the MyBatis3 Mapper XML file Installation
Usageimport mybatis_mapper2sql# Parse Mybatis Mapper XML filesmapper, xml_raw_text = mybatis_mapper2sql.create_mapper(xml='mybatis_mapper.xml')# Get All SQL Statements from Mapperstatement = mybatis_mapper2sql.get_statement(mapper)# Get SQL Statement By SQLIdstatement = mybatis_mapper2sql.get_child_statement(mapper, sql_id) Examplestest.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="Test"> <sql id="sometable"> fruits </sql> <sql id="somewhere"> WHERE category = #{category} </sql> <sql id="someinclude"> FROM <include refid="${include_target}"/> <include refid="somewhere"/> </sql> <select id="testParameters"> SELECT name, category, price FROM fruits WHERE category = #{category} AND price > ${price} </select> <select id="testInclude"> SELECT name, category, price <include refid="someinclude"> <property name="prefix" value="Some"/> <property name="include_target" value="sometable"/> </include> </select> <select id="testIf"> SELECT name, category, price FROM fruits WHERE 1=1 <if test="category != null and category !=''"> AND category = #{category} </if> <if test="price != null and price !=''"> AND price = ${price} <if test="price >= 400"> AND name = 'Fuji' </if> </if> </select> <select id="testTrim"> SELECT name, category, price FROM fruits <trim prefix="WHERE" prefixOverrides="AND|OR"> OR category = 'apple' OR price = 200 </trim> </select> <select id="testWhere"> SELECT name, category, price FROM fruits <where> AND category = 'apple' <if test="price != null and price !=''"> AND price = ${price} </if> </where> </select> <update id="testSet"> UPDATE fruits <set> <if test="category != null and category !=''"> category = #{category}, </if> <if test="price != null and price !=''"> price = ${price}, </if> </set> WHERE name = #{name} </update> <select id="testChoose"> SELECT name, category, price FROM fruits <where> <choose> <when test="name != null"> AND name = #{name} </when> <when test="category == 'banana'"> AND category = #{category} <if test="price != null and price !=''"> AND price = ${price} </if> </when> <otherwise> AND category = 'apple' </otherwise> </choose> </where> </select> <select id="testForeach"> SELECT name, category, price FROM fruits <where> category = 'apple' AND <foreach collection="apples" item="name" open="(" close=")" separator="OR"> <if test="name == 'Jonathan' or name == 'Fuji'"> name = #{name} </if> </foreach> </where> </select> <insert id="testInsertMulti"> INSERT INTO fruits ( name, category, price ) VALUES <foreach collection="fruits" item="fruit" separator=","> ( #{fruit.name}, #{fruit.category}, ${fruit.price} ) </foreach> </insert> <select id="testBind"> <bind name="likeName" value="'%' + name + '%'"/> SELECT name, category, price FROM fruits WHERE name like #{likeName} </select></mapper> test.pyGet All SQL Statements from Mapper import mybatis_mapper2sqlmapper, xml_raw_text = mybatis_mapper2sql.create_mapper(xml='test.xml')statement = mybatis_mapper2sql.get_statement(mapper, result_type='raw', reindent=True, strip_comments=True)print(statement) SELECT name, category, priceFROM fruitsWHERE category = ? AND price > ?;SELECT name, category, priceFROM fruitsWHERE category = ?;SELECT name, category, priceFROM fruitsWHERE 1=1 AND category = ? AND price = ? AND name = 'Fuji';SELECT name, category, priceFROM fruitsWHERE category = 'apple' OR price = 200;SELECT name, category, priceFROM fruitsWHERE category = 'apple' AND price = ?;UPDATE fruitsSET category = ?, price = ?WHERE name = ?;SELECT name, category, priceFROM fruitsWHERE name = ? AND category = ? AND price = ? AND category = 'apple';SELECT name, category, priceFROM fruitsWHERE categy = 'apple' AND (name = ? OR name = ?);INSERT INTO fruits (name, category, price)VALUES (?, ?, ?) , (?, ?, ?);SELECT name, category, priceFROM fruitsWHERE name like ?; Get SQL Statement By SQLId import mybatis_mapper2sqlmapper, xml_raw_text = mybatis_mapper2sql.create_mapper(xml='test.xml')statement = mybatis_mapper2sql.get_child_statement(mapper,'testForeach', reindent=True, strip_comments=False)print(statement) SELECT name, category, priceFROM fruitsWHERE categy = 'apple' AND ( name = ? -- if(name == 'Jonathan' or name == 'Fuji')OR name = ? -- if(name == 'Jonathan' or name == 'Fuji')) Running the tests
Known Limitations
AcknowledgmentsThis project was inspired by the following projects and websites: |
请发表评论