简述网站建设的步骤,济南资海网站建设公司,专业seo优化费用,苏州园区网站建设5 mybatis开发dao的方法 5.1 SqlSession使用范围 5.1.1 SqlSessionFactoryBuilder 通过SqlSessionFactoryBuilder创建会话工厂SqlSessionFactory 将SqlSessionFactoryBuilder当成一个工具类使用即可#xff0c;不需要使用单例管理SqlSessionFactoryBuilder。 在需要创建SqlSes…5 mybatis开发dao的方法 5.1 SqlSession使用范围 5.1.1 SqlSessionFactoryBuilder 通过SqlSessionFactoryBuilder创建会话工厂SqlSessionFactory 将SqlSessionFactoryBuilder当成一个工具类使用即可不需要使用单例管理SqlSessionFactoryBuilder。 在需要创建SqlSessionFactory时候只需要new一次SqlSessionFactoryBuilder即可。 5.1.2 SqlSessionFactory 通过SqlSessionFactory创建SqlSession使用单例模式管理sqlSessionFactory工厂一旦创建使用一个实例。 将来mybatis和spring整合后使用单例模式管理sqlSessionFactory。 5.1.3 SqlSession SqlSession是一个面向用户程序员的接口。 SqlSession中提供了很多操作数据库的方法如selectOne(返回单个对象)、selectList返回单个或多个对象、。 SqlSession是线程不安全的在SqlSesion实现类中除了有接口中的方法操作数据库的方法还有数据域属性。 【struts中的action接收参数需要在struts的类中通过成员变量定义来接收参数如果用户提交了username属性username就是一个数据域它放在成员变量里面就不可能用单例了因为有可能多线程并发请求的话每个线程共用了它们成员变量的值这样导致我们访问冲突所以说是不安全的struts是多例管理的】 SqlSession最佳应用场合在方法体内定义成局部变量使用。 5.2 原始dao开发方法程序员需要写dao接口和dao实现类 5.2.1 思路 程序员需要写dao接口和dao实现类。 需要向dao实现类中注入SqlSessionFactory在方法体内通过SqlSessionFactory创建SqlSession 5.2.2 dao接口 5.2.3 dao接口实现类 import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;import cn.itcast.mybatis.po.User;
/*** dao接口实现类* author yejin*/
public class UserDaoImpl implements UserDao{//需要向dao实现类中注入SqlSessionFactory//这里通过构造方法注入private SqlSessionFactory sqlSessionFactory;public UserDaoImpl(SqlSessionFactory sqlSessionFactory) {this.sqlSessionFactory sqlSessionFactory;} Overridepublic User findUserById(int id) {SqlSession sqlSession sqlSessionFactory.openSession();User user sqlSession.selectOne(test.findUserById, id);//释放资源sqlSession.close();return user;}Overridepublic void insertUser(User user) {SqlSession sqlSession sqlSessionFactory.openSession();//执行插入操作sqlSession.insert(test.insertUser, user);//提交事务sqlSession.commit();//释放资源sqlSession.close();}Overridepublic void deleteUser(int id) {SqlSession sqlSession sqlSessionFactory.openSession();//执行插入操作sqlSession.delete(test.deleteUser, id);//提交事务sqlSession.commit();//释放资源sqlSession.close();}
} 5.2.4 测试代码 5.2.5 总结原始 dao开发问题 1、dao接口实现类方法中存在大量模板方法设想能否将这些代码提取出来大大减轻程序员的工作量。 2、调用sqlsession方法时将statement的id硬编码了 3、调用sqlsession方法时传入的变量由于sqlsession方法使用泛型即使变量类型传入错误在编译阶段也不报错不利于程序员开发。转载于:https://www.cnblogs.com/justdoitba/p/8040340.html