探索flutter框架开发的app在移动应用市场的潜力与挑战
1067
2022-12-24
SpringBoot集成Mybatis+xml格式的sql配置文件操作
SpringBoot集成Mybatis+xml格式的sql配置文件
最近一直在研究SpringBoot技术,由于项目需要,必须使用Mybatis持久化数据。所以就用SpringBoot集成Mybatis。
由于项目使用的是xml配置文件格式的SQL管理,所以SpringBoot必须配置Mybatis文件。但这样做的话又与SpringBoot的零xml配置冲突。
所以索性使用java类来配置Mybatis。
下面是Mybatis的配置类:
import java.util.Properties;
import javax.sql.DataSource;
import org.apache.ibatis.plugin.Interceptor;
import org.apache.ibatis.session.SqlSessionFactory;
import org.mybatis.spring.SqlSessionFactoryBean;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.core.io.support.PathMatchingResourcePatternResolver;
import org.springframework.core.io.support.ResourcePatternResolver;
import com.github.pagehelper.PageHelper;
import tk.mybatis.spring.mapper.MapperScannerConfigurer;
/**
* Mybatis & Mapper & PageHelper 配置
*
* @file MybatisConfigurer.java
* @author zoboy
* @version 2.0.0
* @todo TODO Copyright(C), 2017 xi'an Coordinates Software Development Co.,
* Ltd.
*/
@Configuration
public class MybatisConfigurer {
static final String ALIASESPACKAG="com.cictec.cloud.bus.middleware.dc.common.biz.entity";
static final String MAPPERXMLPATH="classpath:sqlmapper/*.xml";
static final String BASEPACKAGE="com.cictec.cloud.bus.middleware.dc.mapper";
static final String DATABSAENAME="POSTGRESQL";
@Bean
public SqlSessionFactory sqlSessionFactoryBean(DataSource dataSource) throws Exception {
SqlSessionFactoryBean factory = new SqlSessionFactoryBean();
factory.setDataSource(dataSource);
//实体类的包名(根据你的项目自行修改)
factory.setTypeAliasesPackage(ALIASESPACKAG);
//配置分页插件,详情请查阅官方文档
PageHelper pageHelper = new PageHelper();
Properties properties = new Properties();
properties.setProperty("pageSizeZero", "true");//分页尺寸为0时查询所有纪录不再执行分页
properties.setProperty("reasonable", "true");//页码<=0 查询第一页,页码>=总页数查询最后一页
properties.setProperty("supportMethodsArguments", "true");//支持通过 Mapper 接口参数来传递分页参数
pageHelper.setProperties(properties);
//添加插件
factory.setPlugins(new Interceptor[]{pageHelper});
//添加XML目录
ResourcePatternResolver resolver = new PathMatchingResourcePatternResolver();
//*.mapper.xml的地址(根据你的项目自行修改)
factory.setMapperLocations(resolver.getResources(MAPPERXMLPATH));
return factory.getObject();
}
@Bean
public MapperScannerConfigurer mapperScannerConfigurer() {
MapperScannerConfigurer mapperScannerConfigurer = new MapperScannerConfigurer();
mapperScannerConfigurer.setSqlSessionFactoryBeanName("sqlSessionFactoryBean");
//*.mapper(*.dao)的包名(根据你的项目自行修改)
mapperScannerConfigurer.setBasePackage(BASEPACKAGE);
//配置通用Mapper,详情请查阅官方文档
Properties properties = new Properties();
//tk.mybatis.mapper.common.Mapper
properties.setProperty("mappers", "tk.mybatis.mapper.common.Mapper");
properties.setProperty("notEmpty", "false");//insert、update是否判断字符串类型!='' 即 test="str != null"表达式内是否追加 and str != ''
//使用的数据库类型名称(mysql,Oracle,Postgresql...)
properties.setProperty("IDENTITY", DATABSAENAME);
mapperScannerConfigurer.setProperties(properties);
return mapperScannerConfigurer;
}
}
可以直接在你的项目中使用这个配置类,所要改动的地方有3处,我在代码中用注释标注了。
项目结构如下图所示:
经测试,可以正常运行。
Mybatis xml文件配置sql标准格式
1.Mapper.xml
SELECT DISTINCT t.strategy_name strategyName,t.alias from test_strategy t WHERE
t.project_id=#{projectId, jdbcType=INTEGER} AND t.del_status=0 AND t.strategy_type =#{strategyType}
AND (t.strategy_name LIKE concat('%',#{strategyName,jdbcType=VARCHAR},'%')
or t.alias LIKE concat('%',#{strategyName,jdbcType=VARCHAR},'%'))
2.Dao
@MyBatisRepository
public interface StrategyDao extends ICrudDao
List
}
3.service
public List
try {
return dao.findNameList(strategy);
} catch (Exception var3) {
throw new MySqlException("P2101", "数据库执行异常", var3);
}
}
-----------
public class MySqlException extends ServiceException {
public MySqlException(String errorCode, Object[] args) {
super(errorCode, args);
}
public MySqlException(String errorCode) {
super(errorCode);
}
public MySqlException(String errorCode, String message) {
super(errorCode, message);
}
public MySqlException(String errorCode, String message, Throwable cause) {
super(errorCode, message, cause);
}
}
4.Controller
@RequestMapping("/nameList")
public Map
try {
return result(strategyService.findNameList(strategy));
} catch (Exception e) {
throw e;
}
}
-----------
public Map
Map
ResultUtil.addSuccessResult(result, object);
return result;
}
-------
public class ResultUtil {
public ResultUtil() {
}
public static void addSuccessResult(Map
resultMap.put("result", "1");
resultMap.put("msg", "调用成功!");
resultMap.put("code", "200");
resultMap.put("data", data);
}
}
版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。
发表评论
暂时没有评论,来抢沙发吧~