<!--加载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.Driverjdbc.url=jdbc:mysql://localhost:3306/springdbjdbc.username=rootjdbc.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; }@Overridepublic void add(User user) { userDao.add(user); }@Overridepublic void delete(Integer id) { userDao.delete(id); }@Overridepublic void update(User user) { userDao.update(user); }@Overridepublic List<User> findAll() {return userDao.findAll(); }@Overridepublic 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成功了