
springboot常用注解精简总结&@Mapper@MapperScan的区别和用法
@RestController包含@Controller和@ResponseBody
@RestController和@Controller的区别是 RestController的方法不能返回到jsp页面 @ResponseBody 的作用就是将java对象转成json格式的数据
@Controller 将当前修饰的类注入SpringBoot IOC容器,使得从该类所在的项目跑起来的过程中,这个类就被实例化。当然也有语义化的作用,即代表该类是充当Controller的作用 @ResponseBody 它的作用简短截说就是指该类中所有的API接口返回的数据,甭管你对应的方法返回Map或是其他Object,它会以Json字符串的形式返回给客户端,本人尝试了一下,如果返回的是String类型,则仍然是String。
@RestController @RequestMapping("test") public class SampleController { @GetMapping public Map testGet() { return new HashMap<String, String>(){{ put("name", "springboot"); }}; } @GetMapping(path = "str") public String testGetStr() { return "OK"; } }这部分代码对于Map返回则是JSON String,对于String则仍然是String
@ConfigurationProperties可以将外部配置文件(比如applicaition.properties)加载进来,填充对象的对应字段的数据,然后供其他Bean使用。 prefix 前缀定义了哪些外部属性将绑定到类的字段上.
@Mapper和@MapperScan@Mapper 一般我们用在接口上,使用 @Mapper,最终 Mybatis 会有一个拦截器,会自动的把 @Mapper 注解的接口生成动态代理类。代码如下:
@Mapper public interface UserDAO { @Select("select * from user where name = #{name}") User find(String name); @Select("select * from user where name = #{name} and pwd = #{pwd}") /** * 对于多个参数来说,每个参数之前都要加上@Param注解, * 要不然会找不到对应的参数进而报错 */ User login(@Param("name")String name, @Param("pwd")String pwd); }@Mapper 注解针对的是一个一个的类,相当于是一个一个 Mapper.xml 文件。 而一个接口一个接口的使用 @Mapper,太麻烦了,于是 @MapperScan 就应用而生了。 @MapperScan 配置一个或多个包路径,自动的扫描这些包路径下的类,自动的为它们生成代理类。
@SpringBootApplication @MapperScan({"com.xttblog.mapper","com.xttblog.dao"}) public class XttblogApp { public static void main(String[] args) { SpringApplication.run(XttblogApp.class, args); } } 使用@MapperScan注解 通过使用@MapperScan可以指定要扫描的Mapper类的包的路径,比如: (模糊匹配) @SpringBootApplication @MapperScan(“com.kfit.*.mapper”) public class App { public static void main(String[] args) { SpringApplication.run(App.class, args); } }