mybatis与spring的整合(代码实现)

需要jar包:

    mybatis核心包;依赖包;log4j包;spring croe;beans;tx;aop;aspects;context;expression;jdbc; mybatis和spring得整合jar包;

  环境配置:

    1)mybatis.xml和mapper.xml配置在第一节有

    2)spring.xml配置在第二节有

  当配置好所有得环境,引入jar包后,开始写代码。

    1.先配置mybatis.xml文件:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE configuration PUBLIC "http://mybatis.org/dtd/mybatis-3-config.dtd" "mybatis-3-config.dtd" >
<configuration>
<typeAliases>
<package name="com.bean" />
</typeAliases>
</configuration>

       2.现在用spring.xml配置,-->开启自动扫描(注释)-->properties文件得placeholder-->连接数据库

<context:component-scan base-package="com.service" />
<context:property-placeholder location="classpath:db.properties" />
<bean id="datasource" class="com.mchange.v2.c3p0.ComboPooledDataSource">
<property name="driverClass" value="${Adriver}"></property>
<property name="JdbcUrl" value="${Aurl}"></property>
<property name="user" value="${Ausername}"></property>
<property name="password" value="${Apassword}"></property>
<property name="maxPoolSize" value="10"></property>
<property name="initialPoolSize" value="3"></property>
</bean>

      3.写一个bean(UsersBean)

package com.bean;

public class UsersBean {

    private int uid;
private String uname;
private String upass; public int getUid() {
return uid;
} public void setUid(int uid) {
this.uid = uid;
} public String getUname() {
return uname;
} public void setUname(String uname) {
this.uname = uname;
} public String getUpass() {
return upass;
} public void setUpass(String upass) {
this.upass = upass;
} }

      4.写一个UsersDao,对数据库数据进行操作

package com.dao;

import java.util.List;

import org.apache.ibatis.annotations.Param;

import com.bean.UsersBean;

public interface IUsersDao {

    public List<UsersBean> queryAll();
}

      5.写一个mapper.xml映射文件(IUsersDao.xml)

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "http://mybatis.org/dtd/mybatis-3-mapper.dtd" "mybatis-3-mapper.dtd" >
<mapper namespace="com.dao.IUsersDao">
<select id="queryAll" resultType="usersbean">
select * from users
</select>
</mapper>

    6.spring.xml配置,sqlSessionFactory()创建,mapper.xml文件得映射

    

<bean id="factory" class="org.mybatis.spring.SqlSessionFactoryBean">
<property name="configLocation" value="classpath:mybatis/mybatis-config.xml"></property>
<property name="dataSource" ref="datasource"></property>
</bean>
<bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">
<property name="basePackage" value="com.dao"></property>
<property name="sqlSessionFactoryBeanName" value="factory"></property>
</bean>

    7.UsersServiceImpl类继承IUsersService ,其中:(@Resource(name="IUsersDao"))name属性是值service层和dao层得关联

一般如果dao层mapper.xml文件名为UserDao,则name="userDao",不写就是默认为userDao.但我这里得name="IUserDao".

package com.service.impl;

import java.util.List;

import javax.annotation.Resource;

import org.springframework.stereotype.Service;

import com.bean.UsersBean;
import com.dao.IUsersDao;
import com.service.IUsersService; @Service
public class UsersServiceImpl implements IUsersService { @Resource
private IUsersDao usersDao; @Override
public List<UsersBean> findAll() {
// TODO Auto-generated method stub
return usersDao.queryAll();
}
}

        在这里遇到了一个问题 ,在spring.xml中我写的是批量配置使用了SqlSessionFactoryBean   本@(Resource name="userDao")第一个字母小写,可能是name="iUserDao"或者name="IuserDao",但都是错误得,因为我用的是以I开头的接口名,然后(@Resource(name="IUsersDao")是这样的。这是一个问题我不太懂,不懂它底层是怎样实现,希望大家懂得可以留言,我们逐一讨论。

  8.测试;(junit)

package test;

import java.util.List;

import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext; import com.bean.UsersBean;
import com.service.impl.UsersService; class Test { @org.junit.jupiter.api.Test
void test() {
// 实例化UsersService对象,调用显示方法
ApplicationContext app = new ClassPathXmlApplicationContext("spring/spring.xml");
UsersService us = app.getBean("UsersService", UsersService.class);
List<UsersBean> list = us.findAll();
for (UsersBean user : list) {
if (list != null) {
System.out.println("uid:" + user.getUid() + "\tuname:" + user.getUname() + "\tupwd:" + user.getUpwd());
}
}
System.out.println(app);
}
}

    ok!!

    多做笔记,加深记忆!!!

    学无止境。

  

mybatis与spring的整合(代码实现)的更多相关文章

  1. 【Java EE 学习 79 下】【动态SQL】【mybatis和spring的整合】

    一.动态SQL 什么是动态SQL,就是在不同的条件下,sql语句不相同的意思,曾经在“酒店会员管理系统”中写过大量的多条件查询,那是在SSH的环境中,所以只能在代码中进行判断,以下是其中一个多条件查询 ...

  2. 由“单独搭建Mybatis”到“Mybatis与Spring的整合/集成”

    在J2EE领域,Hibernate与Mybatis是大家常用的持久层框架,它们各有特点,在持久层框架中处于领导地位. 本文主要介绍Mybatis(对于较小型的系统,特别是报表较多的系统,个人偏向Myb ...

  3. SSM :MyBatis与Spring的整合

    MyBatis与Spring的整合 一:Spring整合MyBatis的准备工作: (1.)在项目中加入Spring,ByBatis及整合相关的jar文件 (2.)建立开发目录结构,创建实体类 (3. ...

  4. Java基础-SSM之Spring和Mybatis以及Spring MVC整合案例

    Java基础-SSM之Spring和Mybatis以及Spring MVC整合案例 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 能看到这篇文章的小伙伴,详细你已经有一定的Java ...

  5. MyBatis与Spring的整合实例详解

    从之前的代码中可以看出直接使用 MyBatis 框架的 SqlSession 访问数据库并不简便.MyBatis 框架的重点是 SQL 映射文件,为方便后续学习,本节讲解 MyBatis 与 Spri ...

  6. mybatis 学习笔记(四):mybatis 和 spring 的整合

    mybatis 学习笔记(四):mybatis 和 spring 的整合 尝试一下整合 mybatis 和 spring. 思路 spring通过单例方式管理SqlSessionFactory. sp ...

  7. mybatis与spring的整合

    今天是mybatis的最后一天,也是最为重要的一天,mybatis与spring整合,(spring相关知识我会抽一个大的模块进行讲解). 首先加入Spring的依赖 <dependency&g ...

  8. mybatis和spring的整合

    Mybatis与Spring的集成 1.配置Spring环境 创建maven工程 pom.xml导入依赖 <project xmlns="http://maven.apache.org ...

  9. Java框架搭建-Maven、Mybatis、Spring MVC整合搭建

    1. 下载eclipse 到网站下载 http://www.eclipse.org/downloads/packages/eclipse-ide-java-ee-developers/marsr 选择 ...

随机推荐

  1. webpack插件配置(二)- HtmlWebpackPlugin

    作用 简化Html文件的创建,以便为你的webpack bundle包提供服务.这对于在文件名中包含每次会随着编译而发生变化的hash的webpack bundle尤其有用.插件可以生成一个HTML文 ...

  2. mysql联合主键自增、主键最大长度小记

    前言 一. 联合主键自增问题 今天上午闲来无事翻看了下数据库分类表的设计,看到这样一幕: 当时我好奇的是怎么cateId自增会存在重复值的问题,然后翻看了下主键是由siteId和cateId组成.所以 ...

  3. 下载安装tomcat和jdk,配置运行环境,与Intellij idea 2017关联

    第一篇博客,最近公司要用java和jsp开发新的项目,第一次使用Intellij idea 2017,有很多地方需要一步步配置,有些按照网上的教程很快就配置好了,有的还是琢磨了一会儿,在这里做一个记录 ...

  4. [转][linux]简单的linux下的tcp/udp

    转自:https://blog.csdn.net/cabing2005/article/details/53068880 详细函数以及参数解释请看原链接. windows下的tcp/udp参考:htt ...

  5. Total Commander

    Total Commander 是一款应用于 Windows 平台的文件管理器 ,它包含两个并排的窗口,这种设计可以让用户方便地对不同位置的“文件或文件夹”进行操作,例如复制.移动.删除.比较等,相对 ...

  6. 关于js函数,方法,对象实例的一些说明

    朋友们大家好,好久没有更新文章了,最近正好有空就想着写点什么吧,加上这段时间总是能听到一些朋友们问关于js函数,方法,对象实例到底有什么区别这个问题,所以今天就献丑来简单说明一些吧! 其实这些主要都是 ...

  7. x1c2017 8G版 win linux的取舍纠结记录

    x1c 2017 的 i5 7200U 8G ram 的丐版.换了1T SSD.其实一般使用没啥问题. 1 外出携带的轻便性太满意(mac13寸相比之下都太重了): 2 coding时候的安静性,比原 ...

  8. MySQL学习(十二)

    视图 view 在查询中,我们经常把查询结果当成临时表来看, view是什么?view可以看成一张虚拟表,是表通过某种运算得到的一个投影. 表的变化会影响到视图 既然视图只是表的某种查询的投影,所以主 ...

  9. mui体验理解

    1.      mui简介 1.1  缘起 1.基于jq的jqmobile,性能低的无法忍受,且UI难看 2.bootstrap这种响应式设计,性能在低端机不足,而且UI风格一看就是网页,不是App的 ...

  10. 大数据时代的Python金融应用-Day1-Python与金融应用概述

    一.Python语言的主要特征 1.开源性 Python和大多数的支撑库和工具都是开源的,通常可以非常灵活的使用而且有开放的协议. 2.解释性 也可以使用Cpython完成将解释性语言转化为实施可执行 ...