springboot + mybatis 自定义数据库的数据源
1.pom依赖
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-jdbc</artifactId>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>5.1.46</version>
</dependency>
<dependency>
<groupId>org.mybatis.spring.boot</groupId>
<artifactId>mybatis-spring-boot-starter</artifactId>
<version>1.3.2</version>
</dependency>
2.编写Mapper
@Mapper
public interface TestMapper {
public JSONObject getTest(@Param("sql") String sql);
}
3. 编写xml
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="xx.xx.areatest.ttt.conf.TestMapper">
<select id="getTest">
#{sql}
</select>
</mapper>
4. 数据源的自定义
import xx.xx.areatest.ttt.conf.TestMapper;
import com.zaxxer.hikari.HikariDataSource;
import org.apache.ibatis.session.SqlSessionFactory;
import org.mybatis.spring.SqlSessionFactoryBean;
import org.mybatis.spring.SqlSessionTemplate;
import org.springframework.boot.jdbc.DataSourceBuilder;
import org.springframework.core.io.support.PathMatchingResourcePatternResolver;
import org.springframework.web.bind.annotation.CrossOrigin;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
@RestController
@CrossOrigin
@RequestMapping("/db")
public class DbTestFacade {
@GetMapping("executeSql")
public String executeSql(/*String url , String port, String dbName ,String username, String password, String sql*/) throws Exception {
String url = "localhost";
String port = "3306";
String dbName = "dn1";
String username = "root";
String password = "root";
String sql = "select * from test1";
HikariDataSource ds0 = DataSourceBuilder.create()
.type(HikariDataSource.class)
.driverClassName("com.mysql.jdbc.Driver")
.url("jdbc:mysql://"+url+":"+port+"/"+dbName+"?useUnicode=true&useSSL=false&characterEncoding=utf-8&zeroDateTimeBehavior=convertToNull&autoReconnect=true&failOverReadOnly=false&allowMultiQueries=true")
.username(username)
.password(password)
.build();
ds0.setMinimumIdle(2);
ds0.setMaximumPoolSize(2);
SqlSessionFactoryBean bean = new SqlSessionFactoryBean();
bean.setDataSource(ds0);
bean.setMapperLocations(new PathMatchingResourcePatternResolver().getResources("classpath*:mapper/*.xml"));
SqlSessionFactory sqlSessionFactory = bean.getObject();
SqlSessionTemplate sqlSessionTemplate = new SqlSessionTemplate(sqlSessionFactory);
TestMapper mapper = sqlSessionTemplate.getMapper(TestMapper.class);
System.out.println(mapper.getTest(sql));
return "ok";
}
}

浙公网安备 33010602011771号