springboot整合mybatis开发
1创建项目,在启动类上添加映射扫描注解
2导入依赖,添加mybatis generator自动生成代码插件
<!-- mybatis generator 自动生成代码插件 --> <plugin> <groupId>org.mybatis.generator</groupId> <artifactId>mybatis-generator-maven-plugin</artifactId> <version>1.3.2</version> <configuration> <configurationFile>${project.basedir}/src/main/resources/generator/generatorConfig.xml</configurationFile> <overwrite>true</overwrite> <verbose>true</verbose> </configuration> </plugin>
3创建generatorConfig.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> <!-- 数据库驱动:选择你的本地硬盘上面的数据库驱动包--> <classPathEntry location="D:\jar\mysql-connector-java-5.1.0-bin.jar"/> <context id="default" targetRuntime="MyBatis3"> <commentGenerator> <property name="suppressDate" value="true"/> <!-- 是否去除自动生成的注释 true:是 : false:否 --> <property name="suppressAllComments" value="true"/> </commentGenerator> <!--数据库链接URL,用户名、密码 --> <jdbcConnection driverClass="com.mysql.jdbc.Driver" connectionURL="jdbc:mysql://url:3306/database" userId="username" password="passwrord"> </jdbcConnection> <javaTypeResolver> <property name="forceBigDecimals" value="false"/> </javaTypeResolver> <!-- 生成模型的包名和位置--> <javaModelGenerator targetPackage="com.domain" targetProject="src/main/java"> <property name="enableSubPackages" value="true"/> <property name="trimStrings" value="true"/> </javaModelGenerator> <!-- 生成映射文件的包名和位置--> <sqlMapGenerator targetPackage="com.mapper" targetProject="src/main/resources"> <property name="enableSubPackages" value="true"/> </sqlMapGenerator> <!-- 生成DAO的包名和位置--> <javaClientGenerator type="XMLMAPPER" targetPackage="com.mapper" targetProject="src/main/java"> <property name="enableSubPackages" value="true"/> </javaClientGenerator> <!-- 要生成的表 tableName是数据库中的表名或视图名 domainObjectName是实体类名--> <!--<table tableName="invitationc" domainObjectName="Invitationc" enableCountByExample="false" enableUpdateByExample="false" enableDeleteByExample="false" enableSelectByExample="false" selectByExampleQueryId="false"></table>--> <!--<table tableName="user" domainObjectName="User" enableCountByExample="false" enableUpdateByExample="false" enableDeleteByExample="false" enableSelectByExample="false" selectByExampleQueryId="false"></table>--> <!--<table tableName="leaving_a_message" domainObjectName="LeavingAMessage" enableCountByExample="false" enableUpdateByExample="false" enableDeleteByExample="false" enableSelectByExample="false" selectByExampleQueryId="false"></table>--> <!--<table tableName="order_payment" domainObjectName="OrderPayment" enableCountByExample="false" enableUpdateByExample="false" enableDeleteByExample="false" enableSelectByExample="false" selectByExampleQueryId="false"></table>--> <!--<table tableName="sign_up" domainObjectName="SignUp" enableCountByExample="false" enableUpdateByExample="false" enableDeleteByExample="false" enableSelectByExample="false" selectByExampleQueryId="false"></table>--> <!--<table tableName="photo_order" domainObjectName="PhotoOrder" enableCountByExample="false" enableUpdateByExample="false" enableDeleteByExample="false" enableSelectByExample="false" selectByExampleQueryId="false"></table>--> <table tableName="commission_order" domainObjectName="CommissionOrder" enableCountByExample="false" enableUpdateByExample="false" enableDeleteByExample="false" enableSelectByExample="false" selectByExampleQueryId="false"></table> <!--<table tableName="invitationc" domainObjectName="Invitationc" enableCountByExample="false" enableUpdateByExample="false" enableDeleteByExample="false" enableSelectByExample="false" selectByExampleQueryId="false"></table>--> <!--<table tableName="dynamic" domainObjectName="Dynamic" enableCountByExample="false" enableUpdateByExample="false" enableDeleteByExample="false" enableSelectByExample="false" selectByExampleQueryId="false"></table>--> <!--<table tableName="sys_dict" domainObjectName="SysDict" enableCountByExample="false" enableUpdateByExample="false" enableDeleteByExample="false" enableSelectByExample="false" selectByExampleQueryId="false"></table>--> <!--<table tableName="tag" domainObjectName="Tag" enableCountByExample="false" enableUpdateByExample="false" enableDeleteByExample="false" enableSelectByExample="false" selectByExampleQueryId="false"></table>--> <!--<table tableName="attention" domainObjectName="Attention" enableCountByExample="false" enableUpdateByExample="false" enableDeleteByExample="false" enableSelectByExample="false" selectByExampleQueryId="false"></table>--> <!--<table tableName="tab_collection" domainObjectName="TabCollection" enableCountByExample="false" enableUpdateByExample="false" enableDeleteByExample="false" enableSelectByExample="false" selectByExampleQueryId="false"></table>--> <!--<table tableName="sign_in" domainObjectName="SignIn" enableCountByExample="false" enableUpdateByExample="false" enableDeleteByExample="false" enableSelectByExample="false" selectByExampleQueryId="false"></table>--> </context> </generatorConfiguration>
根据generatorConfig.xml文件生成的
模型:
映射文件:
DAO文件:
4、自定义查询语句
mapper
dao:
<?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd" > <mapper namespace="com.idailycar.mapper.TabCollectionMapper" > <resultMap id="BaseResultMap" type="com.idailycar.domain.TabCollection" > <id column="id" property="id" jdbcType="BIGINT" /> <result column="host_id" property="hostId" jdbcType="BIGINT" /> <result column="collector_id" property="collectorId" jdbcType="BIGINT" /> <result column="create_time" property="createTime" jdbcType="TIMESTAMP" /> <result column="update_tine" property="updateTine" jdbcType="TIMESTAMP" /> <result column="state" property="state" jdbcType="BIGINT" /> </resultMap> <sql id="Base_Column_List" > id, host_id, collector_id, create_time, update_tine, state </sql> <select id="selectByPrimaryKey" resultMap="BaseResultMap" parameterType="java.lang.Long" > select <include refid="Base_Column_List" /> from tab_collection where id = #{id,jdbcType=BIGINT} </select> <select id="findByCollectorIdAndHostId" resultType="com.idailycar.domain.TabCollection"> SELECT * from tab_collection where collector_id = #{collectorId} and host_id = #{hostId} and state = 16 </select> <select id="findByCollectorIdAndHostIdAndUNCollection" resultType="com.idailycar.domain.TabCollection"> SELECT * from tab_collection where collector_id = #{collectorId} and host_id = #{hostId} and state = 17 </select> <select id="findCollectionInfoByOpenId" resultType="com.idailycar.controller.response.DynamicInfo"> select d.id as dynamicId,u.id as userId,u.nickname as nickname,u.gender as gender,u.avatar_file as avatarFile,u.occupation as occupation,d.location as location,d.content as content,d.create_time as createTime from dynamic d INNER JOIN user u on d.creator_id = u.id where d.id in (select c.host_id from tab_collection c where c.collector_id = #{collectorId} and c.state = 16) </select> <delete id="deleteByPrimaryKey" parameterType="java.lang.Long" > delete from tab_collection where id = #{id,jdbcType=BIGINT} </delete> <insert id="insert" parameterType="com.idailycar.domain.TabCollection" > insert into tab_collection (id, host_id, collector_id, create_time, update_tine, state ) values (#{id,jdbcType=BIGINT}, #{hostId,jdbcType=BIGINT}, #{collectorId,jdbcType=BIGINT}, #{createTime,jdbcType=TIMESTAMP}, #{updateTine,jdbcType=TIMESTAMP}, #{state,jdbcType=BIGINT} ) </insert> <insert id="insertSelective" parameterType="com.idailycar.domain.TabCollection" > insert into tab_collection <trim prefix="(" suffix=")" suffixOverrides="," > <if test="id != null" > id, </if> <if test="hostId != null" > host_id, </if> <if test="collectorId != null" > collector_id, </if> <if test="createTime != null" > create_time, </if> <if test="updateTine != null" > update_tine, </if> <if test="state != null" > state, </if> </trim> <trim prefix="values (" suffix=")" suffixOverrides="," > <if test="id != null" > #{id,jdbcType=BIGINT}, </if> <if test="hostId != null" > #{hostId,jdbcType=BIGINT}, </if> <if test="collectorId != null" > #{collectorId,jdbcType=BIGINT}, </if> <if test="createTime != null" > #{createTime,jdbcType=TIMESTAMP}, </if> <if test="updateTine != null" > #{updateTine,jdbcType=TIMESTAMP}, </if> <if test="state != null" > #{state,jdbcType=BIGINT}, </if> </trim> </insert> <update id="updateByPrimaryKeySelective" parameterType="com.idailycar.domain.TabCollection" > update tab_collection <set > <if test="hostId != null" > host_id = #{hostId,jdbcType=BIGINT}, </if> <if test="collectorId != null" > collector_id = #{collectorId,jdbcType=BIGINT}, </if> <if test="createTime != null" > create_time = #{createTime,jdbcType=TIMESTAMP}, </if> <if test="updateTine != null" > update_tine = #{updateTine,jdbcType=TIMESTAMP}, </if> <if test="state != null" > state = #{state,jdbcType=BIGINT}, </if> </set> where id = #{id,jdbcType=BIGINT} </update> <update id="updateByPrimaryKey" parameterType="com.idailycar.domain.TabCollection" > update tab_collection set host_id = #{hostId,jdbcType=BIGINT}, collector_id = #{collectorId,jdbcType=BIGINT}, create_time = #{createTime,jdbcType=TIMESTAMP}, update_tine = #{updateTine,jdbcType=TIMESTAMP}, state = #{state,jdbcType=BIGINT} where id = #{id,jdbcType=BIGINT} </update> </mapper>
方便在Dao接口和Mappper XML文件之间进行切换,下载free mybatis plugins插件,安装步骤: