zoukankan      html  css  js  c++  java
  • mybatis与spring的整合(代码实现)

                    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() + "	uname:" + user.getUname() + "	upwd:" + user.getUpwd());
                }
            }
            System.out.println(app);
        }
    }

        ok!!

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

        学无止境。

      

     

  • 相关阅读:
    selenium-使用xpath结合text内容定位元素
    pip 安装第三方库报错解决方法
    本地使用git拉取远程指定分支代码
    Python之字符串格式化(format)
    Python之字符串format格式化
    Python中的eval()函数
    用PIL实现滤镜(一)——素描、铅笔画效果
    python勾画图片轮廓
    用python读取带密码的excel文件中的数据
    python中的列表与列表推导式
  • 原文地址:https://www.cnblogs.com/meiLinYa/p/8697878.html
Copyright © 2011-2022 走看看