一、将myBatis配置文件中的数据源的配置交给spring
二、把myBatis配置文件的读取交出去
三、将会话工厂、会话对象创建交给spring完成
四、结合spring注解优势,将myBatis映射文件进行整合
两大框架整合的步骤:
1、导jar包
myBatis里所有的jar包
spring里面相关的jar包
mysql的驱动包
mybatis和spring的整合包
添加数据库数据源、连接池
2、将mybatis框架中关于数据源的配置交给spring框架进行管理
<!--将myBatis数据源配置接管过来-->
<bean id="dataSource" class="org.apache.commons.dbcp2.BasicDataSource">
<property name="driverClassName" value="com.mysql.cj.jdbc.Driver"></property>
<property name="url" value="jdbc:mysql://localhost:3306/mybatis?useSSL=false"></property>
<property name="username" value="root"></property>
<property name="password" value="123456"></property>
</bean>
3、将mybatis中创建会话工厂、会话对象的任务交给spring框架,同时注入mybatis的配置文件,让mybatis框架和spring框架进行完美整合
<!--创建会话工厂、会话对象-->
<bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
<property name="dataSource" ref="dataSource"></property>
<property name="configLocation" value="classpath:mapper/student-config.xml"></property>
</bean>
4、创建po层持久化类
5、将mybatis的配置文件中关于环境配置的部分删除(因为已经交由spring框架管理),只留下映射文件路径部分
6、创建mybatis映射文件
7、Dao层的创建:
mybatis映射文件中所有的id,都将成为dao层接口的所有的方法名
为了实现id和dao层接口方法的一一映射关系,这里需要引入spring的相关注解@Mapper实现接口方法的映射
@Repository
@Mapper
public interface Student_dao {
public List<Student> selectStudent();
public Student selectStudentById(String id);
public List<Student> selectStudentByDept(String dept);
public void insertStudent(Student student);
public void deleteStudent(String id);
public void updateStudent(Student student);
}
8、修改mybatis映射文件中的命名空间
<!--
namespace:命令空间
映射文件的完整路径
-->
<mapper namespace="dao.impl.Student_dao">
9、在spring中增加mybatis的映射管理
<!--spring中增加myBatis的映射管理-->
<bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">
<property name="sqlSessionFactoryBeanName" value="sqlSessionFactory"></property>
<property name="basePackage" value="dao"></property>
</bean>
10、创建控制层
在控制层中注入dao层对象(增删改查的部分可以自行完成)
@Service
public class Student_service {
@Autowired
private Student_dao dao;
public void enter(String id) {
Student stu=dao.selectStudentById(id);
if(stu!=null){
System.out.println("登录成功");
}else {
System.out.println("登录失败");
}
}
public void login(Student student) {
Student stu=dao.selectStudentById(student.getId());
if (stu==null){
dao.insertStudent(student);
System.out.println("注册成功");
}else{
System.out.println("id已存在");
}
}
}
11、注意在spring配置文件添加注解扫描
<context:component-scan base-package="dao"></context:component-scan>
<context:component-scan base-package="service"></context:component-scan>
12、测试
ApplicationContext appCon=new ClassPathXmlApplicationContext("Spring.xml");
Student_service s= (Student_service) appCon.getBean("student_service");
s.enter("1");
Student student2=new Student("7","31",21,"53","51");
s.login(student2);
如何传递多个参数:
一、使用Java Bean传递多个参数
public class User {
private String username;
private String password;
@Repository
@Mapper
public interface Book_dao {
public User selectUserByUserName(User user);
}
<select id="selectUserByUserName" resultType="po.User" parameterType="po.User">
SELECT * FROM `user` WHERE username=#{username} AND `password`=#{password}
</select>
二、使用注解传递多个参数
在dao层给每一个参数添加@Param,@Param里面的(“”)是传递到映射文件中的参数名