ImageVerifierCode 换一换
格式:PPTX , 页数:20 ,大小:127.12KB ,
文档编号:7669667      下载积分:15 文币
快捷下载
登录下载
邮箱/手机:
温馨提示:
系统将以此处填写的邮箱或者手机号生成账号和密码,方便再次下载。 如填写123,账号和密码都是123。
支付方式: 支付宝    微信支付   
验证码:   换一换

优惠套餐
 

温馨提示:若手机下载失败,请复制以下地址【https://www.163wenku.com/d-7669667.html】到电脑浏览器->登陆(账号密码均为手机号或邮箱;不要扫码登陆)->重新下载(不再收费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录  
下载须知

1: 试题类文档的标题没说有答案,则无答案;主观题也可能无答案。PPT的音视频可能无法播放。 请谨慎下单,一旦售出,概不退换。
2: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
3: 本文为用户(momomo)主动上传,所有收益归该用户。163文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知163文库(点击联系客服),我们立即给予删除!。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

1,本文(《基于新信息技术的Java-EE应用开发实训》课件第十章.pptx)为本站会员(momomo)主动上传,163文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。
2,用户下载本文档,所消耗的文币(积分)将全额增加到上传者的账号。
3, 若此文所含内容侵犯了您的版权或隐私,请立即通知163文库(发送邮件至3464097650@qq.com或直接QQ联系客服),我们立即给予删除!

《基于新信息技术的Java-EE应用开发实训》课件第十章.pptx

1、第10章 MyBatis DAO开发10.1 SqlSession的使用范围10.2 原始DAO开发方法10.3 Mapper接口开发方法第10章 MyBatis DAO开发10.1 SqlSession的使用范围第10章 MyBatis DAO开发10.1.1 SqlSessionFactoryBuilderSqlSessionFactoryBuilder用于创建SqlSessionFacoty,一旦SqlSessionFacoty创建完成就不需要SqlSessionFactoryBuilder了。此处可将SqlSessionFactoryBuilder当成一个工具类使用,其最佳使用范围是方

2、法范围即方法体内局部变量。10.1.2 SqlSessionFactorySqlSessionFactory是一个接口,接口中定义了openSession的不同重载方法,SqlSessionFactory的最佳使用范围是整个应用运行期间,一旦创建后可以重复使用,通常以单例模式管理SqlSessionFactory。10.1.3 SqlSessionSqlSession是一个面向用户的接口,定义了数据库操作,默认使用DefaultSqlSession实现类。执行过程如下:加载数据源等配置信息。Environment environment=configuration.getEnvironment

3、();创建数据库链接。第10章 MyBatis DAO开发 创建事务对象。创建Executor,SqlSession所有操作都是通过Executor完成。MyBatis源码如下:if(ExecutorType.BATCH=executorType)executor=newBatchExecutor(this,transaction);elseif(ExecutorType.REUSE=executorType)executor=new ReuseExecutor(this,transaction);else executor=new SimpleExecutor(this,transactio

4、n);if(cacheEnabled)executor=new CachingExecutor(executor,autoCommit);SqlSession的实现类即DefaultSqlSession,此对象中对操作数据库实质上用的是Executor。第10章 MyBatis DAO开发结论:每个线程都应该有它自己的SqlSession实例。SqlSession的实例不能共享使用,它也是线程不安全的。因此最佳的范围是请求或方法范围。绝对不能将SqlSession实例的引用放在一个类的静态字段或实例字段中。打开一个 SqlSession;使用完毕就要关闭它。通常把这个关闭操作放到 finall

5、y 块中以确保每次都能执行关闭。如下:SqlSession session=sqlSessionFactory.openSession();try /do work finally session.close();第10章 MyBatis DAO开发10.2 原始DAO开发方法第10章 MyBatis DAO开发10.2.1 映射文件select*from user where id=#id第10章 MyBatis DAO开发 select LAST_INSERT_ID()insert into user(username,birthday,sex,address)values(#userna

6、me,#birthday,#sex,#address)10.2.2 DAO接口Public interface UserDao public User getUserById(int id)throws Exception;public void insertUser(User user)throws Exception;Public class UserDaoImpl implements UserDao 第10章 MyBatis DAO开发 /注入SqlSessionFactory public UserDaoImpl(SqlSessionFactory sqlSessionFactory

7、)this.setSqlSessionFactory(sqlSessionFactory);private SqlSessionFactory sqlSessionFactory;Override public User getUserById(int id)throws Exception SqlSession session=sqlSessionFactory.openSession();User user=null;try /通过SqlSession调用selectOne方法获取一条结果集 /参数1:指定定义的statement的id,参数2:指定向statement中传递的参数 第10

8、章 MyBatis DAO开发 user=session.selectOne(test.findUserById,1);System.out.println(user);finally session.close();return user;Override Public void insertUser(User user)throws Exception SqlSession sqlSession=sqlSessionFactory.openSession();try sqlSession.insert(insertUser,user);第10章 MyBatis DAO开发 sqlSmit(

9、);finally session.close();第10章 MyBatis DAO开发10.3 Mapper接口开发方法第10章 MyBatis DAO开发10.3.1 实现原理Mapper接口开发方法只需要程序员编写Mapper接口(相当于DAO接口),由Mybatis框架根据接口定义创建接口的动态代理对象,代理对象的方法体同上边DAO接口实现类方法。Mapper接口开发需要遵循以下规范:(1)Mapper.xml文件中的namespace与mapper接口的类路径相同。(2)Mapper接口方法名和Mapper.xml中定义的每个statement的id相同。(3)Mapper接口方法的

10、输入参数类型和mapper.xml中定义的每个sql的parameterType的类型相同。(4)Mapper接口方法的输出参数类型和mapper.xml中定义的每个sql的resultType的类型相同。10.3.2 Mapper.xml(映射文件)定义Mapper映射文件UserMapper.xml(内容同Users.xml),需要将namespace的值修改为UserMapper接口路径。将UserMapper.xml放在classpath的mapper目录下。select*from user where id=#id select*from user where username li

11、ke%$value%第10章 MyBatis DAO开发 select LAST_INSERT_ID()insert into user(username,birthday,sex,address)values(#username,#birthday,#sex,#address)10.3.3 Mapper.java(接口)/*用户管理Mapper*/第10章 MyBatis DAO开发Public interface UserMapper /根据用户id查询用户信息 public User findUserById(int id)throws Exception;/查询用户列表 public

12、List findUserByUsername(String username)throws Exception;/添加用户信息 public void insertUser(User user)throws Exception;接口定义有如下特点:(1)Mapper接口方法名和Mapper.xml中定义的statement的id相同。(2)Mapper接口方法的输入参数类型和mapper.xml中定义的statement的parameterType的类型相同。(3)Mapper接口方法的输出参数类型和mapper.xml中定义的statement的resultType的类型相同。第10章 M

13、yBatis DAO开发10.3.4 加载UserMapper.xml文件修改SqlMapConfig.xml文件:10.3.5 测试Public class UserMapperTest extends TestCase private SqlSessionFactory sqlSessionFactory;protected void setUp()throws Exception /MyBatis配置文件 String resource=sqlMapConfig.xml;第10章 MyBatis DAO开发 InputStream inputStream=Resources.getRes

14、ourceAsStream(resource);/使用SqlSessionFactoryBuilder创建sessionFactory sqlSessionFactory=new SqlSessionFactoryBuilder().build(inputStream);Public void testFindUserById()throws Exception /获取session SqlSession session=sqlSessionFactory.openSession();/获取Mapper接口的代理对象 UserMapper userMapper=session.getMappe

15、r(UserMapper.class);/调用代理对象方法 User user=userMapper.findUserById(1);System.out.println(user);第10章 MyBatis DAO开发 /关闭session session.close();Test public void testFindUserByUsername()throws Exception SqlSession sqlSession=sqlSessionFactory.openSession();UserMapper userMapper=sqlSession.getMapper(UserMap

16、per.class);List list=userMapper.findUserByUsername(张);System.out.println(list.size();Public void testInsertUser()throws Exception /获取session SqlSession session=sqlSessionFactory.openSession();第10章 MyBatis DAO开发 /获取Mapper接口的代理对象 UserMapper userMapper=session.getMapper(UserMapper.class);/要添加的数据 User user=new User();user.setUsername(张三);user.setBirthday(new Date();user.setSex(1);user.setAddress(北京市);/通过Mapper接口添加用户 userMapper.insertUser(user);/提交 mit();/关闭session session.close();

侵权处理QQ:3464097650--上传资料QQ:3464097650

【声明】本站为“文档C2C交易模式”,即用户上传的文档直接卖给(下载)用户,本站只是网络空间服务平台,本站所有原创文档下载所得归上传人所有,如您发现上传作品侵犯了您的版权,请立刻联系我们并提供证据,我们将在3个工作日内予以改正。


163文库-Www.163Wenku.Com |网站地图|