logo
登录 / 注册

通过注解的方式整合spring和mybatis实现增删改查功能

头像
杨小洋
2022-09-22 · java工程师

 <!--加载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成功了


通过注解的方式整合spring和mybatis实现增删改查功能脉脉
阅读 4
声明:本文内容由脉脉用户自发贡献,部分内容可能整编自互联网,版权归原作者所有,脉脉不拥有其著作权,亦不承担相应法律责任。如果您发现有涉嫌抄袭的内容,请发邮件至maimai@taou.com,一经查实,将立刻删除涉嫌侵权内容。
相关推荐
最新发布
大家都在看
热门人脉圈
    头像
    我来说几句...
    脉脉App内打开