在网上找了一大推资料也没有我想要的,干脆自己研究了一下,对于新手来说,整合这件事是十分烦人,好了废话不多说。
首先请准备需要的包,或者你用maven也可以,不过我相信大多数人还是用jar包导进去的。
下面是我的工程目录
由于我用的是mysql数据库,我们现在mysql下先执行下面一个sql语句
create database mybati;
use mybati;
CREATE TABLE users(id INT PRIMARY KEY AUTO_INCREMENT, NAME VARCHAR(), age INT);
INSERT INTO users(NAME, age) VALUES('孤傲苍狼', );
INSERT INTO users(NAME, age) VALUES('白虎神皇', );
创建好后我们新建一个
conf.xml
文件,用于配置pojo类到数据库的映射路径,代码如下:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE configuration PUBLIC "-//mybatis.org//DTD Config 3.0//EN" "http://mybatis.org/dtd/mybatis-3-config.dtd">
<configuration>
<!-- 这里设置别名,不让等一下到实体映射文件要写包名太麻烦了 -->
<typeAliases>
<typeAlias type="com.cmh.entity.User" alias="User"/>
</typeAliases>
<mappers>
<mapper resource="com/cmh/Mapping/userMapper.xml"/>
</mappers>
</configuration>
然后我们先来配置java文件,首先配置实体类
User
,代码如下:
package com.cmh.entity;
public class User {
private int id;
private String name;
private int age;
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
}
接下来我们在包名为
com.cmh.dao
下创建接口类
UserDao
:
package com.cmh.dao;
public interface UserDao {
int findUser(int id);
}
再在
com.cmh.dao.impl
下创建实现接口的类
UserDaoImpl
,代码如下(由于是实验性整合,建议不要写的太复杂,这里我们就实现一个功能就行了):
import com.cmh.entity.User;
public class UserDaoImpl implements UserDao {
public SqlSessionTemplate sqlSession;
public SqlSessionTemplate getSqlSession() {
return sqlSession;
}
public void setSqlSession(SqlSessionTemplate sqlSession) {
this.sqlSession = sqlSession;
}
@Override
public int findUser(int id) {
// TODO Auto-generated method stub
String statement = "com.cmh.Mapping.userMapper.getUser";//映射sql的标识字符串
User user = sqlSession.selectOne(statement, );
System.out.println(user.getName());
return ;
}
}
接着在
com.cmh.service
创建接口类
UserService
,代码如下:
package com.cmh.service;
public interface UserService {
int findById(int id);
}
在
com.cmh.service.impl
下新建一个实现
UserService
的类
UserManager
,代码如下:
package com.cmh.service.impl;
import com.cmh.dao.UserDao;
import com.cmh.service.UserService;
public class UserManager implements UserService {
private UserDao userDao;
public UserDao getUserDao() {
return userDao;
}
public void setUserDao(UserDao userDao) {
this.userDao = userDao;
}
@Override
public int findById(int id) {
// TODO Auto-generated method stub
return userDao.findUser(id);
}
}
接下来我们来看一看
com.cmh.Mapping
下的
userMapper.xml
文件配置,好了,亮代码:
接着就来看我们的关键性一步了,`spring_mybait.xml`的整合配置,代码如下,我会在注释里对一些有疑惑的进行讲解,好了,亮剑:
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:aop="http://www.springframework.org/schema/aop"
xmlns:context="http://www.springframework.org/schema/context"
xmlns:tx="http://www.springframework.org/schema/tx"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="
http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx.xsd
http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd
http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop.xsd
http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd">
<!--将外面的properties文件数据配置进来,方便下面的配置-->
<context:property-placeholder location="classpath:config.properties" />
<!--创建jdbc数据源 ,相信如果整合过ssh对这个都不会太陌生,如果有任何不明白的可以去查查spring的文档,在文档中按ctrl+f,让后输入org.apache.commons.dbcp就能找到-->
<bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource"
destroy-method="close">
<property name="driverClassName" value="${driver}" />
<property name="url" value="${url}" />
<property name="username" value="${name}" />
<property name="password" value="${password}" />
</bean>
<!--我们知道在mybait中,执行操作都是通过sqlsession来产生操作的,sqlsession是基于sqlsessionFactory,sqlsessionFactory又是基于SqlSessionFactoryBuilder,但在我们的mybatis-spring-1.2.1.jar中,我们的却是基于SqlSessionFactoryBean来产生sqlsessionFactory,进而获取到sqlsession,所以我们要对其进行实例化注入-->
<bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
<property name="dataSource" ref="dataSource" />
<property name="configLocation" value="conf.xml"/><!--获取配置文件-->
</bean>
<!--以下是用于在接口类使用注解进行实例化是的配置,详情可以到[这里写链接内容](http://blog.csdn.net/lemonyfei/article/details/8925351)进行查看-->
<!--
<bean id="userMapper" class="org.mybatis.spring.mapper.MapperFactoryBean">
<property name="mapperInterface" value="com.cmh.dao.UserDao"></property>
<property name="sqlSessionFactory" ref="sqlSessionFactory"></property>
</bean>
-->
<!--Mybatis-Spring为我们提供了一个实现了SqlSession接口的SqlSessionTemplate类,它是线程安全的,可以被多个Dao同时使用。同时它还跟Spring的事务进行了关联,确保当前被使用的SqlSession是一个已经和Spring的事务进行绑定了的。而且它还可以自己管理Session的提交和关闭。当使用了Spring的事务管理机制后,SqlSession还可以跟着Spring的事务一起提交和回滚,配置如下-->
<bean id="sqlSession" class="org.mybatis.spring.SqlSessionTemplate">
<constructor-arg index="0" ref="sqlSessionFactory" />
</bean>
<bean id="temple" class="com.cmh.dao.impl.UserDaoImpl">
<property name="sqlSession" ref="sqlSession"/>
</bean>
<!--接着将实例化的UserDaoImpl的bean注入即可完成-->
<bean id="userService" class="com.cmh.service.impl.UserManager">
<property name="userDao" ref="temple"></property>
</bean>
</beans>
下面是
config.properties
的配置,由于我的mysql是第三方集成的没有密码,所以不用写:
driver=com.mysql.jdbc.Driver
url=jdbc:mysql://localhost:/mybati
name=root
password=
下面是测试代码,用junit测试,如下:
@Test
public void test2(){
ApplicationContext applicationContext = new ClassPathXmlApplicationContext("spring_mybait.xml");
UserService userService = (UserService) applicationContext.getBean("userService");
int judge = userService.findById();
System.out.println(judge);
}
运行结果如下:
![这里写图片描述](https://img-blog.csdn.net/20150722131028285)