您的位置 首页 java

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

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

文章来源:智云一二三科技

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

文章地址:https://www.zhihuclub.com/182889.shtml

关于作者: 智云科技

热门文章

网站地图