student数据库表
CREATE TABLE Student
(
Sno CHAR(9) PRIMARY KEY,
Sname CHAR(20) UNIQUE,
Ssex CHAR(2),
Sage SMALLINT,
Sdept CHAR(20)
);
insert into student values('201215121','李勇','男',20,'CS');
insert into student values('201215122','刘晨','女',19,'CS');
insert into student values('201215123','王敏','女',18,'MA');
insert into student values('201215125','张立','男',19,'IS');
insert into student values('201215126','李一平','男',18,'IS');
insert into student values('201215127','张琴','女',19,'CS');
insert into student values('201215128','王方','女',20,'MA');
insert into student values('201215129','黄林林','男',21,'IS');
1. 新建一个maven项目
完整项目结构
2. 导入依赖
在pom.xml中导入依赖
<dependencies>
<!--spring依赖-->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context</artifactId>
<version>5.3.20</version>
</dependency>
<!--阿里数据源-->
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>druid</artifactId>
<version>1.1.16</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>8.0.30</version>
</dependency>
<!--spring控制jdbc-->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-jdbc</artifactId>
<version>5.3.20</version>
</dependency>
<dependency>
<!--
Spring与Mybatis整合的jar包
这个jar包mybatis在前面,是Mybatis提供的
-->
<groupId>org.mybatis</groupId>
<artifactId>mybatis-spring</artifactId>
<version>1.3.0</version>
</dependency>
</dependencies>
3. 创建实体类用来接收mybatis返回的数据
domain包中新建一个Student实体类
package cloud.truesun.domain;
public class Student {
String Sname;
String Sno;
String Ssex;
int Sage;
String Sdept;
//setter...getter...toString...方法略
4. 创建Dao接口
在Dao中创建StudentDao接口
如果sql语句比较复杂,建议用xml配置文件
package cloud.truesun.dao;
import cloud.truesun.domain.Student;
import org.apache.ibatis.annotations.Delete;
import org.apache.ibatis.annotations.Select;
import org.apache.ibatis.annotations.Update;
import org.springframework.stereotype.Repository;
import java.util.List;
@Repository
public interface StudentDao {
// 简单增删改查
@Select("select * from student")
List<Student> selectAll();
@Update("insert into student value ('201215130', '张三', '男', 20, '软件')")
void insertInfo();
@Delete("delete from student where Sname=#{Sname}")
void deleteInfoByName(String Sname);
@Update("update student set Sdept=#{Sdept} where Sno=#{Sno}")
void updateSdept(int Sno, String sdept);
}
5. 创建Service接口和实现类
在service下创建impl包和StudentService接口,impl包内创建StudentServiceImpl实现类
package cloud.truesun.service;
import cloud.truesun.domain.Student;
import org.apache.ibatis.annotations.Delete;
import org.apache.ibatis.annotations.Select;
import org.apache.ibatis.annotations.Update;
import java.util.List;
public interface StudentService {
// 简单增删改查
List<Student> selectAll();
void insertInfo();
void deleteInfoByName(String Sname);
void updateSdept(int Sno, String sdept);
}
//StudentServiceImpl实现类
package cloud.truesun.service.impl;
import cloud.truesun.dao.StudentDao;
import cloud.truesun.domain.Student;
import cloud.truesun.service.StudentService;
import org.springframework.beans.factory.annotation.Autowired;
import java.util.List;
@Service
public class StudentServiceImpl implements StudentService {
//支持自动装配注入bean
@Autowired
private StudentDao studentDao;
public List<Student> selectAll() {
return studentDao.selectAll();
}
public void insertInfo() {
studentDao.insertInfo();
}
public void deleteInfoByName(String Sname) {
studentDao.deleteInfoByName(Sname);
}
public void updateSdept(int Sno, String Sdept) {
studentDao.updateSdept(Sno, Sdept);
}
}
6. 创建Spring配置类
在config包下面创建SpringConfig类
resource资源报下创建jdbc.properties配置文件,用来存放连接数据库的配置
package cloud.truesun.config;
import org.springframework.context.annotation.ComponentScan;
import org.springframework.context.annotation.Configuration;
//将该类设置为配置类
@Configuration
//包扫描,用于扫描cloud.truesun下面的bean
@ComponentScan("cloud.truesun")
//导入配置文件
@PropertySource("classpath:jdbc.properties")
public class SpringConfig {
}
jdbc.properties文件(数据库改成自己的数据库,密码改成自己的密码)
jdbc.driver=com.mysql.jdbc.Driver
jdbc.url=jdbc:mysql://localhost:3306/spring_db?useSSL=false
jdbc.username=root
jdbc.password=root
7. 创建Jdbc配置类
在config包下创建JdbcConfig类
package cloud.truesun.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.driver}")
private String driver;
@Value("${jdbc.url}")
private String url;
@Value("${jdbc.username}")
private String userName;
@Value("${jdbc.password}")
private String password;
@Bean
//将该类设置成bean
public DataSource dataSource(){
DruidDataSource ds = new DruidDataSource();
ds.setDriverClassName(driver);
ds.setUrl(url);
ds.setUsername(userName);
ds.setPassword(password);
return ds;
}
}
8. 创建Mybatis配置类
在config报下创建MybatisConfig配置类
package cloud.truesun.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,SqlSessionFactoryBean,用于产生SqlSessionFactory对象
@Bean
public SqlSessionFactoryBean sqlSessionFactory(DataSource dataSource){
SqlSessionFactoryBean ssfb = new SqlSessionFactoryBean();
//设置模型类的别名扫描
ssfb.setTypeAliasesPackage("cloud.truesun.domain");
//设置数据源
ssfb.setDataSource(dataSource);
return ssfb;
}
//定义bean,返回MapperScannerConfigurer对象
@Bean
public MapperScannerConfigurer mapperScannerConfigurer(){
MapperScannerConfigurer msc = new MapperScannerConfigurer();
msc.setBasePackage("cloud.truesun.dao");
return msc;
}
}
9. 将jdbc和mybatis的配置类导入Spring配置类中
在SpingConfig中加入一行注释@Import({JdbcConfig.class,MybatisConfig.class})
@Configuration
//包扫描,主要扫描的是项目中的AccountServiceImpl类
@ComponentScan("cloud.truesun")
@Import({JdbcConfig.class,MybatisConfig.class})
@PropertySource("classpath:jdbc.properties")
public class SpringConfig {
}
10. 编写主类进行测试
在cloud.turesun报下新建一个APP类
package cloud.truesun;
import cloud.truesun.config.SpringConfig;
import cloud.truesun.domain.Student;
import cloud.truesun.service.StudentService;
import org.springframework.context.ApplicationContext;
import org.springframework.context.annotation.AnnotationConfigApplicationContext;
import java.util.List;
public class APP {
public static void main(String[] args) {
ApplicationContext ctx = new AnnotationConfigApplicationContext(SpringConfig.class);
StudentService studentService = ctx.getBean(StudentService.class);
List<Student> students = studentService.selectAll();
for (Student student : students){
System.out.println(student.getSname());
}
}
}
运行结果如下