在团队里面现在大多数开发者都喜欢用mybatis,因为mybatis 基于sql 基本上看下sql 怎么写就能写出来,算是比较容易上手。因此就萌生了这个spring boot+mybatis的框架构建。(其实笔者更喜欢觉得jpa 更加简洁容易上手 我认为jpa + idea + spring loader 才是开发最快的= = !笔者不喜欢用eclipse 觉得搞terminal有点麻烦,下次写上jpa和spring boot 的完成配置过程和使用方法)
mybatis有很多优点。
- 易于上手和掌握。
- sql写在xml里,便于统一管理和优化。
- 解除sql与程序代码的耦合。
- 提供映射标签,支持对象与数据库的orm字段关系映射
- 提供对象关系映射标签,支持对象关系组建维护
- 提供xml标签,支持编写动态sql。
缺点:笔者自己总结了下(建议使用注解和sql 构建器来写mybatis ,如果使用xml 就会有一些麻烦事了。)
- 其实在开发过程中还是有一些不方便的地方以下列成几种。大多数人习惯于xml 形式。spring loader 不支持热部署xml 的。如果写入sql 构建器。就是通过java 代码来构建sql 又很多人不是特别了解。所以,你改一次就要重启。就有点麻烦了。(笔者最不喜欢就是干浪费时间的事了。)
- 就是mybatis 每次写一个实体的查询语句。就要建立一个mapper 和xml 进行映射。这样Mapper越来越多和xml 越来越多。感觉不好管理,= = !。
下面进入正文。就是spring boot 配置mybatis 了。
- 配置datasource 到ioc 容器里面 (这里包括application.propertits 的加载,各位刚入门的童鞋可以参照参照)。
- 配置@MapperScan('package name') 配置mapper 扫描路径。这个按照我的理解就是为mapper 产生bean 放进ioc 容器内。
@Configuration
@MapperScan("com.aoshi.dao")
public class MyBatisConfig {
private static final Logger logger = LoggerFactory.getLogger(MyBatisConfig.class); @Autowired private JdbcConfig jdbcConfig;
@Bean
public DataSource createDataSource() throws SQLException {
return DataSourceBuilder.create(Thread.currentThread().getContextClassLoader())
.driverClassName(jdbcConfig.getDriverClass())
.url(jdbcConfig.url)
.username(jdbcConfig.userName)
.password(jdbcConfig.password).build();
}
@PropertySource(value = "application-dev.properties")
@Component
static class JdbcConfig {
/** * 数据库用户名 */
@Value("${spring.datasource.username}")
private String userName;
/** * 驱动名称 */
@Value("${spring.datasource.driverClassName}")
private String driverClass;
/** * 数据库连接url */
@Value("${spring.datasource.url}")
private String url;
/** * 数据库密码 */
@Value("${spring.datasource.password}")
private String password;
public String getUserName() { return userName; }
public void setUserName(String userName) { this.userName = userName; }
public String getDriverClass() { return driverClass; }
public void setDriverClass(String driverClass) { this.driverClass = driverClass; }
public String getUrl() { return url; }
public void setUrl(String url) { this.url = url; }
public String getPassword() { return password; }
public void setPassword(String password) { this.password = password; } }}
3 . 配置mybatis-config 路径,xml mapper 路径, 和typeAlias 路径(对应类名小写的),根据mybatis 官网就是构建SqlSessionFactoryBean。
@Configuration
public class SessionFactoryConfig {
/** * mybatis 配置路径 */
private static String MYBATIS_CONFIG = "mybatis-config.xml";
/** * mybatis mapper resource 路径 */
private static String MAPPER_PATH = "/mapper/**.xml";
@Autowired
private DataSource dataSource;
private String typeAliasPackage = "com.aoshi.domain";
/**
*创建sqlSessionFactoryBean 实例
* 并且设置configtion 如驼峰命名.等等
* 设置mapper 映射路径
* 设置datasource数据源
* @return
*/
@Bean
public SqlSessionFactoryBean createSqlSessionFactoryBean() throws IOException {
SqlSessionFactoryBean sqlSessionFactoryBean = new SqlSessionFactoryBean();
/** 设置mybatis configuration 扫描路径 */
sqlSessionFactoryBean.setConfigLocation(new ClassPathResource(MYBATIS_CONFIG));
/** 添加mapper 扫描路径 */
PathMatchingResourcePatternResolver pathMatchingResourcePatternResolver = new PathMatchingResourcePatternResolver();
String packageSearchPath = ResourcePatternResolver.CLASSPATH_ALL_URL_PREFIX + MAPPER_PATH;
sqlSessionFactoryBean.setMapperLocations(pathMatchingResourcePatternResolver.getResources(packageSearchPath));
/** 设置datasource */
sqlSessionFactoryBean.setDataSource(dataSource);
/** 设置typeAlias 包扫描路径 */
sqlSessionFactoryBean.setTypeAliasesPackage(typeAliasPackage); return sqlSessionFactoryBean; }}
4 . 最后贴出mybatis-config.xml 的配置(小伙伴记得配置上驼峰命名转换否则无法驼峰命名窝)。
<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE configuration PUBLIC "-//mybatis.org//DTD Config 3.0//EN" "http://mybatis.org/dtd/mybatis-3-config.dtd">
<configuration>
<!-- 全局参数 -->
<settings>
<!-- 使全局的映射器启用或禁用缓存。 -->
<setting name="cacheEnabled" value="true"/>
<!-- 全局启用或禁用延迟加载。当禁用时,所有关联对象都会即时加载。 -->
<setting name="lazyLoadingEnabled" value="true"/>
<!-- 当启用时,有延迟加载属性的对象在被调用时将会完全加载任意属性。否则,每种属性将会按需要加载。 -->
<setting name="aggressiveLazyLoading" value="true"/>
<!-- 是否允许单条sql 返回多个数据集 (取决于驱动的兼容性) default:true -->
<setting name="multipleResultSetsEnabled" value="true"/>
<!-- 是否可以使用列的别名 (取决于驱动的兼容性) default:true -->
<setting name="useColumnLabel" value="true"/>
<!-- 允许JDBC 生成主键。需要驱动器支持。如果设为了true,这个设置将强制使用被生成的主键,有一些驱动器不兼容不过仍然可以执行。 default:false -->
<setting name="useGeneratedKeys" value="true"/>
<!-- 指定 MyBatis 如何自动映射 数据基表的列 NONE:不隐射 PARTIAL:部分 FULL:全部 -->
<setting name="autoMappingBehavior" value="PARTIAL"/>
<!-- 这是默认的执行类型 (SIMPLE: 简单; REUSE: 执行器可能重复使用prepared statements语句;BATCH: 执行器可以重复执行语句和批量更新) -->
<setting name="defaultExecutorType" value="SIMPLE"/>
<!-- 使用驼峰命名法转换字段。 -->
<setting name="mapUnderscoreToCamelCase" value="true"/>
<!-- 设置本地缓存范围 session:就会有数据的共享 statement:语句范围 (这样就不会有数据的共享 ) defalut:session -->
<setting name="localCacheScope" value="SESSION"/>
<!-- 设置但JDBC类型为空时,某些驱动程序 要指定值,default:OTHER,插入空值时不需要指定类型 -->
<setting name="jdbcTypeForNull" value="NULL"/>
</settings>
<plugins>
<plugin interceptor="com.github.pagehelper.PageHelper">
<property name="dialect" value="mysql"/>
<property name="offsetAsPageNum" value="false"/>
<property name="rowBoundsWithCount" value="false"/>
<property name="pageSizeZero" value="true"/>
<property name="reasonable" value="false"/>
<property name="supportMethodsArguments" value="false"/>
<property name="returnPageInfo" value="none"/>
</plugin>
</plugins>
</configuration>
5 . 笔者给出gradle.build 的配置
dependencies {
compile fileTree(dir: 'lib', includes: ['*.jar'])
compile 'org.springframework.boot:spring-boot-starter-web'
compile 'org.springframework.boot:spring-boot-devtools'
compile 'org.springframework.boot:spring-boot-starter-thymeleaf'//
compile 'org.springframework.boot:spring-boot-starter-security'
compile 'org.springframework.boot:spring-boot-starter-redis'//
compile 'org.springframework.session:spring-session:1.2.0.RELEASE'//
compile "org.springframework.security.oauth:spring-security-oauth2"
compile 'mysql:mysql-connector-java'
/** 配置mybatis 数据源 */
compile("org.mybatis.spring.boot:mybatis-spring-boot-starter:1.1.1")
/** mybatis分页插件 */
compile 'com.github.pagehelper:pagehelper:4.1.6' /** -Swagger */
compile("io.springfox:springfox-swagger-ui:2.2.2")
compile("io.springfox:springfox-swagger2:2.2.2") testCompile 'org.springframework.boot:spring-boot-starter-test'
/** http 请求类*/
compile 'httpcomponents-httpcore:httpcore:4.0-alpha6'
compile 'org.apache.httpcomponents:httpmime:4.5.2'
compile 'commons-httpclient:commons-httpclient:3.1'
compile 'dom4j:dom4j:1.6.1'//
6 . 最后open your terminal;input ,gradle bootRun 享受写代码带来的乐趣吧。
- 最后的最后笔者还是觉得mybatis 是比较繁琐的。比起jpa 跟hibernate 来说的话。= = !可能我还没有深入到mybatis 的底层里面吧。希望各位大神指导。
文/Zeroff(简书作者)
原文链接:http://www.jianshu.com/p/69b9fbb97574
著作权归作者所有,转载请联系作者获得授权,并标注“简书作者”。
原文链接:http://www.jianshu.com/p/69b9fbb97574
著作权归作者所有,转载请联系作者获得授权,并标注“简书作者”。
相关推荐
总的来说,这个项目演示了如何结合Spring Boot的后端能力、MyBatis的数据库操作便利性以及Layui的前端展现力,构建一个基础但功能完整的Web应用。开发者可以通过学习这个demo,理解并掌握这三者之间的协同工作方式,...
基于 Spring Boot + MyBatis Plus + Vue & Element 实现的后台管理系统 + 微信小程序 基于 Spring Boot + MyBatis Plus + Vue & Element 实现的后台管理系统 + 微信小程序 基于 Spring Boot + MyBatis Plus + Vue ...
《基于Spring Boot+MyBatis的CRM客户管理系统详解》 在现代企业中,客户关系管理(Customer Relationship Management,简称CRM)系统是至关重要的工具,它帮助企业有效地管理与客户的交互,提高销售效率,优化客户...
项目描述 学生成绩管理系统,有三...spring boot+spring mvc+mybatis+layui+jquery+thymeleaf http://localhost:8080/Sys/loginView 管理员账号 admin admin 老师登录 2020031920 111111 学生账号登录 20200319 111111
标题中的"全注解 spring boot +spring security + mybatis+druid+thymeleaf+mysql+bootstrap"是一个集成开发环境的配置,涉及到的主要技术有Spring Boot、Spring Security、MyBatis、Druid、Thymeleaf、MySQL以及...
在Spring Boot中,我们可以通过@ConfigurationProperties注解来配置MyBatis的相关属性,如数据源、事务管理器等,并使用@MapperScan扫描Mapper接口,实现SQL的映射。 3. **Layui简介与页面构建** Layui是一款模块...
Spring Boot + MyBatis + Mapper.xml 项目是一个基础但实用的Java Web开发框架组合,它大大简化了传统Spring项目的配置和启动过程。本项目利用Spring Boot的自动配置特性,配合MyBatis作为持久层框架,以及Mapper....
【标题】"Spring Boot + MyBatis + Security 登陆查询数据库验证"是一个初学者友好的实战项目,旨在演示如何在Spring Boot应用中整合MyBatis作为持久层框架,并利用Spring Security进行用户身份验证。这个项目涵盖了...
spring boot+mybatis+spring mvc整合开发超市订单后台管理系统 项目描述 超市订单管理系统 运行环境 jdk8(jdk7)+mysql+Eclipse+maven+tomcat7 项目技术(必填) springboot+spring mvc+mybatis+jquery+jsp ...
毕设项目基于spring boot+mybatis的个人博客(前端+后台管理系统).zip毕设项目基于spring boot+mybatis的个人博客(前端+后台管理系统).zip毕设项目基于spring boot+mybatis的个人博客(前端+后台管理系统).zip...
项目描述 说明: spring security 全注解式的权限管理 动态配置权限,角色和资源,权限控制到...Springboot+Mybatis+ SpringMvc+springsecrity+Redis+bootstrap+jquery 数据库文件 压缩包内 jar包文件 maven搭建
基于 SpringBoot + Spring + SpringMvc + Mybatis + Shiro+ Redis 开发单点登录管理系统 基于 SpringBoot + Spring + SpringMvc + Mybatis + Shiro+ Redis 开发单点登录管理系统 基于 SpringBoot + Spring + ...
Spring Boot+Mybatis图书管理系统;本项目核心技术采用Spring Boot+Mybatis;开发工具idea;数据库MySQL5.6;界面采用了jQuery EasyUI框架;Quartz定时任务。
在本项目中,我们主要探讨如何使用Spring Boot框架与MyBatis持久层框架结合MySQL数据库来构建一个完整的用户登录功能。下面将详细讲解这个过程中的关键知识点。 首先,`Spring Boot`是一个基于Java的框架,它简化了...
在本项目中,"spring boot+thymeleaf+mybatis+mysql" 是一个常见的Web应用开发框架组合,尤其适合初学者快速构建基于Java的Web应用程序。以下将详细阐述这四个关键技术及其整合过程中的关键知识点。 1. Spring Boot...
在本项目"spring boot+mybatis基础demo"中,我们将探讨如何使用Spring Boot与MyBatis框架构建一个基本的应用程序。这个示例演示了如何整合这两个流行的技术来处理数据库操作,其中数据源包括SQL Server和Oracle。...
全注解 spring boot +spring security + mybatis+druid+thymeleaf+jsp+mysql+bootstrap 支持thymeleaf和jsp并存 全注解 spring boot spring security thymeleaf+jsp同时使用 mybatis druid mysql bootstrap 访问 ...
在这个技术栈中,Spring Boot 的自动配置特性使得集成MyBatis变得简单,只需要少量配置就可以完成。此外,Spring Boot 还提供了健康检查、Actuator监控等功能,便于开发者管理和监控应用状态。 总的来说,Spring ...