第3.122课 上课 E购通电子商务平台:整合MyBatis框架, E购通电子商务…
3_122

E购通电子商务平台:整合MyBatis框架
构建SpringMVC框架

导入MyBatis对应的jar包


需要连接数据库,所以还需要导入对应数据库的驱动包,我们这里需要连接的是MySQL数据库,所以导入MySQL的驱动包
在src目录下创建mybatis_config.xml文件


创建xxxMapper.xml文件


编辑xxxMapper.xml文件


使用MyBatis API访问数据库

BaseDao
package com.yayadou.ebuy.dao;
import java.io.IOException;
import java.io.InputStream;
import org.apache.ibatis.io.Resources;
import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.session.SqlSessionFactoryBuilder;
/**
* 获取SqlSession和关闭SqlSession的基础类
*
* @author Administrator
*
*/
public class BaseDao {
private static SqlSessionFactory factory;
private static ThreadLocal<SqlSession> threadLocal = new ThreadLocal<>();
// 通过静态块初始化SqlSessionFactory,因为静态块只会在类第一次加载的时候执行
static {
try(
//自动资源释放
InputStream in = Resources.getResourceAsStream("Mybatis_config.xml");
){
factory = new SqlSessionFactoryBuilder().build(in);
} catch (IOException e) {
System.err.println("数据库连接工厂获取失败!"+e.getMessage());
}
}
/**
* 获取SqlSession对象
*
* @return SqlSession
*/
public static SqlSession getSqlSession() {
// 通过ThreadLocal获取sqlSession对象
SqlSession sqlSession = threadLocal.get();
if (sqlSession == null) {
// 获取一个SqlSession对象
sqlSession = factory.openSession();
// 并存储到ThreadLocal对象中,通过ThreadLocal对象可以方便进行线程同步管理
threadLocal.set(sqlSession);
}
return sqlSession;
}
/**
* 关闭SqlSession对象
*/
public static void closeSqlSession() {
SqlSession sqlSession = threadLocal.get();
if (sqlSession != null) {
sqlSession.close();
}
threadLocal.remove();
}
}
XxxDao
package com.yayadou.ebuy.dao;
import org.apache.ibatis.session.SqlSession;
import com.yayadou.ebuy.dto.User;
/**
* 专门针对User对象的数据库操作
*
* @author Administrator
*
*/
public class UserDao extends BaseDao {
/**
* 通过用户名和密码查询用户名(登录)
* @param u
* @return
*/
public User getUserByUserIdAndByPassword(User u){
SqlSession session = getSqlSession();
User user = session.selectOne("com.yayadou.ebuy.mapper.UserMapper.getUserByUserIdAndByPassword", u);
closeSqlSession();
return user;
}
}
浙公网安备 33010602011771号