注解执行SQL语句
Mybatis的映射接口需要写在映射器xml的命名空间内。为了省略这一步,可以使用注解开发。
java
@Select("select * from artist where aID = #{a}")
artist getArtistById(int a);
在接口的方法上加上注解@,注解中写明SQL语句即可省略映射器的SQL语句书写,不用写分号。
(注:此处若无法识别数据库的表,需要右键选择架构)
同时修改配置xml文件中的mapper标签:
XML
<mapper class = "com.test.mapper.TestMapperInterface"/>
<!-- 也可以直接注册整个包下的 <package name="com.test.mapper"/> -->
将resource: 映射器直接改为class: 接口,若多个接口都在同一个包下,也可以使用**package:**包名
注解自定义映射规则
使用SqlSession中的方法或映射器中的SQL语句都只能完成简单的Sql操作。复杂的操作需要我们自定义映射规则**@Results**注解来解决。
java
@Results({
@Result(id = true, column = "sid", property = "sid"),
@Result(column = "sex", property = "name"),
@Result(column = "name", property = "sex")
})
@Select("select * from student")
@ConstructorArgs({
@Arg(column = "sid", javaType = int.class),
@Arg(column = "name", javaType = String.class)
})
@Select("select * from student where sid = #{sid} and sex = #{sex}")
相比于映射器里书写的自定义映射规则,不需要写resultMap的id与type
如果要使用映射器中定义的映射规则,可以使用**@ResultMap**(id)注解,填写映射规则id即可。
如果要用接口写多个构造方法,可以使用**@ConstructorArgs**注解。
若方法中含有多个形参,需要用**@Param**注解将参数名强调一遍,否则会报错。
java
@Select("select * from artist where aID = #{a} and asex = #{b}")
artist getArtistById(@Param("a")int a, @Param("b")int b);