ImageVerifierCode 换一换
格式:DOCX , 页数:29 ,大小:25.48KB ,
资源ID:4514406      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/4514406.html】到电脑端继续下载(重复下载不扣费)。

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

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(课题由单独搭建Mybatis到Mybatis与Spring的整合集成.docx)为本站会员(b****5)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

课题由单独搭建Mybatis到Mybatis与Spring的整合集成.docx

1、课题由单独搭建Mybatis到Mybatis与Spring的整合集成由“单独搭建Mybatis”到“Mybatis与Spring的整合/集成”在J2EE领域,Hibernate与Mybatis是大家常用的持久层框架,它们各有特点,在持久层框架中处于领导地位。本文主要介绍Mybatis(对于较小型的系统,特别是报表较多的系统,个人偏向Mybatis),对于它,个人比较喜欢的是:使用简单、方便;支持的XML动态SQL的编写,方便浏览、修改,同时降低SQL与应用程序之间的耦合。不喜欢的是:出现错误时,调试不太方便本文主要介绍Mybatis的搭建,是学习Mybatis过程后整理的札记,其中包括“单独搭

2、建Mybaits”和常用的“Mybatis与Spring的整合”。一、数据库的准备因为Mybatis是持久层框架,毫无疑问,是需要操作数据库的。所以,在搭建之前,我们需要先创建一个简单的表。create table T_USER_TEST_1407( USERNAME VARCHAR2(255), PASSWORD VARCHAR2(255)SQL - DDL - Create Table插入一些数据,以作查询的测试。insert into T_USER_TEST_1407 (USERNAME, PASSWORD)values (nick, Optimistic,Confident,Love

3、- 1);SQL - DML - Insert table二、单独搭建Mybaits1)环境准备、版本说明此工程使用JDK1.6 +mybatis-3.2.4 + Oracle11g。新建一个Web工程,由于只构建Mybatis,只引用Mybatis和Oracle JDBC驱动包mybatis-3.2.4.jarojdbc6.jar2)程序的搭建首先,我们将数据源等配置信息放在一个xml,让Mybatis可以根据这个信息去连接数据库、管理事务。目前我们可只关注environments节点,此节点是用于配置数据源、事务管理的 。其他的节点,如typeAliases、mappers,是用于注册一些

4、信息的,后面会陆续提到。1 2 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 mybatis-config.xml既然有了配置的xml,下一步就需要让Mybatis加载它了。首先以输入流的形式加载xml以“SqlSessionFactoryBuilder -SqlSessionFactory -SqlSession”的流程最后构建出SqlSession。 SqlSession,顾名思义,是一次会话,是应用程序与数据库交互的会话,所以,其生命周期应在一次数据库连接之间,当然,此次数据库

5、连接可以包含一次或多次数据库操作。SqlSessionFactory,顾名思义,是SqlSession的工厂类,用于产出SqlSession。我们知道,SqlSession主要用于数据库操作,而数据库操作又是贯穿于应用程序整个生命周期当中的,那么,产出SqlSession这个动作也应当贯穿于应用程序整个生命周期当中,所以,SqlSessionFactory的生命周期一般为应用程序的整个生命周期,一般为单例/static的形式存在。SqlSessionFactoryBuilder,由代码可见,其主要作用是从配置文件中获取配置信息,然后构建SqlSessionFactory,所以其生命周期可以是临

6、时的,局部的。通过SqlSession获取UserMapper接口,再调用该接口的数据操纵方法。package com.nicchagil.mybatisonly;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.sessio

7、n.SqlSessionFactoryBuilder;import com.nicchagil.mybatisonly.bean.User;import com.nicchagil.mybatisonly.mapper.UserMapper;public class Call public static SqlSessionFactory sqlSessionFactory = null; public static void main(String args) throws IOException / Query User /* kickStartMybatis(); queryUser(n

8、ick); */ / Inser User kickStartMybatis(); insertUser(user004, hello world.); public static void kickStartMybatis() throws IOException String resource = com/nicchagil/mybatisonly/mybatis-config.xml; InputStream inputStream = Resources.getResourceAsStream(resource); sqlSessionFactory = new SqlSessionF

9、actoryBuilder().build(inputStream); /* * Query User * param username * return */ public static User queryUser(String username) User user = null; SqlSession session = sqlSessionFactory.openSession(); try /* Un-recommended Method */ /* user = (User)session.selectOne(com.nicchagil.mybatisonly.mapper.Us

10、erMapper.queryUser, username); */ /* Recommended Method */ UserMapper userMapper = session.getMapper(UserMapper.class); user = userMapper.queryUser(username); System.out.println(username - + user.getUsername() + , password - + user.getPassword(); finally session.close(); return user; /* * Insert Use

11、r * param username * param password */ public static void insertUser(String username, String password) SqlSession session = sqlSessionFactory.openSession(); try UserMapper userMapper = session.getMapper(UserMapper.class); User user = new User(); user.setUsername(username); user.setPassword(password)

12、; userMapper.insertUser(user); / Flushes batch statements and commits database connection. / Note that database connection will not be committed if no updates/deletes/inserts were called. mit(); System.out.println(username - + user.getUsername() + , password - + user.getPassword(); catch (Exception

13、e) session.rollback(); e.printStackTrace(); /TODO Print the exception logs /TODO Prompts fail to execute for user finally session.close(); /* * Insert User * param username * param password */ public static void insertUserBySQL(String username, String password) SqlSession session = sqlSessionFactory

14、.openSession(); try User user = new User(); user.setUsername(username); user.setPassword(password); session.insert(com.nicchagil.mybatisonly.mapper.UserMapper.insertUser, user); / Flushes batch statements and commits database connection. / Note that database connection will not be committed if no up

15、dates/deletes/inserts were called. mit(); catch (Exception e) session.rollback(); e.printStackTrace(); /TODO Print the exception logs /TODO Prompts fail to execute for user finally session.close(); CallUserMapper是一个DAO的接口,是定义作哪些数据库操作的。1 package com.nicchagil.mybatisonly.mapper;2 3 import com.nicchag

16、il.mybatisonly.bean.User;4 5 public interface UserMapper 6 7 public User queryUser(String username);8 9 UserMapper.javaUserMapper只是供调用的接口,那么具体的实现逻辑在哪里呢?我们可见UserMaper.xml,它定义的SQL就是用于定义UserMapper接口的实现。我们需在mybatis-config.xml注册UserMaper.xml,可见mybatis-config.xml的mappers节点。我们可以看到id为queryUser,与接口的方法名对应;SQL

17、我们很熟悉了,就是一个简单的SQL,而#username,就是接口方法的入参;resultType为user,这个user是一个别名,具体对应com.nicchagil.mybatisonly.bean.User这个类,我们可以看到在mybatis-config.xml文件的typeAliases节点中已经注册它们的映射关系。 select * from t_user_test_1407 t where t.username = #username INSERT INTO t_user_test_1407 T (T.USERNAME, T.PASSWORD) VALUES (#username

18、, #password) UserMapper.xml而com.nicchagil.mybatisonly.bean.User是实体类,用于装载数据。1 package com.nicchagil.mybatisonly.bean; 2 3 public class User 4 5 private String username; 6 private String password; 7 8 public String getUsername() 9 return username;10 11 12 public void setUsername(String username) 13 th

19、is.username = username;14 15 16 public String getPassword() 17 return password;18 19 20 public void setPassword(String password) 21 this.password = password;22 23 24 Override25 public int hashCode() 26 final int prime = 31;27 int result = 1;28 result = prime * result29 + (password = null) ? 0 : pass

20、word.hashCode();30 result = prime * result31 + (username = null) ? 0 : username.hashCode();32 return result;33 34 35 Override36 public boolean equals(Object obj) 37 if (this = obj)38 return true;39 if (obj = null)40 return false;41 if (getClass() != obj.getClass()42 return false;43 User other = (Use

21、r) obj;44 if (password = null) 45 if (other.password != null)46 return false;47 else if (!password.equals(other.password)48 return false;49 if (username = null) 50 if (other.username != null)51 return false;52 else if (!username.equals(other.username)53 return false;54 return true;55 56 57 User.java

22、最后,我们运行Call.java,将能成功查询、插入数据库。我们可通过打印的信息和查询数据库,以查看是否成功查询、插入数据。3)事务说明对于数据库有写操作的应用程序,一般来说,事务是不可或缺的一部分。因为未使用其他框架,这里使用编程式事务,即使用SqlSmit()和SqlSession.rollback()方法,可见Call.java。由于本程序对事务有异常回滚的要求,所以,需要获取非自动提交的SqlSession如程序执行正常,则最后执行mit()以提交事务。 mit()有个需注意的地方,参考其如下注释,即如果当前会话中不涉及updates/deletes/insert等写数动作则不提交事务

23、。所以,如果要触发Mybatis提交事务,就需执行明确的触发动作,如“执行session.insert(.)方法”或“执行对应的SQL Mapper配置中的insert、update、delete等标签”等操作。(本人曾尝试在SQL Mapper配置中用select标签包含INSERT的SQL,使用SqlSmit()后,执行正常,但没有提交事务,可见并未触发,所以,需规范使用标签)。如需强制提交,可用SqlSmit(boolean)。Flushes batch statements and commits database connection. Note that database conn

24、ection will not be committed if no updates/deletes/inserts were called. To force the commit call SqlSmit(boolean)如程序执行异常,则回滚事务,session.rollback()单独搭建Mybaits完毕!二、Mybatis与Spring的整合一个项目中,单独使用Mybatis的情况并不多;更多的情况下,我们需要将Mybatis与其他框架进行整合,以便更好地使用。比如Mybatis + Spring,就是一个流行的整合组合。1)环境准备、版本说明本次用Mybatis3 + Spring3进行整合。注意,并不包含MVC框架的配置,因为本文的目的是学习Mybatis,所以尽量不引用其他框架,以避免影响代码的理解。需引入的类库详情如下: junit junit 3.8.1 test org.springframework spring-context 3.2.10.RELEASE org.springframework.webflow spring-webflow 2.4.0.RELEASE org.springframework.data spring-data-oracle version

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1