今天写的是springboot和mybatis的整合;mybatis的使用配上springboot,是我们的开发更加便利;一共有两种快速整合模式
- 第一种还是得通过xml少量的配置来整合
- 通过注解来整合
(1)先来解释第一种
- 首先先创建Spring Starter Project,且增加web,jdbc,mybatis,mysql相关组件 (其实jdbc组件可以引用也可以不引用,因为Mybatis框架的底层还是采用原生的jdbc来对数据库进行操作,只是通过 SqlSessionFactory,SqlSession Executor,StatementHandler,ParameterHandler,ResultHandler和TypeHandler等几个处理器封装了这些过程)
- 增加application.yml配置文件,配置数据源和mybatis配置文件位置和mapper存放位置
- appellation.yml配置中简单的配置
spring:
datasource:
username: xxx
password: xxx
url: jdbc:mysql://xxxxxx:3306/xxx?useSSL=false&useUnicode=true&characterEncoding=UTF-8
#driver-class-name: com.mysql.jdbc.Driver
driver-class-name: com.mysql.cj.jdbc.Driver
mybatis:
config-location: classpath:mybatis/mybatis-config.xml
mapper-locations: classpath:mybatis/mapper
- 注意driver-class-name: com.mysql.cj.jdbc.Driver
- 然后在建立相关的配置文件和mapper文件夹,得到的项目结构如下图:
- 让后导入相关的配类就好了,比如bean,mapper接口,mapper接口的xml,为了简单我就自己创建如下,
- 最重要的一步即使在主程序加入mapper扫描注解:@MapperScan(“com.springboot.mapper”) 注解,扫描dao包的注解:如下图:
这样的话 我们就可以成功访问了,我在Controller层加入了查找bean的方法
- 现在可以成功访问通过mybatis获取到bean,如下图:
上面的方式是要通过xml和yml配置文件配置可以整合mybatis;开启事务也不用在xml文件配置,开启事务首先要在主程序中添加@EnableTransactionManagement //启用声明式事务注解的注解,然后在service的实现类中可以配置具体的隔离,比如配置只读
@Service
public class TAdminServiceImpl implements TAdminService{
@Autowired
TAdminMapper adminMapper;
@Transactional(readOnly = true)
public TAdmin getTAdminById(Integer id) {
return adminMapper.selectByPrimaryKey(id);
}
}
- 为了方便其实也是可以在类上直接配置隔离级别,类中的方法默认都是你配置的这个级别,然后具体方法在具体配置
现在就是第二种整合方式 通过注解的方式;注解版
- 先拷贝上面那个版本;通过注解我们是可以不用配置相关的配置文件和生成的mapper,所以在yml配置文件用我们也不用设置相关的路径;项目大体结构如图:
- 与上种方式的结构对比 我们在resources中是没有mybatis文件夹,和相关配置文件 那我们是如何使用mybatis呢
- yml配置文件如下,不用配置相关路径:
spring:
datasource:
username: root
password: xxx
url: jdbc:mysql://xxx/xxx?useSSL=false&useUnicode=true&characterEncoding=UTF-8
#driver-class-name: com.mysql.jdbc.Driver
driver-class-name: com.mysql.cj.jdbc.Driver
#type: com.alibaba.druid.pool.DruidDataSource
#mybatis:
# config-location: classpath:mybatis/mybatis-config.xml
# mapper-locations: classpath:mybatis/mapper
- 可以看到配置文件和xml的生成路径都是注释掉的
- 接下来我们的步骤
- 1 首先 在主程序也是得加入扫描dao成包的注释@MapperScan(“com.springboot.mapper”),来扫描dao
- 2 在mapper接口的方法通过注释,自写sql语句来实现方法如图:
- 现在启动访问:
- 可以看到也是可以获取的到bean
使用心得:
- 通过注解我们可以来实现简单的sql语句的方法,如果需要跑复杂动态的sql语句,我们还是得通过第一种配置的方式来实现;不过注解的方式是实在方便,所以建议两种一起用哈哈
- 在事务上,可以看到注解的方式为我们省略的很多事情,我们不用在xml文件中配置,现在可以直接通过注解的方式开启事务,而且阅读起来也是简单明了;