博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
SpringBoot集成mybatis
阅读量:7174 次
发布时间:2019-06-29

本文共 6317 字,大约阅读时间需要 21 分钟。

mybatis系列

一、使用

1、添加依赖

org.mybatis.spring.boot
mybatis-spring-boot-starter
1.0.0

2、启动时导入指定的sql(application.properties)

spring.datasource.schema=import.sql

3、annotation形式

@SpringBootApplication@MapperScan("sample.mybatis.mapper")public class SampleMybatisApplication implements CommandLineRunner {    @Autowired    private CityMapper cityMapper;    public static void main(String[] args) {        SpringApplication.run(SampleMybatisApplication.class, args);    }    @Override    public void run(String... args) throws Exception {        System.out.println(this.cityMapper.findByState("CA"));    }}

4、xml方式

mybatis-config.xml

application.properties

spring.datasource.schema=import.sqlmybatis.config=mybatis-config.xml

mapper

@Componentpublic class CityMapper {    @Autowired    private SqlSessionTemplate sqlSessionTemplate;    public City selectCityById(long id) {        return this.sqlSessionTemplate.selectOne("selectCityById", id);    }}

二、手工集成

1、annotation方式

@Configuration@MapperScan("com.xixicat.modules.dao")@PropertySources({ @PropertySource(value = "classpath:application.properties", ignoreResourceNotFound = true), @PropertySource(value = "file:./application.properties", ignoreResourceNotFound = true) })public class MybatisConfig {        @Value("${name:}")    private String name;    @Value("${database.driverClassName}")    private String driverClass;    @Value("${database.url}")    private String jdbcUrl;    @Value("${database.username}")    private String dbUser;    @Value("${database.password}")    private String dbPwd;    @Value("${pool.minPoolSize}")    private int minPoolSize;    @Value("${pool.maxPoolSize}")    private int maxPoolSize;    @Bean    public Filter characterEncodingFilter() {        CharacterEncodingFilter characterEncodingFilter = new CharacterEncodingFilter();        characterEncodingFilter.setEncoding("UTF-8");        characterEncodingFilter.setForceEncoding(true);        return characterEncodingFilter;    }    @Bean(destroyMethod = "close")    public DataSource dataSource(){        HikariConfig hikariConfig = new HikariConfig();        hikariConfig.setDriverClassName(driverClass);        hikariConfig.setJdbcUrl(jdbcUrl);        hikariConfig.setUsername(dbUser);        hikariConfig.setPassword(dbPwd);        hikariConfig.setPoolName("springHikariCP");        hikariConfig.setAutoCommit(false);        hikariConfig.addDataSourceProperty("cachePrepStmts", "true");        hikariConfig.addDataSourceProperty("prepStmtCacheSize", "250");        hikariConfig.addDataSourceProperty("prepStmtCacheSqlLimit", "2048");        hikariConfig.addDataSourceProperty("useServerPrepStmts", "true");                  hikariConfig.setMinimumIdle(minPoolSize);        hikariConfig.setMaximumPoolSize(maxPoolSize);        hikariConfig.setConnectionInitSql("SELECT 1");                HikariDataSource dataSource = new HikariDataSource(hikariConfig);        return dataSource;    }        @Bean    public PlatformTransactionManager transactionManager() {        return new DataSourceTransactionManager(dataSource());    }    @Bean    public SqlSessionFactory sqlSessionFactory() throws Exception {        SqlSessionFactoryBean sessionFactory = new SqlSessionFactoryBean();        sessionFactory.setDataSource(dataSource());        sessionFactory.setFailFast(true);        sessionFactory.setConfigLocation(new ClassPathResource("mybatis-config.xml"));        return sessionFactory.getObject();    }}

点评

这种方式有点别扭,而且,只能采用注解声明,有些冗余

2、xml方式

数据源

${database.url}
${database.username}
${database.password}

aop依赖

org.springframework.boot
spring-boot-starter-aop

mybatis-spring等依赖

org.mybatis
mybatis
3.3.0
compile
org.mybatis
mybatis-spring
1.2.2
compile
mysql
mysql-connector-java
5.1.6
com.zaxxer
HikariCP-java6
2.3.8

指定xml配置文件

@Configuration@ComponentScan( basePackages = {"com.xixicat"} )@ImportResource("classpath:applicationContext-mybatis.xml")@EnableAutoConfigurationpublic class AppMain {    // 用于处理编码问题    @Bean    public Filter characterEncodingFilter() {        CharacterEncodingFilter characterEncodingFilter = new CharacterEncodingFilter();        characterEncodingFilter.setEncoding("UTF-8");        characterEncodingFilter.setForceEncoding(true);        return characterEncodingFilter;    }    //文件下载    @Bean    public HttpMessageConverters restFileDownloadSupport() {        ByteArrayHttpMessageConverter arrayHttpMessageConverter = new ByteArrayHttpMessageConverter();        return new HttpMessageConverters(arrayHttpMessageConverter);    }    public static void main(String[] args) throws Exception {        SpringApplication.run(AppMain.class, args);    }}

点评

跟传统的方式集成最为直接,而且事务配置也比较容易上手

转载地址:http://iudzm.baihongyu.com/

你可能感兴趣的文章
zabbix使用msmtp&&mutt搭建邮件告警服务
查看>>
USB抓包工具--Bus Hound的使用方法详解
查看>>
location of android sdk has not been setup in the preference
查看>>
Centos7 二进制安装mysql5.7
查看>>
Centos7之Nginx的两种工作模式
查看>>
Java之品优购课程讲义_day18(3)
查看>>
rpm,yum,权限
查看>>
更新yum到 163
查看>>
Office 2019 & Office 2016 下载地址
查看>>
tomcat应用转到weblogic上时的问题
查看>>
国外程序员是如何准备面试的
查看>>
Zookeeper监控之——node-zk-browser
查看>>
我的友情链接
查看>>
10个最酷的linux单行命令
查看>>
myeclipse 10 在mac retina 屏幕下显示字体模糊解决方法
查看>>
创建自定义的指令
查看>>
javascript对象中判断属性
查看>>
git删除分支与合并分支
查看>>
Python元组
查看>>
HD TUNE以及所有其他硬盘检测工具都不能使用的情况
查看>>