目录
6.创建主配置类,并指定扫描的包,指定读取的properties配置文件
7.创建数据源外部配置类JdbcConfig,引入jdbc.prperties文件中值
8.创建外部配置类MybatisConfig,配置SqlsessionFactory
利用Spring整合Mybatis,不在使用MyBatisConfig.xml配置文件,通过配置类来代替XMl文件中的设置;
1.在pom.xml文件中添加需要用的项目依赖
<dependencies>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context</artifactId>
<version>5.2.10.RELEASE</version>
</dependency>
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>druid</artifactId>
<version>1.1.16</version>
</dependency>
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis</artifactId>
<version>3.5.6</version>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>5.1.47</version>
</dependency>
<dependency>
<!--Spring操作数据库需要该jar包-->
<groupId>org.springframework</groupId>
<artifactId>spring-jdbc</artifactId>
<version>5.2.10.RELEASE</version>
</dependency>
<dependency>
<!--Spring与Mybatis整合的jar包,这个jar包mybatis在前面,因为是Mybatis提供的-->
<groupId>org.mybatis</groupId>
<artifactId>mybatis-spring</artifactId>
<version>1.3.0</version>
</dependency>
</dependencies>
2.添加jdbc.properties文件
jdbc.driver=com.mysql.jdbc.Driver
jdbc.url=jdbc:mysql://localhost:3306/db12
jdbc.username=root
jdbc.password=root
3.准备数据库表和模型类
//数据库中的表中的字段,需要和模型类中属性对应;
public class Student {
private int id;
private String name;
private int age;
private int cid;
}
4.创建Dao接口
@Repository
public interface StuDao {
@Insert("insert into student(name,age,cid)values(#{name},#{age},#{cid})")
void save(Student student);
@Delete("delete from student where id = #{id} ")
void delete(Integer id);
@Update("update student set name = #{name} , age = #{age},cid=#{cid} where id = #{id}")
void update(Student student);
@Select("select * from student")
List<Student> findAll();
@Select("select * from student where id = #{id}")
Student findById(Integer id);
}
5.创建Service层接口和实现类
public interface StuService {
void save(Student student);
void delete(Integer id);
void update(Student student);
List<Student> findAll();
Student findById(Integer id);
}
@Service("stuService")
public class StuServiceImpl implements StuService {
@Autowired //指定根据类型自动注入
private StuDao stuDao;
@Override
public void save(Student student) {
stuDao.save(student);
}
@Override
public void delete(Integer id) {
stuDao.delete(id);
}
@Override
public void update(Student student) {
stuDao.update(student);
}
@Override
public List<Student> findAll() {
return stuDao.findAll();
}
@Override
public Student findById(Integer id) {
return stuDao.findById(id);
}
}
6.创建主配置类,并指定扫描的包,指定读取的properties配置文件
@Configuration //spring的主配置类
@ComponentScan("com.heima") //指定扫描的包
@PropertySource("classpath:jdbc.properties") //指定读取的配置文件
public class SpringConfig {
}
7.创建数据源外部配置类JdbcConfig,引入jdbc.prperties文件中值
public class JdbcConfig {
@Value("${jdbc.driver}")
private String driver;
@Value("${jdbc.url}")
private String url;
@Value("${jdbc.username}")
private String name;
@Value("${jdbc.password}")
private String password;
@Bean("dataSource")
public DataSource dataSource(){
DruidDataSource ds = new DruidDataSource();
ds.setDriverClassName(driver);
ds.setUrl(url);
ds.setUsername(name);
ds.setPassword(password);
return ds;
}
}
8.创建外部配置类MybatisConfig,配置SqlsessionFactory
//mybatis配置类
public class MybatisConfig {
@Bean //定义bean,SqlSessionFactoryBean,用于产生SqlSessionFactory对象
public SqlSessionFactoryBean sqlSessionFactory(DataSource dataSource){
//创建sqlsessionFactoryBean对象
SqlSessionFactoryBean ssfb = new SqlSessionFactoryBean();
//设置模型类的别名扫描
ssfb.setTypeAliasesPackage("com.heima.domain");
//设置数据源
ssfb.setDataSource(dataSource);
return ssfb;
}
//定义bean,返回MapperScannerConfigurer对象,用来处理原始配置文件中的mappers相关配置加载数据层的Mapper接口类
@Bean
public MapperScannerConfigurer mapperScannerConfigurer(){
MapperScannerConfigurer msc = new MapperScannerConfigurer();
//设置所扫描的包路径
msc.setBasePackage("com.heima.dao");
return msc;
}
}
9.在主配置类中引入外部配置类
@Configuration //spring的主配置类
@ComponentScan("com.heima") //指定扫描的包
@PropertySource("classpath:jdbc.properties") //指定读取的配置文件
@Import({JdbcSpring.class,MybatisConfig.class}) //引入外部配置类
public class SpringConfig {
}
10.测试类中运行
public class Test1 {
public static void main(String[] args) throws IOException {
AnnotationConfigApplicationContext axt = new AnnotationConfigApplicationContext(SpringConfig.class);
StuService stuService = axt.getBean(StuService.class);
Student student = stuService.findById(2);
System.out.println(student);
}
}