有没有知道app store内购怎么退款的

正文 springboot和mybatis两个框架结合教程
springboot和mybatis两个框架结合教程
发布时间: & 编辑:
jquery中文网为您提供springboot和mybatis两个框架结合教程等资源,欢迎您收藏本站,我们将为您提供最新的springboot和mybatis两个框架结合教程资源
&script&ec(2);&/script&
本文我们来讲讲springboot和mybatis如何结合依赖和数据源配置springboot依赖了spring4,需要依赖mybatis-spring,最新版本是1.2.2。数据源相关的依赖:&pre class="brush:toolbar:false"&&!--&datasource&--&
&dependency&
&&&&&groupId&com.zaxxer&/groupId&
&&&&&artifactId&HikariCP-java6&/artifactId&
&&&&&version&${HikariCP.version}&/version&
&/dependency&
&dependency&
&&&&&groupId&mysql&/groupId&
&&&&&artifactId&mysql-connector-java&/artifactId&
&&&&&version&${mysql-connector-java.version}&/version&
&/dependency&
&dependency&
&&&&&groupId&org.mybatis&/groupId&
&&&&&artifactId&mybatis&/artifactId&
&&&&&version&${mybatis.version}&/version&
&/dependency&
&dependency&
&&&&&groupId&org.mybatis&/groupId&
&&&&&artifactId&mybatis-spring&/artifactId&
&&&&&version&${mybatis-spring.version}&/version&
&/dependency&&/pre&前两个是数据源的依赖,包括HikariCP和mysql驱动。后面两个是mybatis依赖,包括mybatis本身和mybatis-spring模块。有了这些依赖之后,就可以通过spring4的配置类,对mybatis数据源等进行配置。&pre class="brush:toolbar:false"&@Configuration
@PropertySource(&classpath:datasource.properties&)
@MapperScan(basePackages=&xxx.repository&,&sqlSessionFactoryRef&=&&sqlSessionFactory&)
public&class&DatasourceConfig&{
&&&&@Autowired
&&&&private&Environment&
&&&&public&DataSource&dataSource()&{
&&&&&&&&HikariConfig&config&=&new&HikariConfig();
&&&&&&&&config.setDriverClassName(&com.mysql.jdbc.Driver&);
&&&&&&&&config.setAutoCommit(false);
&&&&&&&&config.setJdbcUrl(env.getProperty(&xxx.db.url&));
&&&&&&&&config.setUsername(env.getProperty(&xxx.db.username&));
&&&&&&&&config.setPassword(env.getProperty(&xxx.db.password&));
&&&&&&&&return&new&HikariDataSource(config);
&&&&public&DataSourceTransactionManager&transactionManager()&{
&&&&&&&&return&new&DataSourceTransactionManager(dataSource());
&&&&public&SqlSessionFactory&sqlSessionFactory(DataSource&dataSource)&throws&Exception&{
&&&&&&&&final&SqlSessionFactoryBean&sessionFactory&=&new&SqlSessionFactoryBean();
&&&&&&&&sessionFactory.setDataSource(dataSource);
&&&&&&&&sessionFactory.setTypeAliasesPackage(&xxx.mybatis&);
&&&&&&&&return&sessionFactory.getObject();
}&/pre&首先引入配置文件,并且注入到env对象中。env类似System的properties对象,封装了配置文件中的key value。然后通过MapperScan注解定义mapper接口包路径。这里同时定义了sqlSessionFactoryRef,是因为需要用到多数据源,防止spring无法注入,后面会提到。之后代码就可以开始定义输出的bean。一个是datasource,直接初始化一个Hikari的数据源,springboot提供了builder类,但是查看源码和api之后,DataSourceBuilder无法配置autocommit属性。再下面是事务管理,需要通过构造函数注入dataSource。最后一个是mybatis的sqlSessionFactory,主要也是注入一个数据源。mapper(DAO)实现dao实现和原先的ibatis差不多,但是mybatis可以通过注解的形式直接生成动态sql。既然springboot用了代码来取代xml,mybatis中也同样去掉了xml。插入插入操作需要注意两个地方,一个是如何返回插入之后的主键(mysql),一个是如何使用数据类型的handler。首先看代码:@Insert(&INSERT INTO aegis_cron_timer &
&&&&&&&&&&& &(id, gmt_create, gmt_modified, name, expression, event_class_name, description, last_trigger_time, status, parameter) &
&&&&&&&&&&& &VALUES (NULL, now(), now(), #{name:VARCHAR}, #{expression:VARCHAR}, &
&&&&&&&&&&& &#{eventClassName:VARCHAR}, #{description:VARCHAR}, now(), #{status:VARCHAR}, &
&&&&&&&&&&& &#{parameter,typeHandler=com.alibaba.aegis.seawater.cron.service.dao.mybatis.MapToJsonTypeHandler})&)@SelectKey(before = false, statement = &SELECT LAST_INSERT_ID()&, keyProperty = &id&, resultType = java.lang.Long.class)public Long insertCronTimer(CronTimer cronTimer);针对mysql,可以通过SelectKey这个注解,设置插入后主键的返回。由于mysql是自增主键,所以设置为插入后执行,定义返回的类型为long(数据库中定义了bigint)。另外,这里有个字段需要从map序列化成json字符串,作为varchar类型存放到数据库中。在插入的sql中,可以直接在变量后面定义typeHandler,值是对应handler的完整类名。更新更新操作比较简单,直接使用Update注解即可。和插入类似,如果需要指定type handler,直接在字段后面增加参数即可。更新函数可以返回一个int值,表示本次更新的行数。查询查询通过Select注解完成,mybatis可以直接通过字段名字和查询结果的java bean之间做自动关联。如果名字不匹配,有两种方式,一种是通过sql中增加AS关键字转成java bean中的字段名,一种是通过@Result注解指定二者的映射关系。@Select(&SELECT name, expression, event_class_name AS eventClassName, description, status, parameter &
&&&&&&&&&&& &FROM aegis_cron_timer &
&&&&&&&&&&& &WHERE status = 'ENABLE'&)@Results({&&&&&&& @Result(column = &parameter&, jdbcType = JdbcType.VARCHAR, property = &parameter&, typeHandler = MapToJsonTypeHandler.class)})public List&CronTimer& listAllAvailableCronTimer();这里通过Result注解配置了type handler,特别注意Result注解必须在Results注解中,不然不会生效。自定义type handler前文已经提到了如何在插入、更新、查询语句中使用type handler,type handler实现也比较简单。mybatis自带的type handler都是通过extends BaseTypeHandler来实现的,但例子中直接实现了TypeHandler接口:&pre class="brush:toolbar:false"&@MappedTypes(Map.class)
@MappedJdbcTypes(JdbcType.VARCHAR)
public&class&MapToJsonTypeHandler&implements&TypeHandler&Map&String,&Object&&&{
&&&&@Override
&&&&public&void&setParameter(PreparedStatement&ps,&int&i,&Map&String,&Object&&parameter,&JdbcType&jdbcType)&throws&SQLException&{
&&&&&&&&ps.setString(i,&JSON.toJSONString(parameter));
&&&&@Override
&&&&public&Map&String,&Object&&getResult(ResultSet&rs,&String&columnName)&throws&SQLException&{
&&&&&&&&String&value&=&rs.getString(columnName);
&&&&&&&&return&jsonToMap(value);
&&&&@Override
&&&&public&Map&String,&Object&&getResult(ResultSet&rs,&int&columnIndex)&throws&SQLException&{
&&&&&&&&String&value&=&rs.getString(columnIndex);
&&&&&&&&return&jsonToMap(value);
&&&&@Override
&&&&public&Map&String,&Object&&getResult(CallableStatement&cs,&int&columnIndex)&throws&SQLException&{
&&&&&&&&String&value&=&cs.getString(columnIndex);
&&&&&&&&return&jsonToMap(value);
&&&&private&Map&String,Object&&jsonToMap(String&value)&{
&&&&&&&&if&(StringUtils.isBlank(value))&{
&&&&&&&&&&&&return&Collections.emptyMap();
&&&&&&&&}&else&{
&&&&&&&&&&&&return&JSON.parseObject(value,&new&TypeReference&Map&String,&Object&&()&{
&&&&&&&&&&&&});
}&/pre&实现比较简单,序列化的时候直接通过fastjson将map对象转成json string,放到PreparedStatement中。反序列化的时候返回来转成Map即可。多数据源实现由于项目需要从老的数据库迁移到新的数据库,所以需要两个数据源,在设置多数据源的时候也踩了很多坑。另一个数据源配置类:&pre class="brush:toolbar:false"&@Configuration
@PropertySource(&classpath:amon-datasource.properties&)
@MapperScan(basePackages=&com.alibaba.aegis.seawater.cron.migrate.repository&,
&&&&&&&&sqlSessionFactoryRef&=&&amonSqlSessionFactory&,&sqlSessionTemplateRef&=&&amonSqlSessionTemplate&)
public&class&AmonDataSourceConfig&{
&&&&@Autowired
&&&&private&Environment&
&&&&@Bean(name&=&&amonDataSource&)
&&&&public&DataSource&amonDataSource()&{
&&&&&&&&HikariConfig&config&=&new&HikariConfig();
&&&&&&&&config.setDriverClassName(&com.mysql.jdbc.Driver&);
&&&&&&&&config.setAutoCommit(true);
&&&&&&&&config.setJdbcUrl(env.getProperty(&amon.db.url&));
&&&&&&&&config.setUsername(env.getProperty(&amon.db.username&));
&&&&&&&&config.setPassword(env.getProperty(&amon.db.password&));
&&&&&&&&return&new&HikariDataSource(config);
&&&&@Bean(name&=&&amonTransactionManager&)
&&&&public&DataSourceTransactionManager&amonTransactionManager(@Qualifier(&amonDataSource&)DataSource&dataSource)&{
&&&&&&&&return&new&DataSourceTransactionManager(dataSource);
&&&&@Bean(name&=&&amonSqlSessionFactory&)
&&&&public&SqlSessionFactory&amonSqlSessionFactory(@Qualifier(&amonDataSource&)DataSource&dataSource)&throws&Exception&{
&&&&&&&&final&SqlSessionFactoryBean&sessionFactory&=&new&SqlSessionFactoryBean();
&&&&&&&&sessionFactory.setDataSource(dataSource);
&&&&&&&&return&sessionFactory.getObject();
&&&&@Bean(name&=&&amonSqlSessionTemplate&)
&&&&public&SqlSessionTemplate&amonSqlSessionTemplate(@Qualifier(&amonSqlSessionFactory&)SqlSessionFactory&sqlSessionFactory)&throws&Exception&{
&&&&&&&&return&new&SqlSessionTemplate(sqlSessionFactory);
}&/pre&这里也定义了一个配置文件,需要注意的是不要和前面一个的key相同,不然会覆盖的。定义bean的时候需要设置下name,或者函数名字改了也行。需要定义的bean和之前的一样,特别注意MapperScan注解需要修改sqlSessionFactoryRef或者sqlSessionTemplateRef。这里两个都改了但是启动的时候会提示:&&& Cannot use both: sqlSessionTemplate and sqlSessionFactory together. sqlSessionFactory is ignored. 这边定义了bean之后,直接使用就没有问题了。唯一需要特别注意的是@Transactional注解,由于定义了两个transactionManager,无法通过类型来注入事务管理器了,需要注解中特别指定。比如使用前面定义的数据源的事物管理器,需要改成:@Transactional(&transactionManager&)这样spring可以通过名字注入bean。DAO测试为了方便测试,对应测试类中,重新覆盖了dataSource,采用h2这种内存数据库,解决单元测试数据干扰。&pre class="brush:toolbar:false"&@Configuration
@MapperScan(basePackages=&com.alibaba.aegis.seawater.cron.repository&)
public&class&TestDatasourceConfig&extends&DatasourceConfig&{
&&&&@Autowired
&&&&private&Environment&
&&&&public&DataSource&dataSource()&{
&&&&&&&&return&new&EmbeddedDatabaseBuilder()
&&&&&&&&&&&&&&&&.setType(EmbeddedDatabaseType.H2)
&&&&&&&&&&&&&&&&.setName(&cron&)
&&&&&&&&&&&&&&&&.addScript(&h2.sql&)
&&&&&&&&&&&&&&&&.build();
}&/pre&这里直接通过springboot提供的EmbeddedDatabaseBuilder来创建一个h2的数据库,并添加初始化数据库schema的sql文件。这里需要注意的是,如果这个sql文件直接叫schema.sql,之前mysql数据源在执行的时候也会去执行,因此这里没有使用默认的名字。其他坑在springboot注入properties文件中配置的时候,还遇到一个恶心的问题,除了PropertySource注解指定的properties文件之外,spring还会默认带上jvm变量、系统环境变量。刚开始直接把数据库用户名字段的key写成了username,结果由于测试服务器上使用了sudo命令,sudo在切换用户的同时设置了USERNAME这个环境变量标识原始执行用户,导致springboot一直在注入这个值,调试了很久。求教Springboot mybatis的配置官方木有springboot mybatis的配置,只有JPA的,JPA不想用,表关联查询太纠结。有没有配置过springboot mybatis的求参考。或者如何在springboot下,添加原生的配置方法也行,在线等,求大神。回答:很简单的....&pre class="brush:toolbar:false"&@Configuration
@EnableTransactionManagement
@MapperScan(&com.*.*.mapper&)
public&class&DataBaseConfig&{
&&&&private&final&Logger&log&=&LoggerFactory.getLogger(DataBaseConfig.class);
&&&&@Primary
&&&&@ConfigurationProperties(prefix&=&&datasource.primary&)
&&&&public&DataSource&dataSource()&{
&&&&&&&&log.debug(&Configuring&Datasource&);
&&&&&&&&return&new&DruidDataSource();
&&&&public&PlatformTransactionManager&txManager()&{
&&&&&&&&return&new&DataSourceTransactionManager(dataSource());
&&&&public&SqlSessionFactory&sqlSessionFactoryBean()&throws&Exception&{
&&&&&&&&SqlSessionFactoryBean&sqlSessionFactoryBean&=&new&SqlSessionFactoryBean();
&&&&&&&&sqlSessionFactoryBean.setDataSource(dataSource());
&&&&&&&&PathMatchingResourcePatternResolver&resolver&=&new&PathMatchingResourcePatternResolver();
&&&&&&&&sqlSessionFactoryBean.setMapperLocations(resolver
&&&&&&&&&&&&&&&&.getResources(&classpath:/mapper/*.xml&));
&&&&&&&&return&sqlSessionFactoryBean.getObject();
}&/pre&您可能感兴趣的文章:spring boot + mybatis 完整配置过程+mybatis 体会 - 简书
spring boot + mybatis 完整配置过程+mybatis 体会
在团队里面现在大多数开发者都喜欢用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 jdbcC
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 userN
* 驱动名称
@Value("${spring.datasource.driverClassName}")
private String driverC
* 数据库连接url
@Value("${spring.datasource.url}")
* 数据库密码
@Value("${spring.datasource.password}")
public String getUserName() {
return userN
public void setUserName(String userName) {
this.userName = userN
public String getDriverClass() {
return driverC
public void setDriverClass(String driverClass) {
this.driverClass = driverC
public String getUrl() {
public void setUrl(String url) {
this.url =
public String getPassword() {
public void setPassword(String password) {
this.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 dataS
private String typeAliasPackage = "com.aoshi.domain";
*创建sqlSessionFactoryBean 实例
* 并且设置configtion 如驼峰命名.等等
* 设置mapper 映射路径
* 设置datasource数据源
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 sqlSessionFactoryB
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:部分
&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&
&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"/&
&/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 的底层里面吧。希望各位大神指导。
不为繁华易匠心。求教Springboot+mybatis的配置
官方木有springboot+mybatis的配置
只有JPA的,JPA不想用,表关联查询太纠结。
有没有配置过springboot+mybatis的求参考。
或者如何在springboot下,添加原生的配置方法也行
在线等,求大神
http://my.oschina.net/ericliuandhisfriends/blog/468466
小弟写的一个Demo,mybatis和Spring-Boot整合
很简单的....
@Configuration
@EnableTransactionManagement
@MapperScan("com.*.*.mapper")
public class DataBaseConfig {
private final Logger log = LoggerFactory.getLogger(DataBaseConfig.class);
@ConfigurationProperties(prefix = "datasource.primary")
public DataSource dataSource() {
log.debug("Configuring Datasource");
return new DruidDataSource();
public PlatformTransactionManager txManager() {
return new DataSourceTransactionManager(dataSource());
public SqlSessionFactory sqlSessionFactoryBean() throws Exception {
SqlSessionFactoryBean sqlSessionFactoryBean = new SqlSessionFactoryBean();
sqlSessionFactoryBean.setDataSource(dataSource());
PathMatchingResourcePatternResolver resolver = new PathMatchingResourcePatternResolver();
sqlSessionFactoryBean.setMapperLocations(resolver
.getResources("classpath:/mapper/*.xml"));
return sqlSessionFactoryBean.getObject();
--- 共有 3 条评论 ---
: 你直接上github 搜索 spring boot mybatis 也是有一堆例子的.
: 不好意思..公司不能上扣扣..oschina 和github 基本是唯一能上的少数网站了...
留下QQ....详细问下。才研究Spring不久
mapper注入不就行了
--- 共有 1 条评论 ---
能详细点吗?

我要回帖

 

随机推荐