Spring boot mybatis整合
spring boot这个框架,可以不用配置任何xml,运行web应用程序。里面内嵌了web服务器,tomcat或jetty
最近准备做一个远程部署redis的程序,其中有个模块需要web和数据库,这里选择了spring boot和mybatis
预期效果:
1. 能够通过/index访问到index.jsp
2. 通过spring ioc注入dao对象,通过mybatis操作数据库
解决方案
1. spring mvc实现访问index.jsp
2. 创建instance_config表
3. 写好InstanceConfig实体类
4. 写好instanceConfigDao接口
5. 写好instanceConfigMapper文件
6. 配置好相关的配置文件
7. 运行程序
instance_config.sql
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
CREATE TABLE `instance_config` ( `id` int(11) NOT NULL AUTO_INCREMENT, `config_key` varchar(128) NOT NULL , `config_value` varchar(512) NOT NULL , `info` varchar(512) NOT NULL , `update_time` datetime NOT NULL , `type` mediumint(9) NOT NULL , `status` tinyint(4) NOT NULL , PRIMARY KEY (`id`), UNIQUE KEY `config_key_type` (`config_key`,`type`) ) ENGINE=InnoDB AUTO_INCREMENT=78 DEFAULT CHARSET=utf8;
InstanceConfig实体类
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
import java.util.Date; /** * Created by gxf on 2017/7/15. */ public class InstanceConfig { private long id; private String configKey; private String configValue; private String info; private Date updateTime; private int type; private int status; @Override public String toString() { return "InstanceConfig{" + "id=" + id + ", configKey='" + configKey + '\'' + ", configValue='" + configValue + '\'' + ", info='" + info + '\'' + ", updateTime=" + updateTime + ", type=" + type + ", status=" + status + '}'; } public long getId() { return id; } public void setId(long id) { this.id = id; } public String getConfigKey() { return configKey; } public void setConfigKey(String configKey) { this.configKey = configKey; } public String getConfigValue() { return configValue; } public void setConfigValue(String configValue) { this.configValue = configValue; } public String getInfo() { return info; } public void setInfo(String info) { this.info = info; } public Date getUpdateTime() { return updateTime; } public void setUpdateTime(Date updateTime) { this.updateTime = updateTime; } public int getType() { return type; } public void setType(int type) { this.type = type; } public int getStatus() { return status; } public void setStatus(int status) { this.status = status; } }
instanceDao接口
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
import com.gxf.entity.InstanceConfig; import org.apache.ibatis.annotations.Mapper; import java.util.List; /** * Created by gxf on 2017/7/16. */ @Mapper public interface InstanceConfigDao { /** * 查询所有记录 * */ // @Select("select * from instance_config") List<InstanceConfig> queryAll(); }
mapper文件
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
<?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="com.gxf.dao.InstanceConfigDao"> <!--<resultMap id="instanceConfigMap" type="com.gxf.entity.InstanceConfig">--> <!--<id property="id" column="id"/>--> <!--<result property="configKey" column="config_key"/>--> <!--<result property="configValue" column="config_value"/>--> <!--<result property="info" column="info"/>--> <!--<result property="updateTime" column="update_time"/>--> <!--<result property="type" column="type"/>--> <!--<result property="status" column="status"/>--> <!--</resultMap>--> <select id="queryAll" resultType="com.gxf.entity.InstanceConfig"> select * from instance_config </select> </mapper>
application.properties
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
# 配置jsp文件的位置,默认位置为:src/main/webapp
spring.mvc.view.prefix:/WEB-INF/jsp/
# 配置jsp文件的后缀
spring.mvc.view.suffix:.jsp
#mybatis
spring.datasource.url=jdbc:mysql://localhost:3306/db_cloud_redis?serverTimezone=UTC
spring.datasource.username=root
spring.datasource.password=
spring.datasource.driver-class-name=com.mysql.jdbc.Driver
#mybatis.mapperLocations=classpath:mapper/*.xml
mybatis.config-location=classpath:mybatis-config
mybatis-config
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
<?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="mapUnderscoreToCamelCase" value="true"/> </settings> <environments default="development"> <environment id="development"> <transactionManager type="JDBC"/> <dataSource type="POOLED"> <property name="driver" value="com.mysql.jdbc.Driver"/> <property name="url" value="jdbc:mysql://localhost:3306/db_cloud_redis?serverTimezone=UTC"/> <property name="username" value="root"/> <property name="password" value=""/> </dataSource> </environment> </environments> <mappers> <mapper resource="mapper/InstanceConfigDao.xml"/> </mappers> </configuration>
controller
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
import com.gxf.dao.InstanceConfigDao; import com.gxf.entity.InstanceConfig; import org.mybatis.spring.annotation.MapperScan; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.*; import org.springframework.boot.autoconfigure.*; import org.springframework.stereotype.*; import org.springframework.web.bind.annotation.*; import java.util.List; @Controller @SpringBootApplication @MapperScan("com.gxf.dao") public class SampleController { @Autowired private InstanceConfigDao instanceConfigDao; @RequestMapping(value = "/index", method = RequestMethod.GET) public String index() { List<InstanceConfig> listOfConfig = instanceConfigDao.queryAll(); for(int i = 0; i < listOfConfig.size(); i++){ System.out.println(listOfConfig.get(i).getConfigKey()); } return "index"; } public static void main(String[] args) throws Exception { SpringApplication.run(SampleController.class, args); } }
maven依赖
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
<parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>1.5.4.RELEASE</version> </parent> <modelVersion>4.0.0</modelVersion> <artifactId>cloud_web</artifactId> <dependencies> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-tomcat</artifactId> <scope>provided</scope> </dependency> <dependency> <groupId>org.apache.tomcat.embed</groupId> <artifactId>tomcat-embed-jasper</artifactId> <scope>provided</scope> </dependency> <!-- servlet 依赖 --> <dependency> <groupId>javax.servlet</groupId> <artifactId>javax.servlet-api</artifactId> <scope>provided</scope> </dependency> <!-- 添加 JSTL 支持 --> <dependency> <groupId>javax.servlet</groupId> <artifactId>jstl</artifactId> </dependency> <dependency> <groupId>org.mybatis</groupId> <artifactId>mybatis</artifactId> <version>3.4.1</version> </dependency> <!--mybatis--> <dependency> <groupId>org.mybatis.spring.boot</groupId> <artifactId>mybatis-spring-boot-starter</artifactId> <version>1.1.1</version> </dependency> <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> <version>6.0.6</version> </dependency> <dependency> <groupId>c3p0</groupId> <artifactId>c3p0</artifactId> <version>0.9.1.2</version> </dependency> </dependencies>
这里spring和mybatis都可以选择,使用xml或者注解进行配置。配置主要目的:
1. spring能够把bean注入到容器中
2. 能够初始化datasource连接数据库
3.能够找对应的dao和mapper配置
Please call me JiangYouDang!