재인쇄할 소스를 표시해 주세요:
앞서 언급한 대로: Spring+SpringMVC+MyBatis 심층 학습 및 구성 (9)-MyBatis 및 Spring 통합
매퍼 자동 생성 도구 mybatis-generator-core-1.3.2 사용 공식 웹사이트에서 po 클래스 및 매퍼 매핑 파일을 생성합니다.
실제 기업 개발에서 일반적으로 사용되는 리버스 엔지니어링 방법:
데이터베이스 테이블에서 Java 코드를 생성합니다.
2. 리버스 엔지니어링 다운로드
3. 사용 방법(사용 방법을 알아야 함)
3.1 리버스 엔지니어링 실행
개발 도구에 의존하지 말고 자바 프로그램 방식을 사용하는 것이 좋습니다.
3.2 매퍼 생성 구성 파일
(3) 매퍼 파일이 있는 패키지 경로입니다.
구성 파일은 다음과 같습니다.
<?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="testTables" targetRuntime="MyBatis3"><commentGenerator><!-- 是否去除自动生成的注释 true:是 : false:否 --><property name="suppressAllComments" value="true" /></commentGenerator><!--数据库连接的信息:驱动类、连接地址、用户名、密码 --><jdbcConnection driverClass="com.mysql.jdbc.Driver"connectionURL="jdbc:mysql://localhost:3306/mybatisdemo" userId="root"password=""></jdbcConnection><!-- <jdbcConnection driverClass="oracle.jdbc.OracleDriver" connectionURL="jdbc:oracle:thin:@127.0.0.1:1521:yycg" userId="yycg" password="yycg"> </jdbcConnection> --><!-- 默认false,把JDBC DECIMAL 和 NUMERIC 类型解析为 Integer,为 true时把JDBC DECIMAL 和 NUMERIC 类型解析为java.math.BigDecimal --><javaTypeResolver><property name="forceBigDecimals" value="false" /></javaTypeResolver><!-- targetProject:生成PO类的位置 --><javaModelGenerator targetPackage="joanna.yan.po"targetProject=".\src"><!-- enableSubPackages:是否让schema作为包的后缀 --><property name="enableSubPackages" value="false" /><!-- 从数据库返回的值被清理前后的空格 --><property name="trimStrings" value="true" /></javaModelGenerator><!-- targetProject:mapper映射文件生成的位置 --><sqlMapGenerator targetPackage="joanna.yan.mapper" targetProject=".\src"><!-- enableSubPackages:是否让schema作为包的后缀 --><property name="enableSubPackages" value="false" /></sqlMapGenerator><!-- targetPackage:mapper接口生成的位置 --><javaClientGenerator type="XMLMAPPER"targetPackage="joanna.yan.mapper" targetProject=".\src"><!-- enableSubPackages:是否让schema作为包的后缀 --><p roperty name="enableSubPackages" value="false" /></javaClientGenerator><!-- 指定数据库表 --><table tableName="items"></table><table tableName="orders"></table><table tableName="orderdetail"></table><table tableName="user"></table><!-- <table schema="" tableName="sys_user"></table> <table schema="" tableName="sys_role"></table> <table schema="" tableName="sys_permission"></table> <table schema="" tableName="sys_user_role"></table> <table schema="" tableName="sys_role_permission"></table> --><!-- 有些表的字段需要指定java类型 <table schema="" tableName=""> <columnOverride column="" javaType="" /> </table> --></context></generatorConfiguration>
3.3 Java 클래스를 사용하여 매퍼 파일 생성
public class GeneratorSqlmap {public void generator() throws Exception{ List<String> warnings = new ArrayList<String>();boolean overwrite = true;//指定 逆向工程配置文件File configFile = new File("generatorConfig.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); } public static void main(String[] args) throws Exception {try { GeneratorSqlmap generatorSqlmap = new GeneratorSqlmap(); generatorSqlmap.generator(); } catch (Exception e) { e.printStackTrace(); } } }
3.4.1mapper.xml
Mapper.xml 파일은 매퍼 디렉토리에 복사됩니다
참고: mapper.xml 파일과 mapper.java 파일은 동일한 디렉터리에 있으며 파일 이름도 동일합니다.
= ClassPathXmlApplicationContext("classpath:spring/applicationContext.xml"=(ItemsMapper) applicationContext.getBean("itemsMapper" ="手机" =ItemsExample.Criteria criteria="笔记本3"List<Items> list= =itemsMapper.selectByPrimaryKey(1 Items items=itemsMapper.selectByPrimaryKey(1"水杯"
4. 리버스 엔지니어링 주의사항
4.2 테이블 스키마 문제
다음은 Oracle 데이터베이스 테이블에 대한 코드 생성에 대한 스키마 문제입니다.
Schema는 데이터베이스 스키마입니다. Oracle에서 한 명의 사용자가 하나의 스키마에 해당한다는 것을 알 수 있습니다. 동일한 테이블 이름에 액세스할 수 있는 Oracle 데이터베이스에 여러 스키마가 있는 경우 mybatis를 사용하여 테이블에 대한 mapper.xml을 생성하면 매퍼 콘텐츠가 중복되어 mybatis 구문 분석 오류가 발생합니다.
XXXX는 생성 후 매퍼의 스키마 접두사를 제거합니다. xml을 일괄적으로 제거하지 않으면 Oracle 사용자가 sql 문을 변경할 때 쿼리가 실패합니다.
단축 작업 방법: mapper.xml 파일의 일괄 교체: "from XXXX."
Oracle 쿼리 개체의 스키마는 다음과 같이 dba_objects에서 쿼리할 수 있습니다.
select * from dba_objects
위 내용은 Spring+SpringMVC+MyBatis 심층 학습 및 구성-MyBatis 리버스 엔지니어링의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!