当前位置: 首页 > news >正文

天津做手机网站建设00908网络营销与策划

天津做手机网站建设,00908网络营销与策划,优秀商业空间设计案例分析,无极招聘信息网入门 安装 在pom.xml中导入mybatis-spring.jar包 快速入门 要把spring和mybatis一起使用#xff0c;需要定义两样东西#xff1a;SqlsessionFactory 和 至少一个数据库映射器类。 SqlSessionFactoryBean 是用于创建 SqlSessionFactory 的#xff0c;需要一个Datasource…入门 安装 在pom.xml中导入mybatis-spring.jar包 快速入门 要把spring和mybatis一起使用需要定义两样东西SqlsessionFactory 和 至少一个数据库映射器类。 SqlSessionFactoryBean 是用于创建 SqlSessionFactory 的需要一个Datasource参数。 !-- spring-config.xml -- bean idsqlSessionFactory classorg.mybatis.spring.SqlSessionFactoryBeanproperty namedataSource refdataSource / /bean假如定义了一个如下的mapper接口 public interface UserMapper {Select(SELECT * FROM users WHERE id #{userId})User getUser(Param(userId) String userId); }可以使用MapperFactoryBean把接口加入到Spring中 bean iduserMapper classorg.mybatis.spring.mapper.MapperFactoryBeanproperty namemapperInterface valueorg.mybatis.spring.sample.mapper.UserMapper /property namesqlSessionFactory refsqlSessionFactory / /bean注意所指定的映射器类必须是一个接口,而不是具体的实现类。上面例子用的是注解也可以用xml配置的形式。 一旦配置好可以用相同的方式直接注入映射器到 business/service 对象中。MapperFactoryBean 处理 SqlSession 的创建和关闭它。如果使用 了 Spring 的事务,那么当事务完成时,session 将会提交或回滚。最终,任何异常都会被翻 译成 Spring 的 DataAccessException 异常。 最后调用Mybatis数据方法只需一行代码 public class FooServiceImpl implements FooService {private UserMapper userMapper;public void setUserMapper(UserMapper userMapper) {this.userMapper userMapper; }public User doSomeBusinessStuff(String userId) {return this.userMapper.getUser(userId); }SqlSessionFactoryBean 要创建工厂 bean,放置下面的代码在 Spring 的 XML 配置文件中 bean idsqlSessionFactory classorg.mybatis.spring.SqlSessionFactoryBeanproperty namedataSource refdataSource /property namemapperLocations valueclasspath*:sample/config/mappers/**/*.xml / /bean属性 SqlSessionFactory 有一个单独的必须属性— JDBC 的 DataSource。 一个通用的属性是 configLocation,它是用来指定 MyBatis 的 XML 配置文件路径的。 如果基本的 MyBatis 配置需要改变, 那么这就是一个需要配置文件的地方。 和spring结合的mybatis配置文件不需要一个完整的 MyBatis 配置。任意环境,数据源 和 MyBatis 的事务管理器都会被忽略。SqlSessionFactoryBean 会创建它自己的 sqlSessionFactory。 另一个需要配置文件的地方是mybatis映射器xml文件和映射器类不在同一路径。有两个选择第一是手动在 MyBatis 的 XML 配 置文件中使用部分来指定类路径。第二是使用工厂 bean 的 mapperLocations 属 性。 mapperLocations 属性使用一个资源位置的 list。 bean idsqlSessionFactory classorg.mybatis.spring.SqlSessionFactoryBeanproperty namedataSource refdataSource /property namemapperLocations valueclasspath*:sample/config/mappers/**/*.xml / /bean这会从类路径下加载在 sample.config.mappers 包和它的子包中所有的 映射器 文件。 从1.3.0后configuration 属性加入。它规定不用xml配置文件直接插入configuration标签。 bean idsqlSessionFactory classorg.mybatis.spring.SqlSessionFactoryBeanproperty namedataSource refdataSource /property nameconfigurationbean classorg.apache.ibatis.session.Configurationproperty namemapUnderscoreToCamelCase valuetrue//bean/property /bean事务 一个使用 MyBatis-Spring 的主要原因是它允许 MyBatis 参与到 Spring 的事务管理中。MyBatis-Spring 利用了存在于 Spring 中的 DataSourceTransactionManager。 可以通过配置Spring的PlatformTransaction来配置自己的事务。 在事务处理期间,一个单独的 SqlSession 对象将被创建和使用。当事务完成时,这个 session 会以合适的方式提交或回滚。 标准配置 开启Spring事务处理 创建一个 DataSourceTransactionManager 对象。 bean idtransactionManager classorg.springframework.jdbc.datasource.DataSourceTransactionManagerproperty namedataSource refdataSource / /bean要注意, 为事务管理器指定的 DataSource 必须和用来创建 SqlSessionFactoryBean 的 是同一个数据源,否则事务管理器就无法工作了。 容器管理事务 如果你想让 Spring 参与到容器管理事务CMT中,那么 Spring 应该使用 JtaTransactionManager 或它的容 器指定的子类来配置 tx:jta-transaction-manager /如果你想使用CMT , 而不想使用Spring的事务管理。 必须配置SQLSessionFactory来使用MyBatis 的 ManagedTransactionFactory 。 bean idsqlSessionFactory classorg.mybatis.spring.SqlSessionFactoryBeanproperty namedataSource refdataSource /property nametransactionFactorybean classorg.apache.ibatis.transaction.managed.ManagedTransactionFactory //property /bean编程式事务管理 你 不 能 在 Spring 管 理 的 SqlSession 上 调 用 SqlSession.commit() , SqlSession.rollback() 或 SqlSession.close() 方 法 。 如 果 这 样 做 了 , 就 会 抛 出 UnsupportedOperationException 异常。注意在使用注入的映射器时不能访问那些方法。 如果你想编程式地控制事务这段代码展示了使用 PlatformTransactionManager 来处理事务 DefaultTransactionDefinition def new DefaultTransactionDefinition(); def.setPropagationBehavior(TransactionDefinition.PROPAGATION_REQUIRED);TransactionStatus status txManager.getTransaction(def); try {userMapper.insertUser(user); } catch (MyException ex) {txManager.rollback(status);throw ex; } txManager.commit(status);使用SQLSession 在 MyBatis 中,你可以使用 SqlSessionFactory 来创建 SqlSession。一旦你获得一个 session 之后,你可以使用它来执行映射语句,提交或回滚连接,最后,当不再需要它的时 候, 你可以关闭 session。 使用 MyBatis-Spring 之后, 你不再需要直接使用 SqlSessionFactory 了,因为你的 bean 可以通过一个线程安全的 SqlSession 来注入,基于 Spring 的事务配置 来自动提交,回滚,关闭 session。 SqlSessionTemplate SqlSessionTemplate 是 MyBatis-Spring 的核心。 这个类负责管理 MyBatis 的 SqlSession, 调用 MyBatis 的 SQL 方法, 翻译异常。 SqlSessionTemplate 是线程安全的, 可以被多个 DAO 所共享使用。它管理 session 的生命 周期,包含必要的关闭,提交或回滚操作。 SqlSessionTemplate 实现了 SqlSession 接口在代码中无需对 MyBatis 的 SqlSession 替换。SqlSessionTemplate 通常是被用来替代默认的 MyBatis 实现的 DefaultSqlSession。 SqlSessionTemplate 对象可以使用 SqlSessionFactory 作为构造方法的参数来创建。 bean idsqlSession classorg.mybatis.spring.SqlSessionTemplateconstructor-arg index0 refsqlSessionFactory / /bean1、这个 bean 现在可以直接注入到 DAO bean 中。你需要在 bean 中添加一个 SqlSession 属性。 public class UserDaoImpl implements UserDao {private SqlSession sqlSession;public void setSqlSession(SqlSession sqlSession) {this.sqlSession sqlSession;}public User getUser(String userId) {return (User) sqlSession.selectOne(org.mybatis.spring.sample.mapper.UserMapper.getUser, userId);} }注入SqlSessionTemplate bean iduserDao classorg.mybatis.spring.sample.dao.UserDaoImplproperty namesqlSession refsqlSession / /bean2、SqlSessionTemplate 有一个使用 ExecutorType 作为参数的构造方法。这允许你用来 创建对象。 bean idsqlSession classorg.mybatis.spring.SqlSessionTemplateconstructor-arg index0 refsqlSessionFactory /constructor-arg index1 valueBATCH / /bean现在你所有语句都可以批量操作。 public void insertUsers(User[] users) {for (User user : users) {sqlSession.insert(org.mybatis.spring.sample.mapper.UserMapper.insertUser, user);}}SqlSessionDaoSupport SqlSessionDaoSupport 是 一 个 抽象 的支 持 类, 用来 为你 提供 SqlSession 。 调用getSqlSession()方法你会得到一个 SqlSessionTemplate,之后可以用于执行 SQL 方法。 public class UserDaoImpl extends SqlSessionDaoSupport implements UserDao {public User getUser(String userId) {return (User) getSqlSession().selectOne(org.mybatis.spring.sample.mapper.UserMapper.getUser, userId);} }通常 MapperFactoryBean 是这个类的首选,因为它不需要额外的代码。 但是你要在dao中做其他事情那么这个类就很有用。 SqlSessionDaoSupport 需要一个 sqlSessionFactory 或 sqlSessionTemplate 属性来 设 置 。 假设类 UserMapperImpl 是 SqlSessionDaoSupport 的子类,它可以在 Spring 中进行如 下的配置 bean iduserMapper classorg.mybatis.spring.sample.mapper.UserDaoImplproperty namesqlSessionFactory refsqlSessionFactory / /bean五 注入映射器 为了代替手工使用 SqlSessionDaoSupport 或 SqlSessionTemplate 编写数据访问对象 (DAO)的代码,MyBatis-Spring 提供了一个动态代理的实现:MapperFactoryBean。这个类 可以让你直接注入数据映射器接口到你的 service 层 bean 中。当使用映射器时,你仅仅如调 用你的 DAO 一样调用它们就可以了,但是你不需要编写任何 DAO 实现的代码,因为 MyBatis-Spring 将会为你创建代理。 使用注入的映射器代码,在 MyBatis,Spring 或 MyBatis-Spring 上面不会有直接的依赖。 MapperFactoryBean 创建的代理控制开放和关闭 session翻译任意的异常到 Spring 的 DataAccessException 异常中。此外,如果需要或参与到一个已经存在活动事务中,代理将 会开启一个新的 Spring 事务。 MapperFactoryBean 加入到Spring bean iduserMapper classorg.mybatis.spring.mapper.MapperFactoryBeanproperty namemapperInterface valueorg.mybatis.spring.sample.mapper.UserMapper /property namesqlSessionFactory refsqlSessionFactory / /beanmapperInterface说明 MapperFactoryBean 创建的代理类实现了 UserMapper 接口,并且注入到应用程序中。 如果 XML 文件在类路径的 位置和映射器类相同时, 它会被 MapperFactoryBean 自动解析。不需要再mybatis的配置文件中指定映射器路径除非在不同目录。 可以直接在 business/service 对象中以注入Spring bean 的方式直接注入映 射器: bean idfooService classorg.mybatis.spring.sample.mapper.FooServiceImplproperty nameuserMapper refuserMapper / /bean这个 bean 可以直接在应用程序逻辑中使用: public class FooServiceImpl implements FooService {private UserMapper userMapper;public void setUserMapper(UserMapper userMapper) {this.userMapper userMapper;}public User doSomeBusinessStuff(String userId) {return this.userMapper.getUser(userId);} }注意上面没有Session的引用打开或 关闭 session 的代码,MyBatis-Spring 会来关心它的。 MapperScannerConfigurer 没有必要在 Spring 的 XML 配置文件中注册所有的映射器。相反,你可以使用一个 MapperScannerConfigurer , 它 将 会 查 找 类 路 径 下 的 映 射 器 并 自 动 将 它 们 创 建 成 MapperFactoryBean。 创建 MapperScannerConfigurer bean classorg.mybatis.spring.mapper.MapperScannerConfigurerproperty namebasePackage valueorg.mybatis.spring.sample.mapper / /beanbasePackage 属性是让你为映射器接口文件设置基本的包路径。 可以使用分号或逗号 作为分隔符设置多于一个的包路径。每个映射器将会在指定的包路径中递归地被搜索到。 注 意 , 没有必要去指定 SqlSessionFactory 或 SqlSessionTemplate , 因 为 MapperScannerConfigurer 将会创建 MapperFactoryBean,之后自动装配。但是,如果你使 用了一个 以上的 DataSource ,那 么自动 装配可 能会失效。 这种 情况下 ,你可 以使用 sqlSessionFactoryBeanName 或 sqlSessionTemplateBeanName 属性来设置正确的 bean 名 称来使用。 bean 的名称是必须的,而不是 bean 的引用,因 此,value 属性在这里替代通常的 ref: property namesqlSessionFactoryBeanName valuesqlSessionFactory /六 使用Mybatis API 使用 MyBatis-Spring,你可以继续直接使用 MyBatis 的 API。仅仅在代码中使用 Spring 中 的 SqlSessionFactoryBean 来创建一个 SqlSessionFactory。 public class UserMapperSqlSessionImpl implements UserMapper {// SqlSessionFactory would normally be set by SqlSessionDaoSupportprivate SqlSessionFactory sqlSessionFactory;public void setSqlSessionFactory(SqlSessionFactory sqlSessionFactory) {this.sqlSessionFactory sqlSessionFactory;}public User getUser(String userId) {// note standard MyBatis API usage - opening and closing the session manuallySqlSession session sqlSessionFactory.openSession();try {return (User) session.selectOne(org.mybatis.spring.sample.mapper.UserMapper.getUser, userId);} finally {session.close();}} }小心使用此选项, 因为错误的使用会产生运行时错误, 或者更糟糕的数据一致性的问题。 这些是告诫: 1.它不会参与到 Spring 的事务之中。 2.如果 SqlSession 使用 DataSource,它也会被 Spring 事务管理器使用,而且当前 有事务在进行时,这段代码会抛出异常。 3.MyBatis 的 DefaultSqlSession 是线程不安全的。如果在 bean 中注入了它,就会 发生错误。 使用 DefaultSqlSession 创建的映射器也不是线程安全的。如果你将它们注入到 bean 中,是会发生错误的。 4.你必须保证在 finally 块中来关闭 SqlSession。 实例代码 https://github.com/mybatis/spring/tree/master/src/test/java/org/mybatis/spring/sample Spring单元测试 https://blog.csdn.net/u013041642/article/details/71430293 import org.junit.Test; import org.junit.runner.RunWith; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.test.context.ContextConfiguration; import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;import com.zx.dao.UserDao; import com.zx.domain.User; import com.zx.mapper.UserMapper;/*** Example of MyBatis-Spring batch integration usage.*/ RunWith(SpringJUnit4ClassRunner.class) ContextConfiguration(locationsclasspath:application-base.xml) public class UserDaoTest{Autowiredprotected UserDao userDao;Autowiredprotected UserMapper userMapper;Testpublic void testSelect() {User user this.userMapper.selectOne(1);System.out.println(user);} }
http://www.pierceye.com/news/369381/

相关文章:

  • 广州网站备案公司南昌网站建设网站推广
  • 龙岗外贸网站建设公司博览局网站建设
  • 怎么做淘课网站百度网站优化方案
  • 余姚做网站深圳华强北怎么了
  • 网站建设单元格边距WordPress进
  • 备案后的域名改网站名沪深300指数怎么买
  • 行业网站维护买电脑wordpress
  • 廊坊兼职网站建设网站图片怎么做的高级
  • pc网站转换手机网站wap用jsp源码做网站
  • 重庆慕尚网站建设在线美工
  • 珠海网站设计培训源码网站
  • 中山好的做网站的公司网站seo外包
  • 付费的网站是指展览馆网站建设方案书
  • 免费整套ppt模板下载网站网络营销推广目的
  • 公司 做网站企业手机app开发公司
  • 玉树电子商务网站建设多少钱做类似淘宝一样的网站
  • 住房城乡与建设厅网站燕郊网站开发
  • 欧美风格网站特点wordpress 电影主题
  • 烟台网站建设网站推广团队logo标志设计
  • 怎么注册建设银行网站如何创建属于个人网站
  • 双语网站系统wordpress page 父页面
  • 连云港做网站设计稿定设计官网入口
  • 建筑网站推荐wordpress hook api
  • 昆明做网站公司哪家好安卓优化
  • 魔站建站系统哪家好国内知名的包装设计公司
  • 福田区住房和建设局网站早晨设计 做网站设计吗
  • 郑州轨道网站开发手机怎么做动漫微电影网站
  • vscode网站开发昆明做网站找启搜网络
  • 如何评估网站虚拟商品交易网站建设
  • 太原网站优化教程pycharm做网站