个人博客地址:https://www.xdx97.com/
常见的写法都已经烂熟于心了,但是稍微复杂一点的写法,总是忘记,每次都要去百度一下,为了方便自己也方便别人就整理一下全部的写法吧
一、基本的入参和出参
1-1、单个出参和入参
TestMapper
String testOne(@Param("id") String id);
TestMapper.xml
SELECT name FROM xdx_test WHERE id = #{id}
1-2、多个入参和出参
TestMapper
List<String> testTwo(@Param("clas") String clas,@Param("score") String score);
TestMapper.xml
<select id="testTwo" parameterType="java.lang.String" resultType="java.util.List">
SELECT name FROM xdx_test WHERE class = #{clas} AND score = #{score}
</select>
二、实体入参出参
XdxTest
import lombok.Data;
@Data
public class XdxTest {
private String id;
private String name;
private String score;
}
2-1、单个实体入参出参
TestMapper
XdxTest testThree(XdxTest xdxTest);
TestMapper.xml
<select id="testThree" parameterType="com.xdx97.test.pojo.XdxTest" resultType="com.xdx97.test.pojo.XdxTest">
SELECT id,name FROM xdx_test WHERE id= #{id}
</select>
2-2、多个实体入参出参
TestMapper
List<XdxTest> testFour(XdxTest xdxTest);
TestMapper.xml
<select id="testFour" parameterType="com.xdx97.test.pojo.XdxTest" resultType="com.xdx97.test.pojo.XdxTest">
SELECT id,name FROM xdx_test WHERE score = #{score}
</select>
从上面的例子我们可以得出,当我们返回List的时候,我们只需要配置List里面的实体的全限定名。
三、传入List、Map
3-1、传入单个的List
TestMapper
List<String> testFive(@Param("params") List<String> params);
TestMapper.xml
<select id="testFive" parameterType="java.util.List" resultType="java.lang.String">
SELECT name
FROM xdx_test
WHERE score IN
<foreach collection="params" index="index" item="item" open="(" close=")" separator=",">
#{item}
</foreach>
</select>
3-2、传入单个的Map(其实传递Map和实体的时候用法是一样的)
TestMapper
List<String> testSix(Map<String,Object> params);
TestMapper.xml
<select id="testSix" parameterType="java.util.Map" resultType="java.lang.String">
SELECT name
FROM xdx_test
WHERE score = #{score}
AND class = #{class}
</select>
四、传入List
List
TestMapper
List<String> testSeven(@Param("params") List<Map<String,Object>> params);
TestMapper.xml
<select id="testSeven" parameterType="java.util.Map" resultType="java.lang.String">
SELECT name
FROM xdx_test
WHERE score IN
<foreach collection="params" index="index" item="item" open="(" close=")" separator=",">
#{item.score}
</foreach>
</select>
五、传递List
TestMapper
List<String> testSeven(@Param("params") List<Map<String,Object>> params,@Param("class") String clas);
TestMapper.xml
<select id="testSeven" parameterType="java.util.Map" resultType="java.lang.String">
SELECT name
FROM xdx_test
WHERE score IN
<foreach collection="params" index="index" item="item" open="(" close=")" separator=",">
#{item.score}
</foreach>
AND class = #{class}
</select>