发表于: 2016-09-18 22:24:44

3 2179


一、今天完成的任务

   今天看了mybatis的官方文档复习了一下几点内容:

1、mybatis的逆向工程

2、原始dao开发方法(程序员需要写dao接口和dao实现类)

3、mapper代理开发方法(程序员只需要写mapper接口(相当于dao接口))

 

 

 

mybaits需要程序员自己编写sql语句,mybatis官方提供逆向工程 可以针对单表自动生成mybatis执行所需要的代码(mapper.java,mapper.xmlpo..

企业实际开发中,常用的逆向工程方式:

由于数据库的表生成java代码。

1.在官网下载逆向工程

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/mybatis" userId="root"

password="mysql">

</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="cn.itcast.ssm.po"

targetProject=".\src">

<!-- enableSubPackages:是否让schema作为包的后缀 -->

<property name="enableSubPackages" value="false" />

<!-- 从数据库返回的值被清理前后的空格 -->

<property name="trimStrings" value="true" />

</javaModelGenerator>

        <!-- targetProject:mapper映射文件生成的位置 -->

<sqlMapGenerator targetPackage="cn.itcast.ssm.mapper" 

targetProject=".\src">

<!-- enableSubPackages:是否让schema作为包的后缀 -->

<property name="enableSubPackages" value="false" />

</sqlMapGenerator>

<!-- targetPackagemapper接口生成的位置 -->

<javaClientGenerator type="XMLMAPPER"

targetPackage="cn.itcast.ssm.mapper" 

targetProject=".\src">

<!-- enableSubPackages:是否让schema作为包的后缀 -->

<property name="enableSubPackages" value="false" />

</javaClientGenerator>

<!-- 指定数据库表 -->

<table tableName="items"></table>

<table tableName="orders"></table>

<table tableName="orderdetail"></table>

<table tableName="user"></table>

 

</context>

</generatorConfiguration>

4.执行生成程序

5.使用生成代码

注:不建议在生成的文件中填写代码

 

 

原始dao开发方法

1.  程序员需要写dao接口和dao实现类。

需要向dao实现类中注入SqlSessionFactory,在方法体内通过SqlSessionFactory创建SqlSession

2.dao接口实现类

3.编写测试代码

注:1dao接口实现类方法中存在大量模板方法,设想能否将这些代码提取出来,大大减轻程序员的工作量。

 

2、调用sqlsession方法时将statementid硬编码了

 

3、调用sqlsession方法时传入的变量,由于sqlsession方法使用泛型,即使变量类型传入错误,在编译阶段也不报错,不利于程序员开发。

 

 

使用mapper代理开发

1.程序员还需要编写mapper.xml映射文件

程序员编写mapper接口需要遵循一些开发规范,mybatis可以自动生成mapper接口实现类代理对象。

 

开发规范:

1、在mapper.xmlnamespace等于mapper接口地址

namespace命名空间就是对sql进行分类化管理,理解sql隔离。使用mapper代理开发,namespace有特殊重要作用,namespacemapper接口地址。

2mapper.java接口中的方法名和mapper.xmlstatementid一致

3mapper.java接口中的方法输入参数类型和mapper.xmlstatementparameterType指定的类型一致。

4mapper.java接口中的方法返回值类型和mapper.xmlstatementresultType指定的类型一致。

 

Mapper.java

Mapper.xml

最后要在配置文件中加载

 

注: 如果mapper方法返回单个pojo对象(非集合对象),代理对象内部通过selectOne查询数据库。

    如果mapper方法返回集合对象,代理对象内部通过selectList查询数据库。

 

明天做什么:看mysql数据库


好像有一点感觉了



返回列表 返回列表
评论

    分享到