在之前的文章我们已经介绍了如何新建一个maven项目以及如何导入一个ssm工程所需的jar包,接下来继续进行ssm的配置。
3、进行mybatis配置
mybatis主要是一个能够将数据库中单个的表映射到java中的pojo(与class类似),并用.xml文件的方法定义了数据库中的crud操作。例如,我在mysql中定义这样一个表结构:
一个很简单的表结构,其中有id和name两个属性,其type分别为int和varchar。那么使用mybatis进行映射后,得到的pojo如下:
public class TestTable { private Integer id; private String name; public Integer getId() { return id; } public void setId(Integer id) { this.id = id; } public String getName() { return name; } public void setName(String name) { this.name = name == null ? null : name.trim(); } }很显然,得到的pojo将表中的字段定义为class中的属性,并在这个pojo中定义了属性的get和set方法。可以看到,字段和属性是一一对应的。当然,单从这些DTO(数据传输对象)中我们还不能对数据库中的表进行操作,仅仅得知数据库的表结构。不用着急,在使用mybatis生成pojo时,还顺带生成了一个Example类,用于进行数据库表的操作,这里先不提,先介绍如何使用mybatis生成对应的pojo以及对应Example类的mapper。
添加插件mybatis generator
mybatis generator是一个非常实用的进行mybatis映射的工具,引入该插件可以更加便捷的使用mybatis进行DTO的生成,添加该插件的方法非常简单,只需在pom文件的<build>节点下添加相应的plugin节点即可,直接上代码:
<build> <finalName>ssm</finalName> <plugins> <plugin> <groupId>org.mybatis.generator</groupId> <artifactId>mybatis-generator-maven-plugin</artifactId> <version>1.3.5</version> <configuration> <verbose>true</verbose> <overwrite>true</overwrite> </configuration> </plugin> </plugins> </build>添加完毕后稍等一会,mybatis generator插件就会自动地被引入到项目中。
编辑项目的文件结构
清晰、合理的项目结构能够很好的帮助我们进行代码的编写及阅读,我在这里将项目的文件结构分为一个四个directory,这四个directory同属于一个java directory。它们各自的作用如下:
1、controller:MVC中的C层的上层,用于直接对jsp文件中显示的数据进行操作;
2、service:MVC中的C层的下层,用于执行Example类中定义的函数,对Model层进行操作;
3、pojo:对应于数据库映射中的DTO类,mybatis自动生成;
4、mapper:对应于数据库映射中的CRUD操作,mybatis自动生成。
如图:
注意,创建java文件夹时,需要制定其为source root,具体方法为右键java文件夹--make directory as...--source root,可以看到,指定完毕后,java文件夹变成蓝色。
添加配置文件generatorConfig.xml文件
mybatis的使用属性需要一个.xml文件进行指定,这里我命名为generatorConfig.xml,放在resources目录下,如图:
首先引入mybatis的命名空间,加入如下doctype:
<!DOCTYPE generatorConfiguration PUBLIC "-//mybatis.org//DTD MyBatis Generator Configuration 1.0//EN" "http://mybatis.org/dtd/mybatis-generator-config_1_0.dtd">
在该文件中,我们需要指定mybatis的generatorConfig属性,因此,先把其中的<bean>节点去掉,换成<generatorConfiguration>节点,如下:
<?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> </generatorConfiguration>
下面制定mysql-java驱动的地址,使用CLASSPATHENTRY的location属性指定,也就是你导入
mysql-connector-java.jar
这个包如果是用pom文件自动导入的,那么应该放在
.m2\repository\mysql\mysql-connector-java\
目录下,写法如下:
<classPathEntry location="C:\Users\MECHREVO\.m2\repository\mysql\mysql-connector-java\5.1.39\mysql-connector-java-5.1.39.jar"/>
接下来配置具体的连接信息,用<context>节点指定。该节点需要指定一个id和targetRuntime,用于指定使用的mybatis版本,写法如下:
<context id="testTable" targetRuntime="MyBatis3"> </context>
在context中可以进行数据库连接信息的配置,包括数据库驱动类,连接地址,用户名以及密码,分别由driverClass,connectionURL,userID,password四个值指定,包含在jdbcConnection节点下:
其中localhost是主机地址,3306是端口号,后边跟的是你要进行映射的数据库名(不是表名!),使用mybatis编译成功后会将数据库中所有的表转成pojo和mapper。
接下来指定生成pojo类的位置,也就是设置target,这里使用<javaModelGenerator>节点进行指定,其中要设置targerPackage和targetProject,如下:
<javaModelGenerator targetPackage="com.ricary.ssmtest.pojo" targetProject="src/main/java"> </javaModelGenerator>
类似地,接下来指定mapper生成的位置,使用<sqlMapGenerator>节点指定,也要设置相应的targetPackage和targetProject,如下:
<sqlMapGenerator targetPackage="com.ricary.ssmtest.mapper" targetProject="src/main/java"> </sqlMapGenerator>
为了方便我们查看数据库中的方法调用,mybatis还提供了一组可以查看mapper中定义方法的接口,生成接口需要用<javaClientGenerator>节点指定,如下:
<javaClientGenerator type="XMLMAPPER" targetPackage="com.ricary.ssmtest.mapper" targetProject="src/main/java"> </javaClientGenerator>
最后要指定数据库中要映射的表名,用<table>节点指定,比如我要映射的表名为“test_table”:
<table schema="" tableName="test_table"></table>
整个的.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> <!--使用CLASSPATHENTRY location制定驱动jar包位置--> <classPathEntry location="C:\Users\MECHREVO\.m2\repository\mysql\mysql-connector-java\5.1.39\mysql-connector-java-5.1.39.jar"/> <!--使用context指定配置属性--> <context id="testTable" targetRuntime="MyBatis3"> <jdbcConnection driverClass="com.mysql.jdbc.Driver" connectionURL="jdbc:mysql://localhost:3306/test" userId="ricarvy" password="789632145"> </jdbcConnection> <javaModelGenerator targetPackage="com.ricary.ssmtest" targetProject="src/main/java"> </javaModelGenerator> <sqlMapGenerator targetPackage="com.ricary.ssmtest.mapper" targetProject="src/main/java"> </sqlMapGenerator> <javaClientGenerator type="XMLMAPPER" targetPackage="com.ricary.ssmtest.mapper" targetProject="src/main/java"> </javaClientGenerator> <table tableName="test_table"></table> </context> </generatorConfiguration>
这就完成了generatorConfig.xml文件的配置。
执行mybatis框架
接下来我们要使用mybatis -generator插件对指定的属性进行实现。点击右上角的Edit Configurations,如图:
弹出如下对话框:
点击左上角的“+”,选择“maven”,出现如图:
给该Config起名为mybatis -generator,并在Command Line中输入命令:
mybatis-generator:generate -e点击“Apply”,然后“OK”。
最后点击右上角绿色的三角符号,等待运行结束后,可以看到,对应于test_table的pojo和mapper已经被放到了对应的位置当中,如图:
可以看到生成了对应的pojo和mapper。
(未完持续...)