Mybatis 執行傳入的sql語句
阿新 • • 發佈:2018-12-25
在專案開發中,需要根據具體業務邏輯動態拼接sql語句,那麼我們可以將動態拼接好的sql語句傳入mybatis中,這樣便能最大限度將sql掌握在自己手裡。
1.構造實體類(此處省略get、set方法)
package com.dnf.entity;
public class Staff {
private long id;
private String userName;
private String password;
}
2.構造介面類
package com.dnf.dao;
import java.util.List;
import com.dnf.entity.Staff;
/**
* @author Marco
*
*/
public interface StaffDao {
List<Staff> query4staff(String sql);
}
3.配置mapper檔案
<?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.dnf.dao.StaffDao" >
<!-- 目的:為dao介面方法提供sql語句配置 -->
<select id="query4staff" parameterType="String" resultType="Staff">
${value}
</select>
</mapper>
以上三步配置好了對應的檔案,下面進行測試
1.建立Base測試類將spring和junit整合
package com.dnf;
import org.junit.runner.RunWith;
import org.springframework.test.context.ContextConfiguration;
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
/**
* 配置spring和junit整合,junit啟動時載入springIOC容器 spring-test,junit
*/
@RunWith(SpringJUnit4ClassRunner.class)
// 告訴junit spring配置檔案
@ContextConfiguration({ "classpath:spring/spring-dao.xml", "classpath:spring/spring-service.xml" })
public class BaseTest {
}
2.建立StaffTest的測試類
package com.dnf.dao;
import java.util.List;
import org.junit.Test;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import com.dnf.BaseTest;
import com.dnf.entity.Staff;
public class StaffTest extends BaseTest{
private Logger logger = LoggerFactory.getLogger(this.getClass());
@Autowired
private StaffDao dao;
@Test
public void query4staff(){
String sql = "SELECT id,user_name,password FROM staffs";
List<Staff> list = dao.query4staff(sql);
for(Staff staff : list){
logger.info(staff.toString());
}
}
}
執行junit測試
至此,配置完成。