1 新建maven项目
2 在pom.xml中加入spring boot 所需要的配置,创建spring boot的application.java执行文件
2.1 在pom.xml中引入spring-boot-start-parent,这是必须的
2.2需要在pom.xml中引入spring-boot-starter-web依赖,依赖放在<dependencies>中,新建<dependency>,spring官方解释spring-boot-start-web包含了spring webmvc和tomcat等web开发的特性。这样就可以不用配置web.xml文件了
2.3如果我们要直接Main启动spring,那么以下plugin必须要添加,否则是无法启动的。如果使用maven的spring-boot:run的话就不需要此配置。
到这里spring boot的pom.xml文件,基本配置完成
3为了测试环境,设计一个启动类进行测试
如果发现SpringBootApplication这个注解无法识别或者导入,可能是版本不匹配的问题,看看导入的maven包里面的spring-boot-autoConfigure的版本与自定义的版本一不一致,如果不一致,就到本地依赖包里面将repository\org\springframework\boot\spring-boot-autoconfigure文件夹删除,然后update项目即可,重启eclipse
至此,一个spring boot项目已经搭建完毕,接下来整合Mybatis项目;
4整合mybatis项目
4.1在pom.xml文件中加入mybatis需要的依赖
如果没有写mysql的版本,可能会默认下载最新版,这样的话mysql的驱动写法可能发生改变,需要注意一下。
4.2配置application.properties文件
4.3 mybatis generator的相关配置文件
Pom.xml的添加:
在resources/generator/创建一个generatorConfig.xml文件
|
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE generatorConfiguration PUBLIC "-//mybatis.org//DTD MyBatis Generator Configuration 1.0//EN" "http://mybatis.org/dtd/mybatis-generator-config_1_0.dtd"> <generatorConfiguration> <!-- 引入配置文件 --> <properties resource="application.properties"/> <!-- 一个数据库一个context --> <!-- defaultModelType:指定生成对象的样式 flat:所有内容(主键,blob)等全部生成在一个对象中 targetRuntime: MyBatis3Simple:类似MyBatis3,只是不生成XXXBySample --> <context id="Mysql" targetRuntime="MyBatis3Simple" defaultModelType="flat"> <!-- delimitIdentifiers:参考tableName的解释, 注意,默认的delimitIdentifiers是双引号, 如果类似MYSQL这样的数据库,使用的是`(反引号, 那么还需要设置context的beginningDelimiter和endingDelimiter属性) --> <property name="beginningDelimiter" value="`"/> <property name="endingDelimiter" value="`"/>
<!-- 注释 --> <commentGenerator > <property name="suppressAllComments" value="true"/><!-- 是否取消注释 --> <property name="suppressDate" value="true" /> <!-- 是否生成注释代时间戳--> </commentGenerator>
<!-- jdbc连接 --> <jdbcConnection driverClass="${spring.datasource.driver-class-name}" connectionURL="${spring.datasource.url}" userId="${spring.datasource.username}" password="${spring.datasource.password}"> </jdbcConnection>
<!-- 类型转换 --> <javaTypeResolver>
<!-- 是否使用bigDecimal, false可自动转化以下类型(Long, Integer, Short, etc.) --> <property name="forceBigDecimals" value="false"/> </javaTypeResolver>
<!-- 生成实体类地址 --> <javaModelGenerator targetPackage="cn.huangwei.bean" targetProject="src/main/java">
<!-- 是否在当前路径下新加一层schema,eg:fase路径com.oop.eksp.user.model, true:com.oop.eksp.user.model.[schemaName] --> <property name="enableSubPackages" value="false"/>
<!-- 是否针对string类型的字段在set的时候进行trim调用 --> <property name="trimStrings" value="true"/> </javaModelGenerator>
<!-- 生成mapper.xml文件 --> <sqlMapGenerator targetPackage="mapper" targetProject="src/main/resources" > <property name="enableSubPackages" value="false" /> </sqlMapGenerator>
<!-- 生成mapper.xml对应mapper.java,也就是接口dao --> <javaClientGenerator targetPackage="cn.huangwei.mapper" targetProject="src/main/java" type="XMLMAPPER"> <property name="enableSubPackages" value="true"/> </javaClientGenerator> <table tableName="jshop_area" domainObjectName="JshopArea" enableInsert="true" enableSelectByPrimaryKey="true" enableSelectByExample="false" enableUpdateByPrimaryKey="true" enableDeleteByPrimaryKey="true" enableDeleteByExample="false" enableCountByExample="false" enableUpdateByExample="false" selectByPrimaryKeyQueryId="false" selectByExampleQueryId="true"> <!-- schema即为数据库名 tableName为对应的数据库表 domainObjectName 是要生成的实体类 enable*ByExample 是否生成 example类 --> </table> </context> </generatorConfiguration> |
执行generator代码
就能看到生成的代码了
4.4 在application添加mybatis别名与扫描包路径
在springboot的启动文件BootMybatisApplication.java添加注解
另外还得在mapper.java上添加@Mapper注解
添加controller(JshopAreaController.java)
|
package cn.huangwei.controller;
import java.util.ArrayList; import java.util.List;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.ResponseBody;
import com.huangwei.service.AreaService;
import cn.huangwei.bean.JshopArea;
@Controller @RequestMapping(value="/wap/integral/") public class JshopAreaController { @Autowired private AreaService areaService;
@ResponseBody @RequestMapping(value="") public String getAreaHtml() { return "area"; }
@ResponseBody @RequestMapping(value="queryAreaList") public List<JshopArea> integralAreaList(Long id) { List<JshopArea> resultList = areaService.findByParentId(id); return resultList; }
@ResponseBody @RequestMapping(value = "selectedArea") public List<JshopArea> getSelectedArea(@RequestBody List<String> stringIds){ List<Long> ids = new ArrayList<>(); for(String id : stringIds){ ids.add(Long.parseLong(id)); } List<JshopArea> resultList = areaService.findBySelectedId(ids);
return resultList; } }
|
添加area.html
|
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1, minimum-scale=1, maximum-scale=1, user-scalable=no"> <title>收货地址管理</title>
</head> <body> <div> <div id="result">
</div> <table id="area"> <thead> <td>选择</td> <td>区域</td> </thead>
</table> <br/> <input type="button" value="提交" onclick="getArea()"/> </div> <script type="text/javascript" src="/jquery-1.6.2.js"></script> <script> $(function () { initpage(); });
function getArea() { var divResult = $("#result"); divResult.empty(); var stringIds = new Array(); var checkedId = $('input[name="header"]:checked'); checkedId.each(function (i) { stringIds[i] = $(this).val(); });
$.ajax({ type:'post', url:'/wap/integral/selectedArea', data:JSON.stringify(stringIds), contentType:"application/json", success: function(data){ //data = JSON.parse(data); /* if (data.code == "000000") { for (var i = 0; i < data.dataArray.length; i++) { divResult.append("<span>" + data.dataArray[i].areaname + "</span><br/>") } } */ for (var i = 0; i < data.length; i++) { divResult.append("<span>" + data[i].areaname + "</span><br/>") } } }); }
function initpage() { $.ajax({ url: '/wap/integral/queryAreaList', success: function (data) { //data = JSON.parse(data); /*if (data.code == "000000") { for (var i = 0; i < data.dataArray.length; i++) { var trNode = $("<tr></tr>"); trNode.append($("<input type='checkbox' value='"+data.dataArray[i].id+"' name='header'/>")); trNode.append($("<td>" + data.dataArray[i].areaname + "</td>")); $("#area").append(trNode); } }*/ for (var i = 0; i < data.length; i++) { var trNode = $("<tr></tr>"); trNode.append($("<input type='checkbox' value='"+data[i].id+"' name='header'/>")); trNode.append($("<td>" + data[i].areaname + "</td>")); $("#area").append(trNode); } }
}); }
</script> </body> </html> |
5 测试结果
正常放在webapp是可以访问htm文件的
然后如果将html文件放在static文件夹中,得配置静态资源的访问
配置application.properties文件