Maven下SSM项目整合笔记02:mybatis配置文件以及逆向工程
2017-09-11 11:02
716 查看
配置文件
mybatis的全局配置文件可以使用官方文档,搜索mybatis-》帮助文档-》http://www.mybatis.org/mybatis-3/
在getting start扎到配置文件的文件头:
在configuration xml里面找到setting:里面能够找到对应的自动设置:
以下是mybatis的配置文件:
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE configuration PUBLIC "-//mybatis.org//DTD Config 3.0//EN" "http://mybatis.org/dtd/mybatis-3-config.dtd"> <configuration> <settings> <setting name="mapUnderscoreToCamelCase" value=""/> </settings> <!-- 别名 --> <typeAliases> <package name="com.zr.crud.bean"/> </typeAliases> </configuration>
创建数据表:
创建表后导出的表结构如下(这里添加外键是为了保证数据的安全性,逻辑上可以不要):SET FOREIGN_KEY_CHECKS=0; -- ---------------------------- -- Table structure for tbl_dept -- ---------------------------- DROP TABLE IF EXISTS `tbl_dept`; CREATE TABLE `tbl_dept` ( `dept_id` int(11) NOT NULL AUTO_INCREMENT, `dept_name` varchar(255) NOT NULL, PRIMARY KEY (`dept_id`) ) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=utf8; SET FOREIGN_KEY_CHECKS=0; -- ---------------------------- -- Table structure for tbl_emp -- ---------------------------- DROP TABLE IF EXISTS `tbl_emp`; CREATE TABLE `tbl_emp` ( `emp_id` int(11) NOT NULL AUTO_INCREMENT, `emp_name` varchar(255) NOT NULL, `gender` char(1) DEFAULT NULL, `email` varchar(255) DEFAULT NULL, `d_id` int(11) DEFAULT NULL, PRIMARY KEY (`emd_id`), KEY `fk_emp_dept` (`d_id`), CONSTRAINT `fk_emp_dept` FOREIGN KEY (`d_id`) REFERENCES `tbl_dept` (`dept_id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8;
使用mybatis提供的逆向工程
使用逆向工程创建需要的bean以及mapper:点击quick start按照步骤使用:
- 1.首先引入generator的相关jar包:pom.xml里面添加:
<dependency> <groupId>org.mybatis.generator</groupId> <artifactId>mybatis-generator</artifactId> <version>1.3.5</version> </dependency>
这里因为导入pom文件仍然无法读取,所以采用吧jar包导入本地的方法,使用maven把文件导入本地仓库:
-Dfile为下载文件的位置,这里指定版本号,将下载的jar包导入本地的仓库,仓库位置可以看maven目录下的conf文件夹下的settings.xml:
使用以下命令导入:
mvn install:install-file -Dfile=d:\BaseCodes\mybatis-generator-core-1.3.5.jar -DgroupId=com.google.code -DartifactId=mybatis-generator-core -Dversion=1.3.5 -Dpackaging=jar
之后在pom连添加:
<dependency> <groupId>com.google.code</groupId> <artifactId>mybatis-generator-core</artifactId> <version>1.3.5</version> </dependency>
2.使用官方模板创建配置文件(mgb.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="DB2Tables" targetRuntime="MyBatis3"> <!-- 配置数据库的连接信息 --> <jdbcConnection driverClass="com.mysql.jdbc.Driver" connectionURL="jdbc:mysql://localhost:3306/ssm_crud" userId="root" password="mysqladmin"> </jdbcConnection> <javaTypeResolver> <property name="forceBigDecimals" value="false" /> </javaTypeResolver> <!-- 指定javabean生成的位置 --> <javaModelGenerator targetPackage="com.zr.crud.bean" targetProject=".\src\main\java"> <property name="enableSubPackages" value="true" /> <property name="trimStrings" value="true" /> </javaModelGenerator> <!-- 指定sql映射文件生成的位置 --> <sqlMapGenerator targetPackage="mapper" targetProject=".\src\main\resources"> <property name="enableSubPackages" value="true" /> </sqlMapGenerator> <!-- 指定dao接口生成的位置,mapper接口 --> <javaClientGenerator type="XMLMAPPER" targetPackage="com.zr.crud.dao" targetProject=".\src\main\java"> <property name="enableSubPackages" value="true" /> </javaClientGenerator> <!-- 指定每个表的生成策略 --> <!-- tableName表名 --> <!-- domainObjectName生成类的名字 --> <table tableName="tbl_emp" domainObjectName="Employee"></table> <table tableName="tbl_dept" domainObjectName="Department"></table> </context> </generatorConfiguration>
之后可以查看文档中的Running MyBatis Generator:
http://www.mybatis.org/generator/running/running.html
这里使用java代码的方式运行:
package com.zr.crud.test; import java.io.*; import java.util.*; import org.mybatis.generator.api.MyBatisGenerator; import org.mybatis.generator.config.Configuration; import org.mybatis.generator.config.xml.ConfigurationParser; import org.mybatis.generator.internal.DefaultShellCallback; public class MBGTest { public static void main(String[] args) throws Exception { List<String> warnings = new ArrayList<String>(); boolean overwrite = true; File configFile = new File( System.getProperty("user.dir")+"\\mgb.xml"); ConfigurationParser cp = new ConfigurationParser(warnings); Configuration config = cp.parseConfiguration(configFile); DefaultShellCallback callback = new DefaultShellCallback(overwrite); MyBatisGenerator myBatisGenerator = new MyBatisGenerator(config, callback, warnings); myBatisGenerator.generate(null); } }
运行后dao类报错:
The import org.apache.ibatis cannot be resolved
这个时候需要导入对应的包:
在pom.xml中添加:
<dependency> <groupId>org.apache.ibatis</groupId> <artifactId>ibatis-core</artifactId> <version>3.0</version> </dependency>
至此,生成完成。
修改相关配置文件
此时,在生成代码的基础上开始修改:- 因为我们在查询时需要多表关联查询,所以在生成的com.zr.crud.bean.Employee类中添加Department字段:
//自动生成的基础上添加的成员department用于方便关联查询 private Department department; public Department getDepartment() { return department; } public void setDepartment(Department department) { this.department = department; }
在com.zr.crud.dao.EmployeeMapper类中添加方法关联查询:
//新增加的方法: //1.selectByExampleWithDept //2.selectByPrimaryKeyWithDept List<Employee> selectByExampleWithDept(EmployeeExample example); Employee selectByPrimaryKeyWithDept(Integer emdId);
在Mapper配置文件EmployeeMapper.xml中添加对应sql语句:
– 返回集合:关联查询返回多个表的数据,使用association来关联:
<resultMap type="com.zr.crud.bean.Employee" id="WithDeptResultMap"> <id column="emp_id" jdbcType="INTEGER" property="empId" /> <result column="emp_name" jdbcType="VARCHAR" property="empName" /> <result column="gender" jdbcType="CHAR" property="gender" /> <result column="email" jdbcType="VARCHAR" property="email" /> <result column="d_id" jdbcType="INTEGER" property="dId" /> <!-- 使用association来对应查询的结果 --> <!-- property为类中的变量名 column为 javaType为数据类型 --> <association property="department" javaType="com.zr.crud.bean.Department"> <!-- column为返回的列名 --> <id column="dept_id" property="deptId"/> <result column="dept_name" property="deptName" jdbcType="VARCHAR"/> </association> </resultMap>
– 新建需要查询的列:
<sql id="WithDept_Column_List"> e.emp_id, e.emp_name, e.gender, e.email, e.d_id, d.dept_id, d.dept_name </sql>
– 使用右连接关联查询:
<select id="selectByExampleWithDept" resultMap="WithDeptResultMap"> select <if test="distinct"> distinct </if> <include refid="WithDept_Column_List" /> FROM tbl_emp e LEFT JOIN tbl_dept d on e.d_id=d.dept_id <if test="_parameter != null"> <include refid="Example_Where_Clause" /> </if> <if test="orderByClause != null"> order by ${orderByClause} </if> </select> <select id="selectByPrimaryKeyWithDept" resultMap="WithDeptResultMap"> select <include refid="WithDept_Column_List" /> FROM tbl_emp e LEFT JOIN tbl_dept d on e.d_id=d.dept_id where emp_id = #{empId,jdbcType=INTEGER} </select>
测试mapper
使用Spring的单元测试,需要在pom.xml中添加对应的依赖关系:<!-- 导入Spring的测试模块 --> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-test</artifactId> <version>4.3.7.RELEASE</version> </dependency>
编写测试类查看数据:
package com.zr.crud.test; import java.util.List; import org.junit.Test; import org.junit.runner.RunWith; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.context.ApplicationContext; import org.springframework.context.support.ClassPathXmlApplicationContext; import org.springframework.test.context.ContextConfiguration; import org.springframework.test.context.junit4.SpringJUnit4ClassRunner; import com.zr.crud.bean.Department; import com.zr.crud.bean.DepartmentExample; import com.zr.crud.dao.DepartmentMapper; /** * 测试dao层的工作 * Spring的项目推荐使用Spring的单元测试,可以自动注入我们需要的组件 * 1.在pom.xml中导入SpringTest的依赖 * 2.使用注解@ContextConfiguration指定Spring配置文件的位置 * 3.直接autowired要使用的组件即可 * @author asus * */ @RunWith(SpringJUnit4ClassRunner.class) @ContextConfiguration(locations={"classpath:applicationContext.xml"}) public class MapperTest { @Autowired DepartmentMapper departmentMapper; /** * 测试DepartmentMapper */ @Test public void testCRUD_Dept() { List<Department> d_list = departmentMapper.selectByExample(new DepartmentExample()); for (Department department : d_list) { System.out.println(department.getDeptId()+" : " + department.getDeptName()); } } }
控制台输出:
可以看到数据成功显示。
相关文章推荐
- ssm框架整合笔记-3-mybatis的逆向工程与测试项目
- mybatis逆向工程自动生成实体类、接口以及映射Mapper.xml配置文件
- SSM整合的一些配置(基于Maven工程,逆向工程,Restful风格)
- JAVAWEB开发之mybatis详解(二)——高级映射、查询缓存、mybatis与Spring整合以及懒加载的配置和逆向工程
- JAVAWEB开发之mybatis详解(二)——高级映射、查询缓存、mybatis与Spring整合以及懒加载的配置和逆向工程
- eclipse 中创建 整合springmvc+mybatis+maven 的java web项目步骤,以及maven仓库配置
- SSM整合,spring4.3.6.RELEASE,springmvc,mybatis3.4.2,maven聚合项目整合
- springmvc 项目完整示例04 整合mybatis mybatis所需要的jar包 mybatis配置文件 sql语句 mybatis应用
- 从零开始搭建maven+springmvc+mybatis web项目(2)---springmvc配置文件编写
- 关于IDEA中项目pom.xml文件中jar报错,以及maven在IDEA中的配置!!!
- Mybatis逆向工程XML配置文件
- 使用Idea创建ssm项目,SpringMVC+Spring+MyBatis+Maven整合
- 使用Idea创建ssm项目,SpringMVC+Spring+MyBatis+Maven整合
- javaWeb项目SpringMVC3.2.1与Mybatis3.0.4整合实例(Mybaits-spring配置文件的几种方式)之一SqlSessionDaoSupport方式
- maven-ssm框架基本整合之配置文件的配置
- SSM整合配置文件(Springmvc+Spring+Mybatis)
- 转:Maven项目编译后classes文件中没有dao的xml文件以及没有resources中的配置文件的问题解决
- Eclipse Maven建web项目 与SSM三大框架整合教程(Spring+SpringMVC+MyBatis)
- Spring+mybatis+maven整合过程加载配置文件jdbc.properties
- IntelliJ IDEA下SSM框架整合、创建Maven项目流程(Spring + SpringMVC + MyBatis)