22、(知識篇)Mybatis02使用(動態SQL/模糊查詢/log4j)

/**

* Mybatis 動態SQL/模糊查詢/log4j

* 1、動態sql,可以在mapper中添加<if/> <when/>等標籤,做邏輯判斷做動態Sql

* 2、模糊查詢 

* 方法1:and userName like '%${userName}%'   用${...} 

* 方法2:and userName like CONCAT(CONCAT('%', #{userName}), '%');  CONCAT(CONCAT('%', #{xxx}), '%')

* 3、log4j:添加log4j相關包,加入xml/properties配置文件即可

* @param args

*/


測試類:

package com.mybatis.test;

import java.io.InputStream;
import java.util.List;

import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.session.SqlSessionFactoryBuilder;

import com.mybatis.vo.User;

public class Test {
	
	/**
	 * Mybatis 動態SQL/模糊查詢/log4j
	 * 
	 * 1、動態sql,可以在mapper中添加<if/> <when/>等標籤,做邏輯判斷做動態Sql
	 * 2、模糊查詢 
	 * 		方法1:and userName like '%${userName}%'   用${...} 
	 * 		方法2:and userName like CONCAT(CONCAT('%', #{userName}), '%');  CONCAT(CONCAT('%', #{xxx}), '%')
	 * 3、log4j:添加log4j相關包,加入xml/properties配置文件即可
	 * 
	 * @param args
	 */
	
	
	public static void main(String[] args) {
		
		
		InputStream is = Test.class.getClassLoader().getResourceAsStream("mybatis-config.xml");
		
		System.out.println(is);
		
		SqlSessionFactory sessionFactory =  new SqlSessionFactoryBuilder().build(is);
		
		System.out.println(sessionFactory);
		
		SqlSession session = sessionFactory.openSession();
		
		System.out.println(session);
		
		
		String userNameSpace = "com.mybatis.vo.User";
		/*一對一嵌套結果*/
		String getUserByCondition = userNameSpace+".getUserByCondition";
		
		List<User> users = session.selectList(getUserByCondition,new User(1, "Tester2", 1));
		System.out.println(users);

		
	}
}
User類:
package com.mybatis.vo;

public class User {
	private int id;
	private String userName;
	private int sex;

	public User() {
		super();
		// TODO Auto-generated constructor stub
	}

	public User(int id, String userName, int sex) {
		super();
		this.id = id;
		this.userName = userName;
		this.sex = sex;
	}

	public int getId() {
		return id;
	}

	public void setId(int id) {
		this.id = id;
	}

	public String getUserName() {
		return userName;
	}

	public void setUserName(String userName) {
		this.userName = userName;
	}

	public int getSex() {
		return sex;
	}

	public void setSex(int sex) {
		this.sex = sex;
	}

	@Override
	public String toString() {
		return "User [id=" + id + ", userName=" + userName + ", sex=" + sex + "]";
	}


}

userMapper.xml

<?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.mybatis.vo.User">
	<select id="getUserByCondition" resultType="User" parameterType="User">
		select * from User where 1=1 
		<if test="userName != null and userName != '' ">
			and userName like '%${userName}%'
			<!-- and userName like CONCAT(CONCAT('%', #{userName}), '%'); -->
		</if>
		<choose>
			<when test="sex != 0">
				and sex = #{sex}
			</when>
			<otherwise></otherwise>
		</choose>
	</select>
	
</mapper>

log4j.xml

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE log4j:configuration SYSTEM "log4j.dtd">
<log4j:configuration xmlns:log4j="http://jakarta.apache.org/log4j/" debug="false">
 <appender name="CONSOLE" class="org.apache.log4j.ConsoleAppender">
  <layout class="org.apache.log4j.PatternLayout">
   <param name="ConversionPattern" value="[%d{dd/MM/yy hh:mm:ss:sss z}] %5p %c{2}: %m%n" />
  </layout>
 </appender>
 <appender name="FILE" class="org.apache.log4j.RollingFileAppender">
  <param name="file" value="${user.home}/foss-framework.log" />
  <param name="append" value="true" />
  <param name="maxFileSize" value="10MB" />
  <param name="maxBackupIndex" value="100" />
  <layout class="org.apache.log4j.PatternLayout">
   <param name="ConversionPattern" value="%d [%t] %-5p %C{6} (%F:%L) - %m%n" />
  </layout>
 </appender>

 <!-- 下面是打印mybatis語句的配置-->
 <logger name="com.ibatis" additivity="true"> 
  <level value="DEBUG" /> 
 </logger> 
 <logger name="java.sql.Connection" additivity="true"> 
  <level value="DEBUG" /> 
 </logger> 
 <logger name="java.sql.Statement" additivity="true"> 
  <level value="DEBUG" /> 
 </logger> 
 <logger name="java.sql.PreparedStatement" additivity="true"> 
  <level value="DEBUG" /> 
 </logger> 
 <logger name="java.sql.ResultSet" additivity="true"> 
  <level value="DEBUG" /> 
 </logger> 
 
 <root>
  <level value="DEBUG" />
  <appender-ref ref="CONSOLE" />
  <appender-ref ref="FILE" />
 </root>
</log4j:configuration>

mybatis-config.xml

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE configuration PUBLIC "-//mybatis.org//DTD Config 3.0//EN" "http://mybatis.org/dtd/mybatis-3-config.dtd">
<configuration>
	<typeAliases>
		<typeAlias type="com.mybatis.vo.User" alias="User" />
	</typeAliases>
	<environments default="development">
		<environment id="development">
			<transactionManager type="JDBC" />
			<dataSource type="POOLED">
				<property name="driver" value="com.mysql.jdbc.Driver" />
				<property name="url" value="jdbc:mysql://192.168.1.92:3306/test" />
				<property name="username" value="root" />
				<property name="password" value="root" />
			</dataSource>
		</environment>
	</environments>
	<mappers>
		<mapper resource="com/mybatis/vo/userMapper.xml" />
	</mappers>
</configuration>


發佈了52 篇原創文章 · 獲贊 4 · 訪問量 3萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章