【三:Spring整合Mybatis】

编程入门 行业动态 更新时间:2024-10-21 16:28:23

【三:<a href=https://www.elefans.com/category/jswz/34/1769862.html style=Spring整合Mybatis】"/>

【三:Spring整合Mybatis】

目录

  • Spring整合Mybatis(基于xml文件)
    • 1 、项目的大体框架
      • 前期准备
        • 1.2 、使用Navicat在数据库中创建一张表account
        • 1.3、 在pom.xml文件中加入maven(依赖的配置)
        • 1.4、配置相应的数据库连接,以及扫描相应的dao层
      • 编写实体类Account
      • 编写Dao层对应操作
      • 其他文件(没有用到)
        • SpringConfig
        • AccountServiceImpl
      • 测试
  • 2、Spring整合Mybatis(基于注解文件)
    • 1 、项目的大体框架
      • 前期准备(和xml一致的)
        • 配置类(config)
        • 数据层(dao)
        • 实体层(domain)
        • 服务层(service)
        • 测试

Spring整合Mybatis(基于xml文件)

1 、项目的大体框架

前期准备

1.2 、使用Navicat在数据库中创建一张表account


1.3、 在pom.xml文件中加入maven(依赖的配置)
<!-- spring依赖 -->
<dependency><groupId>org.springframework</groupId><artifactId>spring-context</artifactId><version>5.2.5.RELEASE</version>
</dependency>
<!-- spring事务依赖 -->
<dependency><groupId>org.springframework</groupId><artifactId>spring-tx</artifactId><version>5.2.5.RELEASE</version>
</dependency>
<dependency><groupId>org.springframework</groupId><artifactId>spring-jdbc</artifactId><version>5.2.5.RELEASE</version>
</dependency>
<!-- mybatis依赖 -->
<dependency><groupId>org.mybatis</groupId><artifactId>mybatis</artifactId><version>3.5.1</version>
</dependency>
<!-- mybatis和spring集成依赖 -->
<dependency><groupId>org.mybatis</groupId><artifactId>mybatis-spring</artifactId><version>1.3.1</version>
</dependency>
<!-- mysql驱动 -->
<dependency><groupId>mysql</groupId><artifactId>mysql-connector-java</artifactId><version>5.1.9</version>
</dependency>
<!-- 阿里的连接池 -->
<dependency><groupId>com.alibaba</groupId><artifactId>druid</artifactId><version>1.1.12</version>
</dependency>
<!-- 单元测试 -->
<dependency><groupId>junit</groupId><artifactId>junit</artifactId><version>4.11</version><scope>test</scope>
</dependency>
<build><resources><resource><directory>src/main/java</directory> <!--所在的目录--><includes> <!--包括目录下的.properties,.xml 文件都会扫描到--><include>**/*.properties</include><include>**/*.xml</include></includes><filtering>false</filtering></resource></resources></build>

1.4、配置相应的数据库连接,以及扫描相应的dao层
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE configurationPUBLIC "-//mybatis//DTD Config 3.0//EN"".dtd">
<!-- mybatis的主配置文件 -->
<configuration><properties resource="jdbc.properties"></properties><typeAliases><package name="com.xiong.domain"/></typeAliases><!-- 配置环境 --><environments default="mysql"><!-- 配置mysql的环境--><environment id="mysql"><!-- 配置事务的类型--><transactionManager type="JDBC"></transactionManager><!-- 配置数据源(连接池) --><dataSource type="POOLED"><!-- 配置连接数据库的4个基本信息 --><property name="driver" value="${jdbc.driver}"/><property name="url" value="${jdbc.url}"/><property name="username" value="${jdbc.username}"/><property name="password" value="${jdbc.password}"/></dataSource></environment></environments><!-- 指定映射配置文件的位置,映射配置文件指的是每个dao独立的配置文件如果是用注解来配置的话,此处应该使用class属性指定被注解的dao全限定类名--><mappers><package name="com.xiong.dao"/></mappers>
</configuration>

配置数据库连接的配置文件:jdbc.properties

jdbc.driver=com.mysql.jdbc.Driver
jdbc.url=jdbc:mysql://localhost:3306/eesy_mybatis
jdbc.username=root
jdbc.password=123456

编写实体类Account

package com.xiong.domain;import java.io.Serializable;public class Account implements Serializable {private  Integer id;private  String name;private  Double  money;public Integer getId() {return id;}public void setId(Integer id) {this.id = id;}public String getName() {return name;}public void setName(String name) {this.name = name;}public Double getMoney() {return money;}public void setMoney(Double money) {this.money = money;}@Overridepublic String toString() {return "Account{" +"id=" + id +", name='" + name + '\'' +", money=" + money +'}';}
}

编写Dao层对应操作

package com.xiong.dao;import com.xiong.domain.Account;
import org.apache.ibatis.annotations.Insert;
import org.apache.ibatis.annotations.Select;import java.util.List;public interface AccountDao {@Insert("insert into account(name,money) values(#{name},#{money})")void save(Account account);@Select("select * from  from account")List<Account> findAll();@Select("select * from  account where id =#{id}")Account findByID(Integer i);
}

其他文件(没有用到)

SpringConfig
package com.xiong.config;import org.springframework.context.annotation.ComponentScan;
import org.springframework.context.annotation.Configuration;
/*** 如果不配置扫描就行报错  可以使用*/
@Configuration  //设定当前类为配置类
@ComponentScan({"com.xiong.service.impl"})  //用于设置注解扫描路径,次注解只能添加一次
public class SpringConfig {// 表示当前返回值是一个bean
}

AccountServiceImpl
package com.xiong.service.impl;import com.xiong.service.AccountService;
import org.springframework.stereotype.Service;@Service
public class AccountServiceImpl implements AccountService {@Overridepublic void saves() {System.out.println("11111");}
}

测试

package com.xiong;
import com.xiong.dao.AccountDao;
import com.xiong.domain.Account;
import org.apache.ibatis.io.Resources;
import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.session.SqlSessionFactoryBuilder;
import java.io.IOException;
import java.io.InputStream;public class App {public static void main(String[] args) throws IOException {//1、创建SqlSessionFactoryBuilder对象SqlSessionFactoryBuilder sqlSessionFactoryBuilder=new SqlSessionFactoryBuilder();//2、加载SqlMapConfig.xml配置InputStream inputStream = Resources.getResourceAsStream("SqlMapConfig.xml");//3、创建SqlSessionFactory对象SqlSessionFactory sqlSessionFactory =sqlSessionFactoryBuilder.build(inputStream);//4、加载SqlSessionSqlSession sqlSession=sqlSessionFactory.openSession();//5、执行SqlSession对象执行查询,获取结果AccountDao accountDao=sqlSession.getMapper(AccountDao.class);Account ac=accountDao.findByID(1);System.out.println(ac);//6、释放资源sqlSession.close();}
}

结果

2、Spring整合Mybatis(基于注解文件)

1 、项目的大体框架

前期准备(和xml一致的)

配置类(config)

jdbcConfig

package com.xiong.config;import com.alibaba.druid.pool.DruidDataSource;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.Bean;import javax.sql.DataSource;public class JdbcConfig {/*** jdbc.driver=com.mysql.jdbc.Driver* jdbc.url=jdbc:mysql://localhost:3306/eesy_mybatis* jdbc.username=root* jdbc.password=123456*/@Value("com.mysql.jdbc.Driver")private  String driver;@Value("jdbc:mysql://localhost:3306/eesy_mybatis")private  String url;@Value("root")private  String userName;@Value("123456")private  String password;/*** s实现第三bean注入资源* @return*/@Beanpublic DataSource dataSource(){DruidDataSource ds=new DruidDataSource();ds.setDriverClassName(driver);ds.setUrl(url);ds.setUsername(userName);ds.setPassword(password);return ds;}
}

MybatiesConfig

package com.xiong.config;
import org.mybatis.spring.SqlSessionFactoryBean;
import org.mybatis.spring.mapper.MapperScannerConfigurer;
import org.springframework.context.annotation.Bean;
import javax.sql.DataSource;public class MybatiesConfig {@Beanpublic SqlSessionFactoryBean sqlSessionFactory(DataSource dataSource){SqlSessionFactoryBean sfb=new SqlSessionFactoryBean();sfb.setTypeAliasesPackage("com.xiong.domain");sfb.setDataSource(dataSource);return sfb;}@Beanpublic MapperScannerConfigurer mapperScannerRegistrar(){MapperScannerConfigurer msc=new MapperScannerConfigurer();msc.setBasePackage("com.xiong.dao");return msc;}
}

SpringConfig

package com.xiong.config;import org.springframework.context.annotation.ComponentScan;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.Import;
import org.springframework.context.annotation.PropertySource;/*** 如果不配置扫描就行报错  可以使用*/
@Configuration  //设定当前类为配置类
@ComponentScan({"com.xiong"})  //用于设置注解扫描路径,次注解只能添加一次
@PropertySource("classpath:jdbc.properties")
@Import({JdbcConfig.class,MybatiesConfig.class})
public class SpringConfig {// 表示当前返回值是一个bean}

数据层(dao)
package com.xiong.dao;import com.xiong.domain.Account;
import org.apache.ibatis.annotations.Insert;
import org.apache.ibatis.annotations.Select;import java.util.List;public interface AccountDao {@Insert("insert into account(name,money) values(#{name},#{money})")void save(Account account);@Select("select * from  from account")List<Account> findAll();@Select("select * from  account where id =#{id}")Account findByID(Integer i);
}

实体层(domain)
package com.xiong.domain;import java.io.Serializable;public class Account implements Serializable {private  Integer id;private  String name;private  Double  money;public Integer getId() {return id;}public void setId(Integer id) {this.id = id;}public String getName() {return name;}public void setName(String name) {this.name = name;}public Double getMoney() {return money;}public void setMoney(Double money) {this.money = money;}@Overridepublic String toString() {return "Account{" +"id=" + id +", name='" + name + '\'' +", money=" + money +'}';}
}

服务层(service)
  • 实现(imp)
package com.xiong.service.impl;import com.xiong.dao.AccountDao;
import com.xiong.domain.Account;
import com.xiong.service.AccountService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;import java.util.List;@Service
public class AccountServiceImpl implements AccountService {@Autowiredprivate AccountDao accountDao;public void save(Account account) {accountDao.save(account);}@Overridepublic Account findById(Integer id) {return accountDao.findByID(id);}@Overridepublic List<Account> findAll() {return accountDao.findAll();}
}
  • 接口(interfa)
package com.xiong.service;import com.xiong.domain.Account;import java.util.List;public interface AccountService {void save(Account account);Account findById(Integer id);List<Account> findAll();}

测试
package com.xiong;import com.xiong.config.SpringConfig;
import com.xiong.domain.Account;
import com.xiong.service.AccountService;
import org.springframework.context.ApplicationContext;
import org.springframework.context.annotation.AnnotationConfigApplicationContext;public class App2 {public static void main(String[] args) {ApplicationContext ctx=new AnnotationConfigApplicationContext(SpringConfig.class);AccountService accountService=ctx.getBean(AccountService.class);Account ac=accountService.findById(2);System.out.println(ac);}
}

更多推荐

【三:Spring整合Mybatis】

本文发布于:2023-12-07 10:29:29,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1670998.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:Spring   Mybatis

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!