MyBatis 的前身就是 iBatis ,是一个数据持久层(ORM)框架,与Hibernate差不多,但不同之处肯定是有的,在此不进行讨论。直奔主题吧:
首先你得引入jar包,我所只用的jar包为:mybatis-3.0.6.jar
然后创建两个配置文件放入“src”下,具体代码如下:
DBMapper.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="cas.User">
<select id="getSsoUser" parameterType="edu.yale.its.tp.cas.auth.provider.SsoUser" resultType="String">
<![CDATA[
SELECT count(1) as cnt FROM ssouser WHERE username=#{username} and password=#{password}
]]>
</select>
</mapper>
parameterType表示传进来的参数类型,我这里表示的是传进来的是一个JavaBean,然后里面的属性名称与大括号中的名称相对应,这样的话即可获得JavaBean中的值啦!
DBConfiguration.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="MYSQLDATABASE">
<environment id="MYSQLDATABASE">
<transactionManager type="JDBC" />
<dataSource type="POOLED">
<property name="username" value="root" />
<property name="password" value="root" />
<property name="driver" value="org.apache.derby.jdbc.ClientDriver" />
<property name="url" value="jdbc:derby://localhost:1527/casdb" />
<property name="poolMaximumActiveConnections" value="1000"/>
<property name="poolMaximumIdleConnections" value="100"/>
</dataSource>
</environment>
</environments>
<mappers>
<mapper resource="DBMapper.xml" />
</mappers>
</configuration>
相对应的Java代码:
package edu.yale.its.tp.cas.auth.provider;
import java.io.IOException;
import java.io.Reader;
import java.util.ArrayList;
import org.apache.ibatis.io.Resources;
import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.session.SqlSessionFactoryBuilder;
/**
* 用户名与密码验证
*/
public class DataHandler extends WatchfulPasswordHandler {
public static String DB_CONFIG_FILE = "DBConfiguration.xml";
public static SqlSessionFactory sqlSessionFactory = null;
public boolean authenticate(javax.servlet.ServletRequest request,
String username, String password) {
SsoUser user = new SsoUser();
user.setUsername(username);
user.setPassword(password);
Reader reader;
if (sqlSessionFactory == null) {
try {
reader = Resources.getResourceAsReader(DB_CONFIG_FILE);
sqlSessionFactory = new SqlSessionFactoryBuilder().build(reader);
} catch (IOException e1) {
sqlSessionFactory = null;
}
}
SqlSession sqlSession = sqlSessionFactory.openSession(true);
String cnt = (String)sqlSession.selectOne("getSsoUser", user);
if("1".equals(cnt)){
return true;
}
sqlSession.close();
return false;
}
}
OK,大功告成,其他的扩展信息有时间在发布吧!