<!--加载perperties配置文件的信息-->
<context:property-placeholder location="classpath:*.properties"/>
<!--加载druid资源-->
<bean id="dataSource" class="com.alibaba.druid.pool.DruidDataSource">
<property name="driverClassName" value="${ JDBC .driver}"/>
<property name="url" value="${jdbc.url}"/>
<property name="username" value="${jdbc.username}"/>
<property name="password" value="${jdbc.password}"/>
</bean>
<!--配置service作为 Spring 的bean,注入dao-->
<bean id="userService" class="com.javaxxf.service.Impl.UserServiceImpl">
<property name="userDao" ref="userDao"/>
</bean>
<!--spring整合 Mybatis 后控制的创建连接用的对象-->
<bean class="org.mybatis.spring.SqlSessionFactoryBean">
<property name="dataSource" ref="dataSource"/>
<property name="typeAliasesPackage" value="com.javaxxf.pojo"/>
</ bean >
<!--加载mybatis映射配置的扫描,将其作为spring的bean进行管理-->
<bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">
<property name="basePackage" value="com.javaxxf.dao"/>
</bean>
这个配置信息是我们之前通过配置文件整合spring和mybatis实现增删改查功能的配置文件
信息,那我们来分享一下这个 spring 核心配置文件,如果我们通过注解的方式就不需要spring的配置文件了,那我们应该怎么修改?
1、我们可以创建一个SpringConfig配置类来代替这个spring的配置文件
<!--加载perperties配置文件的信息-->
<context:property-placeholder location="classpath:*.properties"/>
2、这个配置我们可以在SpringConfig配置类的类上方用@PropertySource注解来代替
<!--加载druid资源-->
<bean id="dataSource" class="com.alibaba.druid.pool.DruidDataSource">
<property name="driverClassName" value="${jdbc.driver}"/>
<property name="url" value="${jdbc.url}"/>
<property name="username" value="${jdbc.username}"/>
<property name="password" value="${jdbc.password}"/>
</bean>
3、这个配置我们可以创建一个JDBCConfig配置类来定义
<!--spring整合mybatis后控制的创建连接用的对象-->
<bean class="org.mybatis.spring.SqlSessionFactoryBean">
<property name="dataSource" ref="dataSource"/>
<property name="typeAliasesPackage" value="com.javaxxf.pojo"/>
</bean>
<!--加载mybatis映射配置的扫描,将其作为spring的bean进行管理-->
<bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">
<property name="basePackage" value="com.javaxxf.dao"/>
</bean>
4、这个配置我们可以创建一个MyBatisConfig配置类来定义
5、并将JDBCConfig和MyBatisConfig通过@Import注解导入到核心配置类SpringConfig
案例准备分析
1.实体类与表
2.业务层接口与实现
3.数据层接口
4.Mybatis映射配置( 用注解代替 )
5.Spring核心配置文件( 通过配置类和注解代替 )
6.数据库信息配置文件jdbc.properties文件
7.Spring整合MyBatis
8.客户端程序测试功能
—–
通过注解的方式整合spring和mybatis实现增删改查功能步骤演示:
1、创建数据库,准备数据
SET NAMES utf8mb4;
SET FOREIGN_KEY_CHECKS = 0;
-- ----------------------------
-- 创建用户表
-- ----------------------------
DROP TABLE IF EXISTS `user`;
CREATE TABLE `user` (
`id` int(255) NOT NULL AUTO_INCREMENT,
`name` varchar(255) DEFAULT NULL,
`password` varchar(255) DEFAULT NULL,
`money` int(255) DEFAULT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=4 DEFAULT CHARSET=utf8;
-- ----------------------------
-- 给user表添加数据
-- ----------------------------
BEGIN;
INSERT INTO `user` VALUES (1, ' java ', '123', 100);
INSERT INTO `user` VALUES (2, 'javaxxf', '456', 90);
INSERT INTO `user` VALUES (3, '曾阿牛', '789', 110);
COMMIT ;
SET FOREIGN_KEY_CHECKS = 1;
2、创建项目,这是项目目录结构

3、导入Spring坐标,MyBatis坐标, MySQL 坐标,Druid坐标
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis</artifactId>
<version>3.5.3</version>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>5.1.47</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context</artifactId>
<version>5.1.9.RELEASE</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-jdbc</artifactId>
<version>5.1.9.RELEASE</version>
</dependency>
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>druid</artifactId>
<version>1.1.16</version>
</dependency>
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis-spring</artifactId>
<version>1.3.0</version>
</dependency>
4、在resources目录下创建jdbc.properties文件并且配置相关的数据库信息
jdbc.driver=com.mysql.jdbc.Driver
jdbc.url=jdbc:mysql://localhost:3306/springdb
jdbc.username= root
jdbc.password=123456
5、创建SpringConfig配置类来代替这个spring的配置文件,并且开启注解扫描和配置文件加载
@Configuration
@ComponentScan(basePackages ="com.javaxxf")
@PropertySource(value = "classpath:*.properties")
public class SpringConfig {
}
6、 创建 JDBCConfig 配置类
public class JDBCConfig {
@Value("${jdbc.driver}")
private String driverClassName;
@Value("${jdbc.url}")
private String url;
@Value("${jdbc.username}")
private String username;
@Value("${jdbc.password}")
private String password;
@Bean("dataSource")
public DruidDataSource getDataSource() {
DruidDataSource ds = new DruidDataSource();
ds.setDriverClassName(driverClassName);
ds.setUrl(url);
ds.setUsername(username);
ds.setPassword(password);
return ds;
}
}
7、创建 MyBatisConfig 配置类
import org.mybatis.spring.SqlSessionFactoryBean;
import org.mybatis.spring.mapper.MapperScannerConfigurer;
import org.springframework.beans.factory. Annotation .Autowired;
import org.springframework.context.annotation.Bean;
import javax .sql.DataSource;
public class MyBatisConfig {
@Bean
public SqlSessionFactoryBean getSqlSessionFactoryBean(@Autowired DataSource dataSource){
SqlSessionFactoryBean ssfb = new SqlSessionFactoryBean();
ssfb.setTypeAliasesPackage("com.javaxxf.pojo");
ssfb.setDataSource(dataSource);
return ssfb;
}
@Bean
public MapperScannerConfigurer getMapperScannerConfigurer(){
MapperScannerConfigurer msc = new MapperScannerConfigurer();
msc.setBasePackage("com.javaxxf.dao");
return msc;
}
}
8、并将JDBCConfig和MyBatisConfig通过@Import注解导入到核心配置类SpringConfig
@Configuration
@ComponentScan(basePackages ="com.javaxxf")
@PropertySource(value ="classpath:jdbc.properties" )
@Import({JDBCConfig.class,MyBatisConfig.class})
public class SpringConfig {
}
9、创建实体类user并定义业务层接口与数据层接口
User 实体类
public class User {
private Integer id;
private String name;
private String password;
private Integer money;
get和set方法省略了...
}
数据层的接口 UserDao
public interface UserDao {
@Insert("insert into user(name,password,money)values(#{name},#{password},#{money})")
void add( User user);
@Delete("delete from user where id=#{id}")
void delete(Integer id);
@Update("uqdate user set name=#{name},password=#{password},money=#{money} where id=#{id}")
void update(User user);
@Select("select *from user")
List<User> findAll();
@Select("select * from user where id=#{id}")
User findById(Integer id);
}
业务层的接口 UserService
public interface UserService {
void add( User user);
void delete(Integer id);
void update(User user);
List<User> findAll();
User findById(Integer id);
}
业务层的接口实现类 UserServiceImpl
public class UserServiceImpl implements UserService {
private UserDao userDao;
public void setUserDao(UserDao userDao) {
this.userDao = userDao;
}
@Override
public void add(User user) {
userDao.add(user);
}
@Override
public void delete(Integer id) {
userDao.delete(id);
}
@Override
public void update(User user) {
userDao.update(user);
}
@Override
public List<User> findAll() {
return userDao.findAll();
}
@Override
public User findById(Integer id) {
return userDao.findById(id);
}
}
测试
public class UserController {
public static void main(String[] args) {
AnnotationConfigApplicationContext ctx = new AnnotationConfigApplicationContext(SpringConfig.class);
UserService userService = (UserService) ctx.getBean("userService");
//根据id查询
User user = userService.findById(1);
System.out.println(user.getName());
System.out.println(user.getPassword());
}
}

能正常打印数据库查询的数据,就证明我们spring整合mybatis成功了