spring整合mybatis流程总结
文章目录
spring整合mybatis流程总结
1.maven坐标导入
<?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>com.ttc</groupId><artifactId>SSM-demo</artifactId><version>1.0-SNAPSHOT</version><packaging>jar</packaging><dependencies><!--导入spring依赖--><dependency><groupId>org.springframework</groupId><artifactId>spring-context</artifactId><version>5.2.10.RELEASE</version></dependency><!--Jdbc驱动--><dependency><groupId>mysql</groupId><artifactId>mysql-connector-java</artifactId><version>8.0.28</version></dependency><!-- MyBatis依赖 --><dependency><groupId>org.mybatis</groupId><artifactId>mybatis</artifactId><version>3.5.7</version></dependency><!-- Druid依赖 --><dependency><groupId>com.alibaba</groupId><artifactId>druid</artifactId><version>1.1.12</version></dependency><!--Spring整合mybatis的依赖--><dependency><groupId>org.mybatis</groupId><artifactId>mybatis-spring</artifactId><version>2.0.6</version></dependency><!--导入Spring操作数据库依赖--><dependency><groupId>org.springframework</groupId><artifactId>spring-jdbc</artifactId><version>5.2.10.RELEASE</version></dependency></dependencies></project>
2.数据库设计
-- 创建学生信息表
CREATE TABLE `student` (`id` int NOT NULL AUTO_INCREMENT,`name` varchar(255) DEFAULT NULL,`age` int DEFAULT NULL,PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3;-- 插入数据
INSERT INTO `boot`.`student` (`id`, `name`, `age`) VALUES ('1', '灰太狼', '22');
INSERT INTO `boot`.`student` (`id`, `name`, `age`) VALUES ('2', '喜羊羊', '16');
3.实体类设计
package com.ttc.entity;/* 学生类*/
public class Student {/* id: 编号*/private Integer id;/* name: 名字*/private String name;/* age: 年龄*/private Integer age;@Overridepublic String toString() {return "Student{" +"id=" + id +", name='" + name + '\\'' +", age=" + age +'}';}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 Integer getAge() {return age;}public void setAge(Integer age) {this.age = age;}
}
4.dao层设计
package com.ttc.dao;import com.ttc.entity.Student;
import org.apache.ibatis.annotations.Delete;
import org.apache.ibatis.annotations.Insert;
import org.apache.ibatis.annotations.Select;
import org.apache.ibatis.annotations.Update;import java.util.List;public interface StudentDao {/* 1.查询单个数据 @param id* @return Student*/@Select("select id,name,age from student where id = #{id}")Student select(Integer id);/* 2.修改单个数据 @param student*/@Update("update student set name = #{name},age = #{age} where id = #{id}")void update(Student student);/* 3.插入单个数据 @param student*/@Insert("insert into student(name,age) values (#{name},#{age})")void insert(Student student);/* 4.删除单个数据 @param id*/@Delete("delete from student where id = #{id}")void delete(Integer id);/* 5.查询所有* @return List*/@Select("select id,name,age from student")List<Student> getAll();}
5.service层
- service层接口
package com.ttc.service;import com.ttc.entity.Student;import java.util.List;public interface StudentService {/* 1.查询单个数据 @param id* @return Student*/Student select(Integer id);/* 2.修改单个数据 @param student*/void update(Student student);/* 3.插入单个数据 @param student*/void insert(Student student);/* 4.删除单个数据 @param id*/void delete(Integer id);/* 5.查询所有* @return List*/List<Student> getAll();
}
- service层实现类
package com.ttc.service.impl;import com.ttc.dao.StudentDao;
import com.ttc.entity.Student;
import com.ttc.service.StudentService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;import java.util.List;@Service
public class StudentServiceImpl implements StudentService {@Autowiredprivate StudentDao studentDao;public Student select(Integer id) {return studentDao.select(id);}public void update(Student student) {studentDao.update(student);}public void insert(Student student) {studentDao.insert(student);}public void delete(Integer id) {studentDao.delete(id);}public List<Student> getAll() {return studentDao.getAll();}
}
6.config配置类
6.0 jdbc.properties
jdbc.driver=com.mysql.cj.jdbc.Driver
jdbc.url=jdbc:mysql://localhost:3306/boot
jdbc.username=root
jdbc.password=root
6.1 SpringConfig
package com.ttc.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.ttc")
@Import({JdbcConfig.class,MybatisConfig.class})
@PropertySource("classpath:jdbc.properties")
public class SpringConfig {
}
6.2 jdbcConfig 配置数据源
package com.ttc.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;@Beanpublic DataSource dataSource() {DruidDataSource ds = new DruidDataSource();ds.setDriverClassName(driver);ds.setUrl(url);ds.setUsername(username);ds.setPassword(password);return ds;}
}
6.3 MybatisConfig
package com.ttc.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 {/* 注入sqlSessionFactory @param dataSource* @return*/@Beanpublic SqlSessionFactoryBean sqlSessionFactoryBean(DataSource dataSource) {SqlSessionFactoryBean sqlSessionFactoryBean = new SqlSessionFactoryBean();sqlSessionFactoryBean.setDataSource(dataSource);sqlSessionFactoryBean.setTypeAliasesPackage("com.ttc.entity");return sqlSessionFactoryBean;}/* 注入Mapper Scanner* @return*/@Beanpublic MapperScannerConfigurer mapperScannerConfigurer() {MapperScannerConfigurer mapperScannerConfigurer = new MapperScannerConfigurer();mapperScannerConfigurer.setBasePackage("com.ttc.dao");return mapperScannerConfigurer;}}
7.启动类
package com.ttc;import com.ttc.config.SpringConfig;
import com.ttc.entity.Student;
import com.ttc.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);// 1.查询Student student = studentService.select(1);System.out.println("1.查询单个结果为:" + student);// 2.修改Student student2 = new Student();student2.setAge(999);student2.setName("懒羊羊");student2.setId(2);studentService.update(student2);System.out.println("2.修改成功");// 3. 添加Student student3 = new Student();student3.setName("沸羊羊");student3.setAge(18);studentService.insert(student3);System.out.println("3.添加成功");// 4. 删除studentService.delete(2);System.out.println("4.删除成功");// 5.查询所有List<Student> students = studentService.getAll();for (Student s : students) {System.out.println("5.查询所有结果为:" + s);}}
}
运行结果
四月 09, 2023 9:21:38 下午 com.alibaba.druid.support.logging.JakartaCommonsLoggingImpl info
信息: {dataSource-1} inited
1.查询单个结果为:Student{id=1, name='灰太狼', age=22}
2.修改成功
3.添加成功
4.删除成功
5.查询所有结果为:Student{id=1, name='灰太狼', age=22}
5.查询所有结果为:Student{id=5, name='沸羊羊', age=18}Process finished with exit code 0