创建maven项目,将该配置文件运行即可生成 sql 语句
<?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"><!-- mybatis 自动生成sql代码 --><generatorconfiguration&g西南交通大学分数线t; <!-- 导入jar包(路径) --> <classpathentry location="e:\courware\mysql\mysql-connector-java-5.1.26-bin.jar" /> <!-- 设置生成代码的规则 targetruntime 开发环境使用mybatis3的版本 --> <context id="db2tables" targetruntime="mybatis3"> <plugin type="org.mybatis.generator.plugins.rowboundsplugin"></plugin> <commentgenerator> <!-- 这个元素用来去除指定生成的注释中是否包含生成的日期 fal:表示保护 --> <!-- 如果生成日期,会造成即使修改一个字段,整个实体类所有属性都会发生变化,不利于版本控制,所以设置为true --> <property name="suppressdate" value="true" /> <!-- 是否去除自动生成的注释 true:是 : fal:否 --> <property name="suppressallcomments" value="fal" /> </commentgenerator> <!-- 连接数据库的四要素 --> <jdbcconnection driverclass="com.mysql.jdbc.driver" connectionurl="jdbc:mysql://localhost:3306/ur" urid="root" password="root"> </jdbcconnection> <!-- 该属性用于指定mybatis生成器是否应该强制使用java.math。小数点和数字域的bigdecimal --> <javatyperesolver> <property name="forcebigdecimals" value="fal" /> </javatyperesolver> <!-- 定义实体类 bean --> <javamodelgenerator targetpackage="en.et.entity" targetproject="src/main/java"> <property name="enablesubpackages" value="true" /> <property name="trimstrings" value="true" /> </javamodelgenerator> <!-- 接口映射的注解 或者xml文件路径 --> <sqlmapgenerator targetpackage="cn.et.resource" targetproject="src/main/java"> <property name="enablesubpackages" value="true" /> </sqlmapgenerator> <!-- 生成的接口所在的位置 type="xml 或者 注解" --> <javaclientgenerator type="annotatedmapper" targetpackage="en.et.dao" targetproject="src/main/java"> <property name="enablesubpackages" value="true" /> </javaclientgenerator> <!-- 告诉mbg 需要生成代码的数据库的表 --> <table tablename="emp"></table> </context></generatorconfiguration>
mybatis的动态sql语句主要解决的问题是不同条件sql语句的拼接。
例如:根据用户信息,查询用户列表,当不知道根据的是用户的什么信息时,写出查询的sql语句是有一定困难的,而动态sql语句主要解决的就是此类问题。
在持久层接口定义方法
/** * 根据用户信息,查询用户列表 * @param ur * @return */ list<ur> findbyur(ur ur);
编写持久层接口对应的映射文件
<!-- 根据用户信息,查询用户列表 --> <lect id="findbyur" resulttype="ur" parametertype="ur"> lect *from ur where 1 = 1 <if test="id != 0"> and id = #{id} </if> <if test="urname != null and urname != '' "> and urname like #{urname} </if> <if test="birthday != null"> and birthday = #{birthday} </if> <if test="x != null"> and x = #{x} </if> <if tes浙江宁波海警学院t="address != null"> and address = #{address} </if> </lect>
编写测试方法
/** * 根据用户信息,查询用户列表 */ @test public void testfindbyur() { ur ur = new ur(); ur.turname("%王%"); list<ur> urs = urdao.findbyur(ur); for (ur u : urs) { system.out.println(u); } }
为了简化上面 where 1=1 的条件拼接,我们可以采用标签来简化开发,因此修改持久层映射文件
<!-- 根据用户信息,查询用户列表 --> <lect id="findbyur" resultty北京咳pe="ur" parametertype="ur"> lect *from ur <where> <if test="id != 0"> and id = #{id} </if> <if test="urname != null and urname != '' "> and urname like #{urname} </if> <if test="birthday != null"> and birthday = #{birthday} </if> <if test="x != null"> and x = #{x} </if> <if test="address != null"> and address = #{address} </if> </where> </lect>
froeach是对一个集合进行遍历,通常在构建in条件语句的时候应用
例如:根据一个用户id集合查询用户。
对id集合进行封装,加入到list集合
编写持久层接口方法
/** * 根据id集合查询用户 * @param queryur * @return */ list<ur> findinids(queryur queryur);
编写持久层接口映射文件
<!--根据id集合查询用户 --> <lect id="findinids" resulttype="ur" parametertype="int"> lect *from ur <where> <if test="ids != null and ids.size() > 0"> <!-- foreach:用于遍历集合 collection:代表要遍历的集合 open:代表语句的开始部分 clo:代表语句的结束部分 一面五星红旗课文 item:代表需要遍历的集合的每个元素 sperator:代表分隔符 --> <foreach collection="ids" open="id in (" clo=")" item="uid" parator=","> #{uid} </foreach> </if> </where> </lect>
编写测试方法
/** * 根据id集合查询用户 */ @test public void testfindinids() { queryur queryur = new queryur(); 网络营销策略分析 list<integer> ids = new arraylist<integer>(); ids.add(41); ids.add(43); ids.add(45); queryur.tids(ids); list<ur> urs = urdao.findinids(queryur); for (ur ur : urs) { system.out.println(ur); } }
在映射文件中,可以将重复的sql语句通过sql标签提取出来,使用include标签引用即可,已达到sql重用的效果。如下所示:
<!--抽取重复的语句代码片段--> <sql id="querysql"> lect *from ur </sql> <lect id="findall" resulttype="ur" > <include refid="querysql"></include> </lect> <!--根据id查询用户--> <lect id="findbyid" resulttype="ur" parametertype="int"> <include refid="querysql"></include> where id= #{urid}; </lect>
以上为个人经验,希望能给大家一个参考,也希望大家多多支持www.887551.com。
本文发布于:2023-04-04 02:58:43,感谢您对本站的认可!
本文链接:https://www.wtabcd.cn/fanwen/zuowen/2402cfcad3d5c523e685b234bdaaf18f.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文word下载地址:Mybatis如何自动生成sql语句.doc
本文 PDF 下载地址:Mybatis如何自动生成sql语句.pdf
留言与评论(共有 0 条评论) |