您好,登錄后才能下訂單哦!
怎么在spring中利用mybatis plus對sqlserver數據庫進行連接?相信很多沒有經驗的人對此束手無策,為此本文總結了問題出現的原因和解決方法,通過這篇文章希望你能解決這個問題。
框架選擇
應用框架:spring boot
ORM框架:mybatis plus(對于連接數據庫而言,mybatis和mybatis plus其實都一樣)
數據庫連接池:druid
此處僅給出我的配置,mybatis/druid請依據自己項目的需要進行選擇。
方便起見我用的是mybatis plus
<!--mybatis plus --> <dependency> <groupId>com.baomidou</groupId> <artifactId>mybatis-plus-boot-starter</artifactId> <version>3.1.0</version> </dependency> <dependency> <groupId>org.mybatis.generator</groupId> <artifactId>mybatis-generator-core</artifactId> <version>1.3.7</version> </dependency> <dependency> <groupId>org.mybatis</groupId> <artifactId>mybatis-spring</artifactId> <version>2.0.0</version> </dependency> <!-- druid 連接池 --> <dependency> <groupId>com.alibaba</groupId> <artifactId>druid</artifactId> <version>1.1.12</version> </dependency> <!--for SqlServer--> <dependency> <groupId>com.microsoft.sqlserver</groupId> <artifactId>sqljdbc4</artifactId> <version>4.0</version> </dependency>
添加數據庫配置
YAML文件中添加自己數據庫的地址
# SQL Server數據庫 spring.datasource.xx.url: jdbc:sqlserver://你的數據庫地址:1433;databaseName=你的數據庫名稱 spring.datasource.xx.username: xxxx spring.datasource.xx.password: xxxx spring.datasource.xx.driver-class-name: com.microsoft.sqlserver.jdbc.SQLServerDriver
此處和平時我們在spring boot中集成mybatis/mybatis plus一樣,添加bean即可。
由于平時經常用到多個數據庫,此處展示一個多數據源的例子:一個是mysql,一個是SQL Server
有關mybatis plus配置數據源的注意事項,比如配置mapper文件夾等,請自行問度娘,此處不再一一指出。
注意:下面代碼來自實際代碼,但批量刪除了敏感信息、重新命名,因而可能存在與前面配置信息不一致的地方,僅僅是一個示例
mysql數據源配置,注意,由于是多數據源,需要有一個數據源配置中加上@Primary注解
@Configuration @MapperScan(basePackages = "com.xxx.mapper", sqlSessionFactoryRef = "mysqlSqlSessionFactory") public class MySQLMybatisPlusConfig { @Autowired private MybatisPlusProperties properties; @Autowired private ResourceLoader resourceLoader = new DefaultResourceLoader(); @Autowired(required = false) private Interceptor[] interceptors; @Autowired(required = false) private DatabaseIdProvider databaseIdProvider; @Autowired private Environment env; @Bean(name = "mysqlDataSource") @Primary public DataSource getRecruitDataSource() throws Exception { Properties props = new Properties(); props.put("driverClassName", env.getProperty("spring.datasource.mysqlData.driver-class-name")); props.put("url", env.getProperty("spring.datasource.mysqlData.url")); props.put("username", env.getProperty("spring.datasource.mysqlData.username")); props.put("password", env.getProperty("spring.datasource.mysqlData.password")); return DruidDataSourceFactory.createDataSource(props); } /** * mybatis-plus分頁插件 */ @Bean public PaginationInterceptor paginationInterceptor() { PaginationInterceptor page = new PaginationInterceptor(); page.setDialectType("mysql"); return page; } @Bean(name = "mysqlSqlSessionFactory") @Primary public MybatisSqlSessionFactoryBean mybatisSqlSessionFactoryBean(@Qualifier("mysqlDataSource") DataSource mysqlDataSource) throws IOException { MybatisSqlSessionFactoryBean mybatisPlus = new MybatisSqlSessionFactoryBean(); try { mybatisPlus.setDataSource(mysqlDataSource); } catch (Exception e) { e.printStackTrace(); } mybatisPlus.setVfs(SpringBootVFS.class); // 設置分頁插件 MybatisConfiguration mc = new MybatisConfiguration(); mc.setDefaultScriptingLanguage(MybatisXMLLanguageDriver.class); mc.setMapUnderscoreToCamelCase(true);// 數據庫和java都是駝峰,就不需要 mybatisPlus.setConfiguration(mc); if (this.databaseIdProvider != null) { mybatisPlus.setDatabaseIdProvider(this.databaseIdProvider); } mybatisPlus.setTypeAliasesPackage("com.xxx.mysql.bean.model"); mybatisPlus.setTypeHandlersPackage(this.properties.getTypeHandlersPackage()); mybatisPlus.setMapperLocations(this.properties.resolveMapperLocations()); // 設置mapper.xml文件的路徑 ResourcePatternResolver resolver = new PathMatchingResourcePatternResolver(); Resource[] resource = resolver.getResources("classpath:mapper/*.xml"); mybatisPlus.setMapperLocations(resource); return mybatisPlus; } }
SQL Server數據源
@Configuration @MapperScan(basePackages = "com.xxx.survey.mapper", sqlSessionFactoryRef = "xxSqlSessionFactory") public class SqlServerMybatisConfig { @Autowired private MybatisPlusProperties properties; @Autowired private ResourceLoader resourceLoader = new DefaultResourceLoader(); @Autowired(required = false) private Interceptor[] interceptors; @Autowired(required = false) private DatabaseIdProvider databaseIdProvider; @Autowired private Environment env; @Bean(name = "xxDataSource") public DataSource getAttendanceDataSource() throws Exception { Properties props = new Properties(); props.put("driverClassName", env.getProperty("spring.datasource.xx.driver-class-name")); props.put("url", env.getProperty("spring.datasource.xx.url")); props.put("username", env.getProperty("spring.datasource.xx.username")); props.put("password", env.getProperty("spring.datasource.xx.password")); return DruidDataSourceFactory.createDataSource(props); } @Bean(name = "xxSqlSessionFactory") public MybatisSqlSessionFactoryBean mybatisSqlSessionFactoryBean(@Qualifier("xxDataSource") DataSource xxDataSource) throws IOException { MybatisSqlSessionFactoryBean mybatisPlus = new MybatisSqlSessionFactoryBean(); try { mybatisPlus.setDataSource(xxDataSource); } catch (Exception e) { e.printStackTrace(); } mybatisPlus.setVfs(SpringBootVFS.class); // 設置分頁插件 MybatisConfiguration mc = new MybatisConfiguration(); mc.setDefaultScriptingLanguage(MybatisXMLLanguageDriver.class); mc.setMapUnderscoreToCamelCase(true);// 數據庫和java都是駝峰,就不需要 mybatisPlus.setConfiguration(mc); if (this.databaseIdProvider != null) { mybatisPlus.setDatabaseIdProvider(this.databaseIdProvider); } mybatisPlus.setTypeAliasesPackage("com.xxx.survey.bean.model"); mybatisPlus.setTypeHandlersPackage(this.properties.getTypeHandlersPackage()); mybatisPlus.setMapperLocations(this.properties.resolveMapperLocations()); // 設置mapper.xml文件的路徑 ResourcePatternResolver resolver = new PathMatchingResourcePatternResolver(); Resource[] resource = resolver.getResources("classpath:mapper/*.xml"); mybatisPlus.setMapperLocations(resource); return mybatisPlus; } }
到這里,程序啟動應該沒什么問題,接著就應該生成DAO層、Service層代碼了
mybatis和mybatis plus在此處按照和連接mysql時一樣的方法,根據需要寫代碼即可。
比如對于mybatis plus,需要寫3處代碼:
實體bean,可以利用Spring Boot Code Generator!來根據SQL表結構自動生成
Mapper代碼:都有模板,mybatis plus自己封裝的方法已經很夠用,有單獨需求可以自己寫xml來自定義SQL
@Mapper public interface XXXMapper extends BaseMapper<XXX> { }
Service代碼
好像也有現成的工具可以自動生成mapper service代碼來著。
Service接口
public interface XXXService extends IService<XXX> { }
ServiceImpl
@Service public class XXXServiceImpl extends ServiceImpl<XXXMapper, XXX> implements XXXService { }
看完上述內容,你們掌握怎么在spring中利用mybatis plus對sqlserver數據庫進行連接的方法了嗎?如果還想學到更多技能或想了解更多相關內容,歡迎關注億速云行業資訊頻道,感謝各位的閱讀!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。