Mybatis 框架篇章十二
【摘要】 Mybatis的参数传递简述简单说明一下参数传递的问题。其实之前的举例也有说明。 多个参数传递就直接说,比如查询的操作。我们可以传递字段值,然后我们就可以锁定一个对象。我们在接口当中写一个方法 Brand select(@Param("id") Integer id,@Param("brandName") String brandName);我们这个叫@Param注释。以后多参传递的话就这...
Mybatis的参数传递简述
简单说明一下参数传递的问题。其实之前的举例也有说明。
多个参数传递
就直接说,比如查询的操作。我们可以传递字段值,然后我们就可以锁定一个对象。
我们在接口当中写一个方法
Brand select(@Param("id") Integer id,@Param("brandName") String brandName);
我们这个叫@Param注释。以后多参传递的话就这样写,对于代码的阅读性比较好。
()里面的参数要和映射文件中的参数占位符名称一样。这个是要求。
然后像定义的其他的类型可以认为作为对测试代码的传入值的接收。
这样写后,我们看映射文件
<select id="select" resultMap="brandResultMap">
select * from tb_brand
where id = #{id} and brand_name = #{brandName};
</select>
然后我们在测试类中这样写一个静态方法,静态方法就可以直接调用。
public static void selectMore() throws IOException {
Integer id = 5;
String brandName = "波导";
String resources = "mybatis-config.xml";
InputStream resourceAsStream = Resources.getResourceAsStream(resources);
SqlSessionFactory build = new SqlSessionFactoryBuilder().build(resourceAsStream);
SqlSession sqlSession = build.openSession();
BrandMapper mapper = sqlSession.getMapper(BrandMapper.class);
Brand brand = mapper.select(id, brandName);
System.out.println(brand);
sqlSession.close();
}
单个参数的传递
对于单个参数的传递,我们在之前的例子也有遇到过。之前的根据id来得到数据就是典型的一个单个参数的传递。我们可以传入一个普通的java对象,以及集合等数据结构。
将数据封装到对象,传递。
详见目录多条件查询,就不再多说。
简单的注解实现CRUD
注解当然还是在接口中写上
定义好方法,然后在上面写上注解以及相关的sql语句。
@Select("select * from tb_brand where id = #{id}")
Brand selectByIdBrand(int id);
这样很简单,我们不需要再sql映射文件中写东西了。然后在测试代码中调用方法。
public static void selectById() throws IOException {
Integer id =5;
String resources = "mybatis-config.xml";
InputStream resourceAsStream = Resources.getResourceAsStream(resources);
SqlSessionFactory build = new SqlSessionFactoryBuilder().build(resourceAsStream);
SqlSession sqlSession = build.openSession();
BrandMapper mapper = sqlSession.getMapper(BrandMapper.class);
Brand brand = mapper.selectByIdBrand(id);
System.out.println(brand);
sqlSession.close();
}
但是注解简单,但是只是对于简单的查询。有很多功能它完成不了。我们这个查询还会存在问题。之前我们提到过,当sql中的字段和和对象类类中属性不一致的时候,会返回空。之前我们做的事要么将字段重命名,要么就用一个标签。我们最终采用的标签类似于这样。
<resultMap id="brandResultMap" type="brand">
<!-- 不一样的写这里-->
<!-- id完成主键字段的映射
-->
<!-- result 完成一般字段的映射-->
<result column="brand_name" property="brandName"/>
<result column="company_name" property="companyName"/>
</resultMap>
然后我们可以在下面这样写
<select id="selectOnly" resultMap="brandResultMap">-->
select *-->
from tb_brand-->
where id <![CDATA[-->
< #{id_1};-->
]]>-->
</select>-->
但是你使用注解的来代替的话就不是很方便。另外对于大量的sql语句的话,就不适用了。
ok简单介绍这么多。
【版权声明】本文为华为云社区用户原创内容,未经允许不得转载,如需转载请自行联系原作者进行授权。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱:
cloudbbs@huaweicloud.com
- 点赞
- 收藏
- 关注作者
评论(0)