Mybatis的使用
MyBatis 是一款优秀的持久层框架,它支持定制化 SQL、存储过程以及高级映射。MyBatis 避免了几乎所有的 JDBC 代码和手动设置参数以及获取结果集。MyBatis 可以使用简单的 XML 或注解来配置和映射原生信息,将接口和 Java 的POJOs(Plain Old Java Objects,普通的 Java对象)映射成数据库中的记录。
怎么在Spring Boot里面使用Mybatis呢?就继续看吧。
第一,在pom.xml里面导入配置文件。
<dependency>
<groupId>org.mybatis.spring.boot</groupId>
<artifactId>mybatis-spring-boot-starter</artifactId>
<version>1.1.1</version>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
</dependency>
第二,添加相关配置 application.yml。
#配置数据源
spring:
datasource:
#这里可以不写,会根据url自动判断,如果mybatis里面配置了version那么这里写了就会报错。
driver-class-name: com.mysql.jdbc.Driver
url: jdbc:mysql://localhost:3306/springboot
username: root
password: password
#这是在控制台打印mybatis的sql语句
logging:
level:
com:
springboot:
mybatis:
mepper: debug #这是mapper放置的地址。
#开启驼峰命名法,这样后面的开发Mapper就可以省掉@Results的注解,当然,不是驼峰命名法的还是不能省略。
mybatis:
configuration:
map-underscore-to-camel-case: true
第三,在启动类中添加对mapper包扫描@MapperScan。
@SpringBootApplication
@MapperScan("com.springboot.mybatis.mapper") //mapper文件的存放地址
public class Application {
public static void main(String[] args) {
SpringApplication.run(Application.class, args);
}
}
第四,开发Mapper就可以了。
public interface GirlMapper {
//这里没有使用@Results注解,是因为前面在application.yml已经进行相关配置了。
@Select("select * from girl")
@Results({
@Result(column="cup_size", property="cupSize", jdbcType=JdbcType.VARCHAR)
})
List<Girl> findAll();
@Select("select * from girl where id = #{id}")
Girl findOne(Integer id);
}
@Select 是查询类的注解,所有的查询均使用这个
@Result修饰返回的结果集,关联实体类属性和数据库字段一一对应,如果实体类属性和数据库属性名保持一致,就不需要这个属性来修饰。
@Insert插入数据库使用,直接传入实体类会自动解析属性到对应的值
@Update 负责修改,也可以直接传入对象
@delete 负责删除
第五,使用就可以了。
//如果想使用@RestController和@RequestMapping就必须在pom.xml里面导入WEB支持(spring-boot-starter-web)
@RestController
public class GirlController {
//注入GirlMapper
@Autowired
GirlMapper girlMapper;
@RequestMapping("/girls")
public List<Girl> findAll(){
return girlMapper.findAll();
}
@RequestMapping("/girl/{id}")
public Girl findOne(@PathVariable("id") Integer id){
return girlMapper.findOne(id);
}
}