동적 SQL은 SQL의 동적 생성입니다.
태그 인 경우
요구 사항이 있다고 가정합니다. 사용자 이름을 쿼리 할 때 사용자 이름이 "admin"과 같지 않으면 123456의 비밀번호도 필요합니다.
데이터베이스의 데이터는 다음과 같습니다.
mybatisconfig.xml
<? xml version = "1.0"alcoding = "utf-8"?> <! doctype configurationpublic "-// mybatis.org//dtd config 3.0 // en" "http://mybatis.org/dtd/mybatis-3-config.dtd"> <configuration> <! -> <tafleaiases> <faintealias type = "jike.book.pojo.pojo.jikeuser"alias = "jikeUser"/> <faintealias type = "jike.book.pojo.author"alias = "author"/</</inventialiass> <환경 devalles = "development"> <transactionmanager 유형 = "jdbc"> </transactionManager> <dataSource type = "pooled"> <property name = "driver"value = "com.mysql.jdbc.jdbc.jdbc.jdbc.jdbc.jdbc.jdbc.jdbc.jdbc.driver"/> <property name = "url"value = "jdbc : mysql : // localhost : 3306/jikebook"/> name = "username" "username" "username" "username". value = "****"/> </datasource> </환경> </환경> <mappers> <Mapper Resource = "jike/book/map/jikeuser.xml"/> </mappers> </configuration>
jikeuser.xml
<? xml version = "1.0"encoding = "utf-8"?> <! doctype mapperpublic "-// mybatis.org//dtd mapper 3.0 // en" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"<mapper namespace = "/"select = "selectS" resulttype = "jikeUser"parametertype = "jikeUser"> jikebook.jikeUserWhere에서 * select * select * jikeUserWhere 1 = 1 <if test = "username! = 'admin'"> 및 password =#{password} </if> </select> </mapper>테스트 클래스 :
package jike.book.test; import jike.book.pojo.jikeuser; import org.apache.ibatis.io.resources; import org.apache.ibatis.session.sqlsession; import org.apache.ibatis.session.sqlsession actory; import org.apache.ibatis.sqlsession import; org.apache.ibatis.session.sqlsessionfactorybuilder; import java.io.ioexception; import java.io.reader; import java.util.list;/*** datetime : 2016/9/6 13 : 36* 기능 :* 아이디어 :*/public class ql {public static void main (문자열 [] // resource = "jike/book/map/mybatisconfig.xml"; reader reader = null; sqlsession session; try {reader = resource.getResourceAsReader (resource);} catch (ioexception e) {e.printstackTrace ();} sqlsessionsactory sqlmapper = new sqlsessionfactoryBuilder () 빌드 (reader); session = sqlmapper.opensession (); jikeUser jikeUser = new jikeUser (); jikeUser.setPassword ( "123456"); list <jikeUser> userList = session.selectList ( "selectSql", jikeUser); {system.out.println ( "username :"+user.getusername ());} session.close ();}}실행 결과는 다음과 같습니다.
태그를 선택하십시오
현재 요구 사항이 있다고 가정하십시오. 사용자 이름이 비어 있지 않은 경우 사용자 이름이 비어 있지 않으면 사용자 이름 조건을 추가하십시오. ID가 비어 있지 않으면 ID 조건을 추가하고 그렇지 않으면 비밀번호를 비워지면 객관식을 선택하십시오.
mybatisconfig.xml은 변경되지 않습니다.
<select id = "selectJikeUserChoose"resultType = "jikeUser"parameterType = "jikeUser"> select * jikeUser에서 선택 * where 1 = 1 <선택> <w test = "username! = null"> 및 #{username} </when> <id = 0 "> 및 id = #<<<el} <<el <em = <red = <eloge> 및 id = <els = <sele> <rediper </when> < NULL </looth> </선택> </select>테스트 클래스 : 사용자 이름이 비어 있지 않다고 가정합니다.
package jike.book.test; import jike.book.pojo.jikeuser; import org.apache.ibatis.io.resources; import org.apache.ibatis.session.sqlsession; import org.apache.ibatis.session.sqlsession actory; import org.apache.ibatis.sqlsession import; org.apache.ibatis.session.sqlsessionfactorybuilder; import java.io.ioexception; import java.io.reader; import java.util.list;/*** datetime : 2016/9/6 13 : 36* 기능 :* 아이디어 :*/public class ql {public static void main (문자열 [] // resource = "jike/book/map/mybatisconfig.xml"; reader reader = null; sqlsession session; try {reader = resource.getResourceAsReader (resource);} catch (ioexception e) {e.printstackTrace ();} sqlsessionsactory sqlmapper = new sqlsessionFactoryBuilder () 빌드 (reader); session = sqlmapper.opensession (); jikeUser jikeUser = new jikeUser (); jikeUser.setUserName ( "Yen"); List <JikeUser> userlist = session.selectList ( "selectJikeUserChoose", jikeuser); {system.out.println ( "username :"+user.getusername ());} session.close ();}}결과는 다음과 같습니다.
사용자 이름 조건이 설정되지 않았다고 가정하면, 즉 JikeUser.setusername ( "Yen"); :
마커 위치, 마커를 설정하십시오
선택의 위의 쿼리는 서브 연결 조건이 작성되었는지 여부를 결정할 수 없으므로 1 = 1을 추가합니다. 그리고 우리가 추가 해야하는지 판단 할 수있는 곳.
<select id = "selectJikeUserWhere"resultType = "jikeUser"parameterType = "jikeUser"> jikeUser에서 선택 * <where> <if test = "username! = null"> 및 #{username} </if> < "id! = null"> 및 id = #< #< #< #< #< #< #<</select>.Set Tag Intelligent 할당이 자동으로 초과를 제거합니다 ","
<update id = "updatejikeUserSet"ParameterType = "jikeUser"> 업데이트 jikeUser <set> <set> <if test = "username! = null"> username =#{username}, </if> < "password! = null"> password =#{password}, </if> </set> {id =#</iD}작동 전 데이터 :
작동하다:
작동 결과 :
<update id = "updateUsertrim"ParameterType = "jikeUser"> update jikeUser <trim prefix = "set"set "set"set ""subsixoverrides = ","where id = #{id} "> <if test ="username! = null and username! = '' ' ""> username = #{username}, <nul padmpact! = null! "> password =#{password}, </if> </trim> </update>foreach 태그
일반적으로 루프 쿼리 또는 루프 할당에 사용됩니다
<select id = "selectJikeUserForeach"resultType = "jikeUser"parameterType = "list"> select * from jikeUser <where> in in <foreach item = "index ="index "collection ="list "open ="( "close =") ">#{item} </feeach> </select> </select>시험:
위의 내용은 편집자가 소개 한 Mybatis Dynamic SQL If, 선택, 위치, 설정, 트림 및 foreach 태그 예제에 대한 자세한 설명입니다. 나는 그것이 당신에게 도움이되기를 바랍니다. 궁금한 점이 있으면 메시지를 남겨 주시면 편집자가 제 시간에 답장을 드리겠습니다. Wulin.com 웹 사이트를 지원해 주셔서 대단히 감사합니다!