可视化整合SpringMVC+MyBatis搭建SSM框架

前面有一篇纯注解方式,满屏@不见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!

发布了39 篇原创文章 · 获赞 38 · 访问量 1万+

猜你喜欢

转载自blog.csdn.net/FRESHET/article/details/100928879