Spring+MyBatis
首先要搭建的是Spring+MyBatis的整合框架,毕竟Spring是整个Web框架的核心部位,而数据库操作是一切测试的基础嘛。
目录结构
━java
┣ controller(控制层)
┣ mapper(因为没有Dao,用Mapper层替代持久层)
┣ pojo(基础模型层)
┣ service(业务层)
┗ util(通用工具)
━resource
┣config
┣mybatis(MyBatis配置,其实这里的配置文件啥内容也没有)
┣spring(Spring的配置)
┗mapper(用于存放Mybatis生成的mapper接口对应的xml配置文件)
MyBatis配置文件
目录:Resource/Config/mybatis,文件名:SqlMapConfig.xml
新建一个配置文件,内容如下:
1 2 DOCTYPE configuration 3 PUBLIC "-//mybatis.org//DTD Config 3.0//EN" 4 "http://mybatis.org/dtd/mybatis-3-config.dtd"> 5 67 <--这里啥也不用写,因为我们整合Spring,配置都放在Spirng的配置中--!> 8
数据库参数
目录:resource/config,文件名:db.properties
其中“db_house_rent”指的是你的数据库名称,直接替换即可,比如你的数据库叫"abc", 那你就改成:jdbc:mysql://127.0.0.1:3306/abc?characterEncoding=UTF-8。
1 jdbc.driver = com.mysql.jdbc.Driver 2 jdbc.url = jdbc:mysql://127.0.0.1:3306/db_house_rent?characterEncoding=UTF-8 3 jdbc.username = root 4 jdbc.password = 123456
真正的MyBatis配置文件
目录:resource/config/spring,文件名:applicationContext-dao.xml
当然你也可以为了方便记忆,把文件名的dao改成mybatis,不影响我们后续的配置,但本文章的配置文件的文件名,是有统一格式要求的,后续会说为什么,但必须按照applicationContext-xxx.xml的格式来写。
xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:context="http://www.springframework.org/schema/context" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd"> <context:property-placeholder location="classpath:config/db.properties"/> <bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource" destroy-method="close"> <property name="driverClass" value="${jdbc.driver}"/> <property name="jdbcUrl" value="${jdbc.url}"/> <property name="user" value="${jdbc.username}"/> <property name="password" value="${jdbc.password}"/> <property name="maxPoolSize" value="50"/> <property name="minPoolSize" value="2"/> <property name="maxIdleTime" value="60"/> bean> <bean id="sqlSession" class="org.mybatis.spring.SqlSessionFactoryBean"> <property name="configLocation" value="classpath:config/mybatis/SqlMapConfig.xml"/> <property name="dataSource" ref="dataSource"/> <property name="mapperLocations"> <list> <value>classpath*:/mapper/*.xmlvalue> list> property> bean> <bean class="org.mybatis.spring.mapper.MapperScannerConfigurer"> <property name="basePackage" value="com.magic.rent.mapper"/> <property name="sqlSessionFactoryBeanName" value="sqlSession"/> bean> beans>
MyBatis逆向工程配置文件
目录:resource,文件名:generatorConfig.xml
这个配置文件,是用于MyBatis的逆向工程的,这个虽然不属于本框架的内容,但是也算是Mybatis的一个非常好用的插件,所以也一并加到教程中来。
1 xml version="1.0" encoding="UTF-8"?> 2 DOCTYPE generatorConfiguration 3 PUBLIC "-//mybatis.org//DTD MyBatis Generator Configuration 1.0//EN" 4 "http://mybatis.org/dtd/mybatis-generator-config_1_0.dtd"> 5 6 <generatorConfiguration> 7 <classPathEntry 8 location="/Users/wuxinzhe/.m2/repository/mysql/mysql-connector-java/5.1.6/mysql-connector-java-5.1.6.jar"/> 9 <context id="testTables" targetRuntime="MyBatis3"> 10 <commentGenerator> 11 12 <property name="suppressAllComments" value="true"/> 13 commentGenerator> 14 15 16 17 18 19 20 <jdbcConnection driverClass="com.mysql.jdbc.Driver" 21 connectionURL="jdbc:mysql://127.0.0.1:3306/db_house_rent?characterEncoding=UTF-8" 22 userId="root" 23 password="199176"> 24 jdbcConnection> 25 26 28 <javaTypeResolver> 29 <property name="forceBigDecimals" value="false"/> 30 javaTypeResolver> 31 32 33 <javaModelGenerator targetPackage="mybatis.pojo" 34 targetProject="src/test/java"> 35 36 <property name="enableSubPackages" value="false"/> 37 38 <property name="trimStrings" value="true"/> 39 javaModelGenerator> 40 41 <sqlMapGenerator targetPackage="mybatis.mapper" 42 targetProject="src/test/java"> 43 44 <property name="enableSubPackages" value="false"/> 45 sqlMapGenerator> 46 47 <javaClientGenerator type="XMLMAPPER" 48 targetPackage="mybatis.mapper" 49 targetProject="src/test/java"> 50 51 <property name="enableSubPackages" value="false"/> 52 javaClientGenerator> 53 54 <table tableName="SYS_USERS" 55 enableCountByExample="false" 56 enableUpdateByExample="false" 57 enableDeleteByExample="false" 58 enableSelectByExample="false" 59 selectByExampleQueryId="false"/> 60 <table tableName="SYS_ROLES" 61 enableCountByExample="false" 62 enableUpdateByExample="false" 63 enableDeleteByExample="false" 64 enableSelectByExample="false" 65 selectByExampleQueryId="false"/> 66 <table tableName="SYS_AUTHORITIES" 67 enableCountByExample="false" 68 enableUpdateByExample="false" 69 enableDeleteByExample="false" 70 enableSelectByExample="false" 71 selectByExampleQueryId="false"/> 72 <table tableName="SYS_MODULES" 73 enableCountByExample="false" 74 enableUpdateByExample="false" 75 enableDeleteByExample="false" 76 enableSelectByExample="false" 77 selectByExampleQueryId="false"/> 78 <table tableName="SYS_RESOURCES" 79 enableCountByExample="false" 80 enableUpdateByExample="false" 81 enableDeleteByExample="false" 82 enableSelectByExample="false" 83 selectByExampleQueryId="false"/> 84 <table tableName="PERSISTENT_LOGINS" 85 enableCountByExample="false" 86 enableUpdateByExample="false" 87 enableDeleteByExample="false" 88 enableSelectByExample="false" 89 selectByExampleQueryId="false"/> 90 context> 91 generatorConfiguration>
到此我要做一个解释,就是mapper逆向工程生成的文件,不是直接替换到java工程中,而是在本工程下,我建立的一个test目录下,这个专门用于写测试的,之所以要这么干,是因为如果当你修改数据库的时候,生成的文件会直接覆盖已有的文件,如果有修改这个自动生成的文件,那就会被覆盖掉,所以以防万一,还是这样比较方便,每次生成之后,对比一下再把新增的或修改的手动去替换。
测试工程目录图
━java
┣ mybatis(用于存放生成的逆向工程文件)
┣ com.magic.rent.service(这个是用JUnit自动生成的测试类,回头会说。)
┣ mapper(存放生成的mapper.java和mapper.xml文件)
┣ poco(存放生成的映射对象文件)
┗ test(很随意的测试都在这里,比如字符串截取之类的...)
[如图,测试类的包,要在IDEA的配置中,设置为“绿色的测试资源”]
[IDEA对项目工程的包有一些分门别类的设置,不懂的朋友自行百度了]
[说实话,我是一个颜值党,Eclipse实在看不下去,所以喜欢IDEA没办法]
既然配置完了,就是要怎么用了。打开IDEA右侧栏的Maven Project,找到插件组(Plugins)中的mybatis-generator.根据标号的操作步骤,找到了以后,直接“双击”即可。如果期间出了什么错,控制台会直接打印出错误原因,英语不好的朋友可以百度翻译。