`
aqbbsxiao
  • 浏览: 45281 次
  • 性别: Icon_minigender_1
  • 来自: 武汉
社区版块
存档分类
最新评论

Mybatis 模糊查询

 
阅读更多
今天需要用到mybatis 3.0.6的模糊查询, google了一下,很多人问问题,但是回答清楚的确没发现,以下是我项目中遇到问题的总结:
1. Mybatis sql语句的打印问题。 Mybatis本身集成了log4j,所以我们只需要在log4j的配置文件中改改就能让它打印出sql信息。在log4j.properties文件中加上:
log4j.logger.java.sql=debug,stdout

2. 模糊查询的问题。在Mapper文件中加上,
   <select id="selectByExampleLike" parameterType="com.CLIENT" resultMap="BaseResultMap">
    select
    CLIENT_ID, CLIENT_NAME, CLIENT_CODE, CLIENT_LNAME, CLIENT_FNAME, CLIENT_EMAIL, CLIENT_PASS, 
    CLIENT_ADDRESS
    from CLIENT WHERE CLIENT_ID != ''
    <if test="clientId != null">
   		AND CLIENT_ID like CONCAT('%','${clientId}','%' )
    </if>
    <if test="clientName != null">
   		AND CLIENT_NAME like CONCAT('%','${clientName}','%' )
    </if>
    <if test="clientCode != null">
        AND CLIENT_CODE like CONCAT('%','${clientCode}','%' )
    </if>
    <if test="clientLname != null">
      AND CLIENT_LNAME like CONCAT('%','${clientLname}','%' )
    </if>
    <if test="clientFname != null">
      AND CLIENT_FNAME like CONCAT('%','${clientFname}','%' )
    </if>
    <if test="clientEmail != null">
      AND CLIENT_EMAIL like CONCAT('%','${clientEmail}','%' )
    </if>
    <if test="clientPass != null">
      AND CLIENT_PASS like CONCAT('%','${clientPass}','%' )
    </if>
    <if test="clientAddress != null">
      AND CLIENT_ADDRESS like CONCAT('%','${clientAddress}','%' )
    </if>
  </select>


然后可以通过测试:
public class CLIENTServiceImplTest {

	public static void main(String[] args) {
		SqlSessionFactory factory = null;
		try {
			factory = new SqlSessionFactoryBuilder().build(Resources.getResourceAsReader("Configuration.xml"));
		} catch (IOException e) {
			e.printStackTrace();
		}
		SqlSession sqlSession = factory.openSession();
		CLIENT example = new CLIENT();
		example.setClientId(1);
		example.setStart(2);
		example.setLimit(3);
		example.setOrderByClause("CLIENT_ID ASC");
		List<CLIENT> list = sqlSession.getMapper(CLIENTMapper.class).selectByExampleLike(example);
		for(CLIENT c : list){
			System.out.println(c.getClientId()+"  "+c.getClientName());
		}
		System.out.println("------------------- list.size: " + list.size());
		for(int i=0;i<10;i++){
//			list = sqlSession.getMapper(CLIENTMapper.class).selectByExample(example);
		}
	}

}


Configuration.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>
	<environments default="myexample">
		<environment id="myexample">
			<transactionManager type="JDBC" />
			<dataSource type="POOLED">
				<property name="driver" value="com.mysql.jdbc.Driver" />
				<property name="url" value="jdbc:mysql://localhost:3306/test" />
				<property name="username" value="root" />
				<property name="password" value="root" />
			</dataSource>
		</environment>
	</environments>
	<mappers>
		<mapper resource="coc/mg/dao/CLIENTMapper.xml" />
	</mappers>
</configuration>


好,模糊查询搞定!
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics