将mybatis与spring进行整合,主要解决的问题就是讲SqlSessionFactory对象交由spring来管理,所以,该整合,只需要将SqlSessionFactory的对象生成器SqlSessionFactoryBean注册在spring容器中,再将其注入给Dao的实现类即可完成整合。
实现spring与mybatis的整合常用的方式:扫描的Mapper动态代理
spring就像插线板一样,mybatis框架是插头,可以很容易的组合到一起。mybatis插头插入spring插线板就是一个整体。
我们需要spring创建以下对象
1.独立的连接池对象,使用阿里的druid连接池
2.SqlSessionFactory对象
3.创建出dao对象
上面三个对象的创建,使用xml的bean标签
Spring集成MyBatis实现步骤:
先准备创建数据库,新建表
第一步:
新建maven项目
第二步:
加入maven的依赖
1.spring的依赖
2.mybatis依赖
3.mysql驱动
4.spring的事务的依赖
5.mybatis和spring集成的依赖:mybatis官方提供的,用来在spring项目中常见mybatis的SqlSessionFactory,dao对象的
junit
junit
4.11
test
org.springframework
spring-context
5.2.5.RELEASE
org.springframework
spring-tx
5.2.5.RELEASE
org.springframework
spring-jdbc
5.2.5.RELEASE
org.mybatis
mybatis
3.5.1
org.mybatis
mybatis-spring
1.3.1
mysql
mysql-connector-java
5.1.9
com.alibaba
druid
1.1.12
src/main/java
**/*.properties
**/*.xml
false
第三步:
创建Student实体类
package com.bjpowernode.domain;
public class Student {
//属性名和列名一样
private Integer id;
private String name;
private String email;
private Integer age;
//无参构造
public Student() {
}
//有参构造
public Student(Integer id, String name, String email, Integer age) {
this.id = id;
this.name = name;
this.email = email;
this.age = age;
}
//set、get方法
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 String getEmail() {
return email;
}
public void setEmail(String email) {
this.email = email;
}
public Integer getAge() {
return age;
}
public void setAge(Integer age) {
this.age = age;
}
@Override
public String toString() {
return "Student{" +
"id=" + id +
", name='" + name + '\'' +
", email='" + email + '\'' +
", age=" + age +
'}';
}
}
第四步:
创建dao接口和mapper文件
第五步:
创建mybatis主配置文件
第六步:
创建Service接口和实现类,属性是dao
Service接口实现类 定义StudentDao属性
package com.bjpowernode.service.impl;
import com.bjpowernode.dao.StudentDao;
import com.bjpowernode.domain.Student;
import com.bjpowernode.service.StudentService;
import java.util.List;
public class StudentServiceImpl implements StudentService {
//引用类型
private StudentDao studentDao;
//使用set注入赋值
public void setStudentDao(StudentDao studentDao) {
this.studentDao = studentDao;
}
@Override
public int addStudent(Student student) {
int num = studentDao.insertStudent(student);
return num;
}
@Override
public List selectStudent() {
List studentList = studentDao.selectStudent();
return studentList;
}
}
第七步:
创建spring的配置文件:声明mybatis的对象交给spring创建
1.数据源
2.SqlSessionFactory
3.Dao对象
4.声明自定义的service
第八步:
创建测试类,获取Service对象,通过service调用dao完成数据库的访问
/*使用Service*/
@Test
public void test03(){
//读取spring主配置文件
String in = "applicationContext.xml";
ApplicationContext ac = new ClassPathXmlApplicationContext(in);
StudentService service = (StudentService) ac.getBean("ServiceStudent");
Student student = new Student(4002,"裴元虎","[email protected]",26);
int i = service.addStudent(student);
System.out.println("添加"+i+"行数据");
}
@Test
public void test04(){
//读取spring主配置文件
String in = "applicationContext.xml";
ApplicationContext ac = new ClassPathXmlApplicationContext(in);
StudentService service = (StudentService) ac.getBean("ServiceStudent");
List studentList = service.selectStudent();
for (Student stu:studentList) {
System.out.println(">>>>"+stu);
}
}
--------------------------------------------------------------------------------
为了方便修改数据库连接信息,我们自己定义个文件专门放数据库连接信息
第一步:
创建数据库连接信息jdbc.properties文件
jdbc.url=jdbc:mysql://localhost:3306/bjpowernode?useSSL=false&serverTimezone=UTC&useUnicode=true&characterEncoding=UTF-8
jdbc.username=root
jdbc.password=123456
第二步:
在spring主配置配置文件中指定连接数据库信息文件
第三步:
在主配置文件中用${}指定连接信息
例如,${jdbc.url}就是jdbc.properties文件中=号左边的值