前面有一篇纯注解方式,满屏@不见XML为何物,见https://blog.csdn.net/FRESHET/article/details/100887282
这里介绍XML配置方式,内容较多,故大部分采用可视化操作方式生成相应配置文件。
1.打开STS->NEW->Spring Legacy Project->project name(自定义)->选择Templates->Spring MVC Project
2.基本一键生成后就可以部署运行了(此时还未连数据库)
3.什么都不动,启动服务器后访问:http://localhost:8080/app/ 会有乱码,此时解决方式见
https://blog.csdn.net/FRESHET/article/details/100920561
4.至此一个SpringMVC的WEB项目就搭建好了,IDE应该是升级了,现在一步成功,还不报错,体验感非常好!
5.后面是整合MyBatis,这里有ECLIPSE的插件可自动生成一系例文件,只需按格式填好空即可:
i.Help->Eclipse Marketplace...->find:mybatis(input)->MyBatis Generator 1.3.7(目录最新,以前有离线安装,现在动不动就MAVEN,GITHUB,GRADLE也流行起来了,没网暂不考虑,也就无所谓了),install安装下一步即可,会要求重启。
ii.右键src/main/resources->new->搜MyBatis
会生成一个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>
<context id="context1">
<!-- ???这些是自动生成的,相当于把实际值填到问号处 -->
<!-- <jdbcConnection connectionURL="???" driverClass="???" password="???"
userId="???" /> <javaModelGenerator targetPackage="???" targetProject="???"
/> <sqlMapGenerator targetPackage="???" targetProject="???" /> <javaClientGenerator
targetPackage="???" targetProject="???" type="XMLMAPPER" /> <table schema="???"
tableName="???"> <columnOverride column="???" property="???" /> </table> -->
<!-- 8.0的mysql com.mysql.cj.jdbc.Driver 注意时区serverTimezone -->
<!-- url=jdbc:mysql://localhost:3306/test?serverTimezone=Shanghai&useUnicode=true&characterEncoding=utf8&useSSL=false -->
<jdbcConnection
connectionURL="jdbc:mysql://127.0.0.1:3306/test"
driverClass="com.mysql.jdbc.Driver" password="" userId="root" />
<javaModelGenerator targetPackage="com.my.pojo"
targetProject="MVC1/src/main/java" />
<sqlMapGenerator targetPackage="com.my.mapper"
targetProject="MVC1/src/main/resources" />
<javaClientGenerator targetPackage="com.my.dao"
targetProject="MVC1/src/main/java" type="XMLMAPPER" />
<!-- <table schema="???" tableName="???"> <columnOverride column="???"
property="???" /> </table> -->
<table schema="test" tableName="temp">
</table>
</context>
</generatorConfiguration>
问号?是生成的文件待填空,里面有实际填写的例子
iii.建表、建包略,会在上面填里的包里生成相应的文件,什么也不需要动!
iv.如何让这些成生的文件、类什么的生效和spring进行整合,还需要额外配一些系统类如DataSource,SessionFactory,Transaction什么的:
<bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource"
destroy-method="close">
<property name="driverClassName" value="com.mysql.jdbc.Driver" />
<property name="url" value="jdbc:mysql://localhost:3306/test" />
<property name="username" value="root" />
<property name="password" value="" />
<!-- 初始化连接大小 -->
<!-- <property name="initialSize" value="${initialSize}"></property>
连接池最大数量
<property name="maxActive" value="${maxActive}"></property>
连接池最大空闲
<property name="maxIdle" value="${maxIdle}"></property>
连接池最小空闲
<property name="minIdle" value="${minIdle}"></property>
获取连接最大等待时间
<property name="maxWait" value="${maxWait}"></property> -->
</bean>
<!-- spring和MyBatis完美整合,不需要mybatis的配置映射文件 -->
<bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
<property name="dataSource" ref="dataSource" />
<!-- 自动扫描mapping.xml文件 -->
<property name="mapperLocations" value="classpath:com/my/mapper/*.xml"></property>
</bean>
<!-- DAO接口所在包名,Spring会自动查找其下的类 -->
<bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">
<property name="basePackage" value="com.my.dao" />
<property name="sqlSessionFactoryBeanName" value="sqlSessionFactory"></property>
</bean>
<!-- (事务管理)transaction manager, use JtaTransactionManager for global tx -->
<!-- <bean id="transactionManager"
class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
<property name="dataSource" ref="dataSource" />
</bean> -->
写在root-context.xml(前面可视化生成的)里即可,基本最简洁,够用了,如再扩展配置打开注释或再填加其它<bean>即可。
v.这时会报错,需要加引几个包:打开pom.xml:
<!-- after -->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-tx</artifactId>
<version>${org.springframework-version}</version>
</dependency>
<!-- after -->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-jdbc</artifactId>
<version>${org.springframework-version}</version>
</dependency>
<!-- after -->
<!-- https://mvnrepository.com/artifact/commons-dbcp/commons-dbcp -->
<dependency>
<groupId>commons-dbcp</groupId>
<artifactId>commons-dbcp</artifactId>
<version>1.4</version>
</dependency>
加这三个引用即可
vi.找个JUnit或直接写在Controller里(实际可能还需要写@Service层)测试一下
/**
* Handles requests for the application home page.
*/
@Controller
public class HomeController {
private static final Logger logger = LoggerFactory.getLogger(HomeController.class);
@Autowired
TempMapper tempMapper;
/**
* Simply selects the home view to render by returning its name.
*/
@RequestMapping(value = "/", method = RequestMethod.GET)
public String home(Locale locale, Model model) {
logger.info("Welcome home! The client locale is {}.", locale);
Date date = new Date();
DateFormat dateFormat = DateFormat.getDateTimeInstance(DateFormat.LONG, DateFormat.LONG, locale);
String formattedDate = dateFormat.format(date);
model.addAttribute("serverTime", formattedDate );
Temp temp=tempMapper.selectByPrimaryKey(1);
System.out.println(temp.getBb()+" world!");
return "home";
}
}
vii.以上代码绝大部分是自动生成,运行效果页面没变,后台显示:
INFO : com.my.app.HomeController - Welcome home! The client locale is zh_CN.
hello world!