SpringBoot搭建Restful web service之mybatis(二)
回顾
上章实现了将普通的spring boot web项目添加mybatis框架以及mybatis generator生成器。本章介绍如何在此基础上,进行简单的项目开发。
项目效果
浏览器中输入一个路径,后台从数据库的user_info表中读取一个用户名,显示到界面中。
实现过程
添加mybatis-generator.xml
问什么要创建mybatis-generator.xml 呢?因为在上一章中的pom.xml配置里,有如下内容:
所以,应该在src/main/resources/下创建该文件。
创建好后,将如下内容拷贝进来:
<?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>
<!-- <classPathEntry location="/Program Files/IBM/SQLLIB/java/db2java.zip" />-->
<context id="DB2Tables" targetRuntime="MyBatis3">
<!--数据库连接地址账号密码-->
<jdbcConnection driverClass="com.mysql.cj.jdbc.Driver"
connectionURL="jdbc:mysql://10.50.200.103:33063/miaosha?nullCatalogMeansCurrent=true"
userId="root"
password="mysql123">
</jdbcConnection>
<javaTypeResolver >
<property name="forceBigDecimals" value="false" />
</javaTypeResolver>
<!--生成dataobject类存放位置-->
<javaModelGenerator targetPackage="com.miaoshaproject.dataobject" targetProject="src/main/java">
<property name="enableSubPackages" value="true" />
<property name="trimStrings" value="true" />
</javaModelGenerator>
<!--生成映射文件存放位置-->
<sqlMapGenerator targetPackage="mapping" targetProject="src/main/resources">
<property name="enableSubPackages" value="true" />
</sqlMapGenerator>
<!--生成Dao类文件存放位置-->
<javaClientGenerator type="XMLMAPPER" targetPackage="com.miaoshaproject.dao" targetProject="src/main/java">
<property name="enableSubPackages" value="true" />
</javaClientGenerator>
<!--生成Dao类文件存放位置-->
<!-- <table schema="DB2ADMIN" tableName="ALLTYPES" domainObjectName="Customer" >-->
<!-- <property name="useActualColumnNames" value="true"/>-->
<!-- <generatedKey column="ID" sqlStatement="DB2" identity="true" />-->
<!-- <columnOverride column="DATE_FIELD" property="startDate" />-->
<!-- <ignoreColumn column="FRED" />-->
<!-- <columnOverride column="LONG_VARCHAR_FIELD" jdbcType="VARCHAR" />-->
<!-- </table>-->
<!--处理User_info表,Model类为UserDo,生成的Mapper类为UserDoMapper类-->
<table tableName="user_info" domainObjectName="UserDO" enableCountByExample="false" enableUpdateByExample="false" enableDeleteByExample="false"
enableSelectByExample="false" selectByExampleQueryId="false"></table>
<!--处理user_password表,Model类为UserPasswordDO,生成的Mapper类为UserPasswordDOMapper类-->
<table tableName="user_password" domainObjectName="UserPasswordDO" enableCountByExample="false" enableUpdateByExample="false" enableDeleteByExample="false"
enableSelectByExample="false" selectByExampleQueryId="false"></table>
</context>
</generatorConfiguration>
这些内容是从mybatis官网上拷贝下来的,只需要在此基础上做出修改,配置好自己的数据库、model类,处理类等信息,generator会根据这些配置,生成相应的类。具体如何修改,参看上面内容中的注释,写的已经很清楚了。
运行generator
菜单“run–>Edit configurations”,在弹出的对话框中新建一个maven:
做如下配置:
此时,运行"run—>mybatis-generator",就可以创建相应的文件:
接入mybatis数据源
在application.properties中添加数据源等配置如下:
#spring datasource
spring.datasource.name=miaosha
spring.datasource.url=jdbc:mysql://10.50.200.103:33063/miaosha?nullCatalogMeansCurrent=true
spring.datasource.username=root
spring.datasource.password=mysql123
#使用druid数据连接池
spring.datasource.type=com.alibaba.druid.pool.DruidDataSource
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
这样,在工程中就可以访问数据库了。
代码开发
App.java内容如下:
package com.miaoshaproject;
import com.miaoshaproject.dao.UserDOMapper;
import com.miaoshaproject.dataobject.UserDO;
import org.mybatis.spring.annotation.MapperScan;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.EnableAutoConfiguration;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
/**
* Hello world!
*
*/
//@EnableAutoConfiguration //自动装载所有依赖到项目中,作为bean提供调用,并提供一个默认的tomcat容器。
@SpringBootApplication(scanBasePackages = {"com.miaoshaproject"})
@RestController //使用spring mvc的控制器bean
@MapperScan("com.miaoshaproject.dao")
public class App
{
@Autowired
private UserDOMapper userDOMapper;
@RequestMapping("/") //映射路径,当接收到访问/目录请求时,controller会调用home函数,返回结果给前端。
public String home()
{
UserDO userDO = userDOMapper.selectByPrimaryKey(1);
if(userDO== null)
{
return "用户不存在";
}else
{
return "用户:"+userDO.getName();
}
}
public static void main( String[] args )
{
System.out.println( "Hello World!" );
SpringApplication.run(App.class); //@EnableAutoConfiguration之后,就可以直接起动springBoot了。
// 运行项目之后,通过localhost:8080就可以使用浏览器访问了,此时会是一个报错页面。
//因为系统中并没有一个请求响应函数,当实现了home函数后,才会有页面。
}
}
@EnableAutoConfiguration 要改为@SpringBootApplication注解
@SpringBootApplication(scanBasePackages = {“com.miaoshaproject”})的作用是扫描com.miaoshaproject下的类,并加载springboot的相关对象。
@MapperScan(“com.miaoshaproject.dao”)扫描并加载com.miaoshaproject.dao下类对象。
@Autowired 注解加载UserDOMapper 对象到当前文件中。
剩下的代码太简单,就不做介绍了。