首页 技术 正文
技术 2022年11月7日
0 收藏 457 点赞 1,119 浏览 3830 个字

                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!!

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

    学无止境。

  

相关推荐
python开发_常用的python模块及安装方法
adodb:我们领导推荐的数据库连接组件bsddb3:BerkeleyDB的连接组件Cheetah-1.0:我比较喜欢这个版本的cheeta…
日期:2022-11-24 点赞:878 阅读:9,488
Educational Codeforces Round 11 C. Hard Process 二分
C. Hard Process题目连接:http://www.codeforces.com/contest/660/problem/CDes…
日期:2022-11-24 点赞:807 阅读:5,903
下载Ubuntn 17.04 内核源代码
zengkefu@server1:/usr/src$ uname -aLinux server1 4.10.0-19-generic #21…
日期:2022-11-24 点赞:569 阅读:6,736
可用Active Desktop Calendar V7.86 注册码序列号
可用Active Desktop Calendar V7.86 注册码序列号Name: www.greendown.cn Code: &nb…
日期:2022-11-24 点赞:733 阅读:6,487
Android调用系统相机、自定义相机、处理大图片
Android调用系统相机和自定义相机实例本博文主要是介绍了android上使用相机进行拍照并显示的两种方式,并且由于涉及到要把拍到的照片显…
日期:2022-11-24 点赞:512 阅读:8,127
Struts的使用
一、Struts2的获取  Struts的官方网站为:http://struts.apache.org/  下载完Struts2的jar包,…
日期:2022-11-24 点赞:671 阅读:5,289