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。。。。然后就找不到扫描包。太想当然了。。。