导入坐标
- 主要用到mysql,mybatis,整合mybatis
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>org.example</groupId>
<artifactId>spring</artifactId>
<version>1.0-SNAPSHOT</version>
<properties>
<maven.compiler.source>8</maven.compiler.source>
<maven.compiler.target>8</maven.compiler.target>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
</properties>
<dependencies>
<!--spring核心容器坐标-->
<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.2.8</version>
</dependency>
<!--mybatis坐标-->
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis</artifactId>
<version>3.5.6</version>
</dependency>
<!--mysql坐标-->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>5.1.47</version>
</dependency>
<!--spring整合druid坐标-->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-jdbc</artifactId>
<version>5.2.10.RELEASE</version>
</dependency>
<!--spring整合mybatis坐标-->
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis-spring</artifactId>
<version>1.3.0</version>
</dependency>
</dependencies>
</project>
创建配置类
1、配置类
package com.itheima.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.itheima") //扫描路径包下的bean
@PropertySource("classpath:jdbc.properties") //加载properties文件
@Import({JdbcConfig.class, MybatisConfig.class}) //导入管理第三方bean
public class SpringConfig {
}
2、创建管理mybatis类 获取SqlSessionFactory对象
package com.itheima.config;
import org.mybatis.spring.SqlSessionFactoryBean;
import org.mybatis.spring.mapper.MapperScannerConfigurer;
import org.springframework.context.annotation.Bean;
import javax.sql.DataSource;
public class MybatisConfig {
@Bean //注入引用类型只需要在方法参数上添加需要的参数即可 但是必须有这个bean
public SqlSessionFactoryBean sqlSessionFactoryBean(DataSource dataSource){
SqlSessionFactoryBean sqlSessionFactoryBean = new SqlSessionFactoryBean(); //创建sqlSessionFactoryBean
sqlSessionFactoryBean.setTypeAliasesPackage("com.itheima.pojo"); //设置类型别名
sqlSessionFactoryBean.setDataSource(dataSource); // 设置数据库连接信息 这个对象在jdbcConfig类里已经定义好了
return sqlSessionFactoryBean;
}
@Bean
public MapperScannerConfigurer configurer(){
MapperScannerConfigurer configurer = new MapperScannerConfigurer(); //创建MapperScannerConfigurer
configurer.setBasePackage("com.itheima.mapper"); // 设置对映射文件的访问路径
return configurer;
}
}
3、创建jdbcConfig创建dataSource对象
package com.itheima.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 {
@Value("${jdbc.driverClassName}") //注入简单类型 使用@Value注解设置变量的值
private String driver;
@Value("${jdbc.url}")
private String url;
@Value("${jdbc.userName}")
private String userName;
@Value("${jdbc.password}")
private String password;
@Bean //管理第三方bean定义方法 加上@Bean注解 使用@Impact注解将bean导入到配置类中即可
public DataSource dataSource(){
DruidDataSource dataSource = new DruidDataSource();
dataSource.setDriverClassName(driver); //设置对应属性
dataSource.setUrl(url);
dataSource.setUsername(userName);
dataSource.setPassword(password);
return dataSource;
}
}
4、创建Mapper接口,Spring整合Mybatis只需要写Mapper接口即可实现类由自动代理创建
package com.itheima.mapper;
import com.itheima.pojo.User;
import org.apache.ibatis.annotations.Select;
import org.springframework.stereotype.Repository;
@Repository
public interface UserMapper {
@Select("select * from user where id = #{id};") //使用注解映射Sql Spring整合Mybatis只需要写Mapper接口即可实现类由自动代理创建
User selectById(int id);
}
5、创建Service接口和实现类
package com.itheima.service.impl;
import com.itheima.mapper.UserMapper;
import com.itheima.pojo.User;
import com.itheima.service.UserService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
@Service
public class UserServiceImpl implements UserService {
@Autowired //主动装配
private UserMapper userMapper;
@Override
public User selectById(int id) {
return userMapper.selectById(id);
}
}
main
package com.itheima;
import com.itheima.config.SpringConfig;
import com.itheima.pojo.User;
import com.itheima.service.impl.UserServiceImpl;
import org.springframework.context.ApplicationContext;
import org.springframework.context.annotation.AnnotationConfigApplicationContext;
public class App {
public static void main(String[] args) {
ApplicationContext text = new AnnotationConfigApplicationContext(SpringConfig.class); //创建AnnotationConfigApplicationContext对象
UserServiceImpl bean = text.getBean(UserServiceImpl.class); //获取UserServiceImplBean
User users = bean.selectById(2);//调用UserServiceImpl的selectById方法
System.out.println(users);
}
}
整合junit
1、导入坐标
<!--junit坐标-->
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.12</version>
<scope>test</scope>
</dependency>
<!--spring整合junit坐标-->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-test</artifactId>
<version>5.2.10.RELEASE</version>
</dependency>
</dependencies>
2、创建测试类
package com.itheima;
import com.itheima.config.SpringConfig;
import com.itheima.service.UserService;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.test.context.ContextConfiguration;
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
@RunWith(SpringJUnit4ClassRunner.class)//spring整合Junit专用类加载器
@ContextConfiguration(classes = SpringConfig.class) //指定上下文配置类
public class ServiceTest {
@Autowired //自动装配 想测什么就加载什么
private UserService userService;
@Test
public void selectByIdTest(){
System.out.println(userService.selectById(2));
}
}