spring boot mybatis security 第二天

spring boot 2.0.6 配置 mybatis

第一步, 配置文件中加入扫描地址

一个是本地mapper地址,一个是数组类型,用来指定别名的,这里需要注意的,mybatis 有一个

mybatis.config-location=  这个东西,和 mapper-locations 特别像, 如果不配置mapper-locations的话会报错,告诉你扫描不到xml文件,当然,如果只配置了了这个东西不在启动类,加上@MapperScan("com.lengyue.fengfan.mapper") 也会告诉你找不到xml

第二步,配置mybatis 逆向生成 mybatis-generator.xml

接下来配置一个mybatis 你想生成的工具。。。。

pom里面添加依赖文件  tk.mybatis这个东西呢是个很实用的包 具体是干嘛的呢。。。

简单的说就是让你的mapper接口中自动继承了 mapper

继承他有什么好处呢,就是提供了这么多方法。。。可以让你快速的进行单表的crud ,以及模糊查询。。排序。。等等,

Example的用法呢也很简单这里进行简单介绍,我一般用到的也就是createCriteria这个方法,其他的大概看一下名字也就知道了。。

还有就是添加插件 

<plugin>
    <groupId>org.mybatis.generator</groupId>
    <artifactId>mybatis-generator-maven-plugin</artifactId>
    <version>1.3.5</version>
    <configuration>
        <!--允许移动生成的文件 -->
        <verbose>true</verbose>
        <!--是否允许被覆盖-->
        <overwrite>true</overwrite>
        <configurationFile>
            src/main/resources/mybatis-generator.xml
        </configurationFile>
    </configuration>
    <dependencies>
        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <version>5.1.44</version>
        </dependency>
        <dependency>
            <groupId>tk.mybatis</groupId>
            <artifactId>mapper</artifactId>
            <version>3.4.3</version>
        </dependency>
    </dependencies>
</plugin>

注意加粗的这两个依赖,因为mybatis-generator会让你指定 mysql-connector。。。driver 什么的 ,就是mysql 链接我记得是,加上这个之后就不需要再在本地指定了, tk.mybatis是为了后续的配置。。。

第三步  再recources 下创建mybatis-generator.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="test" targetRuntime="MyBatis3" defaultModelType="flat">
        <!-- 设置使用UTF-8编码格式 -->
        <property name="javaFileEncoding" value="UTF-8"/>
        <property name="beginningDelimiter" value="`"/>
        <property name="endingDelimiter" value="`"/>

        <plugin type="org.mybatis.generator.plugins.EqualsHashCodePlugin"/>
        <plugin type="org.mybatis.generator.plugins.SerializablePlugin"/>
        <plugin type="org.mybatis.generator.plugins.ToStringPlugin"/>
        <plugin type="tk.mybatis.mapper.generator.MapperPlugin">
            <property name="mappers" value="tk.mybatis.mapper.common.Mapper"/>
            <!-- caseSensitive默认false,当数据库表名区分大小写时,可以将该属性设置为true -->
            <property name="caseSensitive" value="false"/>
        </plugin>

        <commentGenerator>
            <!-- 这个元素用来去除指定生成的注释中是否包含生成的日期 false:表示保护 -->
            <!-- 如果生成日期,会造成即使修改一个字段,整个实体类所有属性都会发生变化,不利于版本控制,所以设置为true -->
            <property name="suppressDate" value="true" />
            <!-- 是否去除自动生成的注释 true:是 : false:否 -->
            <property name="suppressAllComments" value="false" />
            <!-- 此处为 true 时,生成的 Model 包含对应表字段注释 -->
            <property name="addRemarkComments" value="true"/>

        </commentGenerator>
        <!--数据库链接URL,用户名、密码 -->
        <jdbcConnection driverClass="com.mysql.jdbc.Driver"
                        connectionURL="jdbc:mysql://localhost:3306/laoy?useSSL=false"
                        userId="root"
                        password="yuehui">
        </jdbcConnection>
        <!-- java类型处理器
            用于处理DB中的类型到Java中的类型,默认使用JavaTypeResolverDefaultImpl;
            注意一点,默认会先尝试使用Integer,Long,Short等来对应DECIMAL和 NUMERIC数据类型;
        -->
        <javaTypeResolver>
            <!--
                true:使用BigDecimal对应DECIMAL和 NUMERIC数据类型
                false:默认,
                    scale>0;length>18:使用BigDecimal;
                    scale=0;length[10,18]:使用Long;
                    scale=0;length[5,9]:使用Integer;
                    scale=0;length<5:使用Short;
             -->
            <property name="forceBigDecimals" value="false" />
        </javaTypeResolver>
        <!-- 生成模型的包名和位置  javaModelGenerator是模型的生成信息,这里将指定这些Java model类的生成路径-->
        <!--targetPackage 包名 targetProject 文件路径-->
        <javaModelGenerator targetPackage="com.lengyue.fengfan.model"
                            targetProject="src/main/java">
            <property name="enableSubPackages" value="true" />
            <!-- 设置是否在getter方法中,对String类型字段调用trim()方法 -->
            <property name="trimStrings" value="true" />
        </javaModelGenerator>
        <!-- 生成映射文件的包名和位置 mapper 配置文件-->
        <!-- 生成SQL map的XML文件生成器,
        注意,在Mybatis3之后,我们可以使用mapper.xml文件+Mapper接口(或者不用mapper接口),
            或者只使用Mapper接口+Annotation,所以,如果 javaClientGenerator配置中配置了需要生成XML的话,
            这个元素就必须配置
        targetPackage/targetProject:同javaModelGenerator
     -->
        <sqlMapGenerator targetPackage="com.lengyue.fengfan.mapper"
                         targetProject="src/main/resources">
            <!-- 在targetPackage的基础上,根据数据库的schema再生成一层package,最终生成的类放在这个package下,默认为false -->
            <property name="enableSubPackages" value="true"/>
        </sqlMapGenerator>
        <!-- 生成DAO的包名和位置 -->
        <javaClientGenerator type="XMLMAPPER" targetPackage="com.lengyue.fengfan.mapper"
                             implementationPackage="src/main/java"
                             targetProject="src/main/java" >
            <property name="enableSubPackages" value="true" /> </javaClientGenerator>
        <!-- 要生成哪些表 -->
        <!--<table schema="public" tableName="table_name"/>-->
        <!-- oracle 使用 schema 对应 用户名称空间 mysql 使用 catalog 对应 数据库 -->
        <table tableName="%"
               enableCountByExample="false" enableUpdateByExample="false"
               enableDeleteByExample="false" enableSelectByExample="false">
            <property name="selectAllOrderByClause" value="true"/>
            <!-- 模型属性和表字段名字大小写一致 -->
            <property name="useActualColumnNames" value="false"/>
            <generatedKey column="id" sqlStatement="MySql" identity="true"/>

            <columnOverride column="create_time" jdbcType="TIMESTAMP" javaType="java.time.LocalDateTime"/>
            <columnOverride column="login_time" jdbcType="TIMESTAMP" javaType="java.time.LocalDateTime"/>
            <columnOverride column="reg_time" jdbcType="TIMESTAMP" javaType="java.time.LocalDateTime"/>
            <columnOverride column="day_time" jdbcType="TIMESTAMP" javaType="java.time.LocalDateTime"/>
            <columnOverride column="auth_time" jdbcType="TIMESTAMP" javaType="java.time.LocalDateTime"/>
            <columnOverride column="apply_time" jdbcType="TIMESTAMP" javaType="java.time.LocalDateTime"/>
            <columnOverride column="update_time" jdbcType="TIMESTAMP" javaType="java.time.LocalDateTime"/>
            <columnOverride column="get_time" jdbcType="TIMESTAMP" javaType="java.time.LocalDateTime"/>
            <columnOverride column="open_time" jdbcType="TIMESTAMP" javaType="java.time.LocalDateTime"/>
            <columnOverride column="recharge_time" jdbcType="TIMESTAMP" javaType="java.time.LocalDateTime"/>
            <columnOverride column="succ_time" jdbcType="TIMESTAMP" javaType="java.time.LocalDateTime"/>
            <columnOverride column="bind_time" jdbcType="TIMESTAMP" javaType="java.time.LocalDateTime"/>
        </table>
    </context>
</generatorConfiguration>

配置好之后呢。。。。

双击生成就好了。

然后自己写一个测试类。。。。

然后使用idea 自带的测试工具进行测试一下

请注意  如果这时候不把 pom 配置文件中 security 的包注释掉 它会报 401 然后提示你 

{"timestamp":"2018-10-20T06:29:57.888+0000","status":401,"error":"Unauthorized","message":"Unauthorized","path":"/user/test"}

注释掉之后就好了,在运行

好了 返回了想要的东西了

总结一下: 东西很简单,网上资料一大堆。但是注意细节。。。学渣我就出现了各种配置敲错的东西,比如说 recources 敲成recourse 然后就生成不了xml  mapper-locations 敲成 config-location。。。。然后就找不到扫描包。太想当然了。。。

猜你喜欢

转载自blog.csdn.net/qq_33500201/article/details/83212960