Mybatis实现删改查操作(关于学生对象的增删改查的“删改查”)

一·查询(查所有)

1·修改“StudentDao”

添加List<Student> loadStus()
package edu.mju.stuwork.dao;

import java.util.List;

import edu.mju.stuwork.domain.Student;

public interface StudentDao {

		void addStu(Student stu);
		List<Student> loadStus();//泛型,List里面只能包含学生,不能包含别的东西了

}

2·修改“StudentMapper.xml”

添加“loadAll”的映射
     <select id="loadAll" resultType="Student"><!-- 这个方法没有参数,但是有返回值“Student” -->
      select *
      from tbl_student
      order by stu_no desc
   	</select>

3·修改“StudentDaoMybatisImpl”

添加	
@Override
public List<Student> loadStus() {
	// TODO Auto-generated method stub
	return null;
}
完善其内容
	@Override
	public List<Student> loadStus() {
//		获得SQLSession
		SqlSession session = MybatisUtils.getSession();
		
		List<Student> stuList = session.selectList("edu.mju.stuwork.StudentMapper.loadAll");/* 要用selectList来完成,返回值是一个List */

		session.commit();
		
		MybatisUtils.closeSession(session);	
		
		return stuList;
	}

4·来到测试程序,进行测试

测试程序:
package edu.mju.stuwork.test;

import java.util.List;

import edu.mju.stuwork.dao.StudentDao;
import edu.mju.stuwork.dao.StudentDaoMybatisImpl;
import edu.mju.stuwork.domain.Student;

public class Tester {

	public static void main(String[] args) {


		StudentDao stuDao = new StudentDaoMybatisImpl();
		List<Student> stuList = stuDao.loadStus();
		
		for (Student stu : stuList)
			System.out.println(stu);

	}

}
有查到19条数据,但是结果都是空。表示没有分装成功。

在这里插入图片描述

Tips:驼峰和下划线

学生属性名是驼峰的,数据库的字段名是下划线的

在这里插入图片描述

在自动映射的情况下,下划线与驼峰不能匹配。它虽然知道要创建学生对象,但是没办法存进去。
需要添加“设置项”,将下划线映射到驼峰命名。

设置项:

  <settings>
	<setting name="mapUnderscoreToCamelCase" value="true"/>
  </settings> 

将其添加到“mybatis-config.xml”的如下位置:

在这里插入图片描述
再测试,可行:
在这里插入图片描述
数据库不区分大小写,不能用驼峰。Java用下划线不符合规范,就用这种办法解决。
会将下划线转成驼峰,再存回去。是基于配置的编程。

二·查询(查单个)

1·修改“StudentDao”

添加

Student getStuByNo(int stuNo);//根据学生ID来获得一个学生信息

2·修改“StudentMapper.xml”

添加:

     <select id="getStuByNo" parameterType="int" resultType="Student">
      select *
      from tbl_student
      where stu_no=#{stuNo}<!-- 只有一个参数 -->
   </select>

只有一个参数,所以就算写成aaa也是没有影响的。
在这里插入图片描述

3·修改“StudentDaoMybatisImpl”

添加:

	@Override
	public Student getStuByNo(int stuNo) {
//		获得SQLSession
		SqlSession session = MybatisUtils.getSession();
		
		Student stu =session.selectOne("edu.mju.stuwork.StudentMapper.getStuByNo",stuNo);/* 要用selectList来完成,返回值是一个List,选择单个 */

		session.commit();
		
		MybatisUtils.closeSession(session);	
		
		return stu;
	}

4·测试

来到Tester.java

package edu.mju.stuwork.test;

import java.util.List;

import edu.mju.stuwork.dao.StudentDao;
import edu.mju.stuwork.dao.StudentDaoMybatisImpl;
import edu.mju.stuwork.domain.Student;

public class Tester {

	public static void main(String[] args) {

		StudentDao stuDao = new StudentDaoMybatisImpl();
		Student stu = stuDao.getStuByNo(10);
		System.out.println(stu);
	}

}

在这里插入图片描述

三·修改

1·修改“StudentDao”

添加

void updateStudent(Student stu);

2·修改“StudentMapper.xml”

添加

     <update id="updateStu" parameterType="Student">
      update tbl_student
      set stu_name=#{stuName},stu_mark=#{stuMark}
      where stu_no=#{stuNo}
   </update>

这里就不止一个参数了,参数名要好好写。

3·修改“StudentDaoMybatisImpl”

添加

	@Override
	public void updateStudent(Student stu) {

		SqlSession session = MybatisUtils.getSession();
		
		session.update("edu.mju.stuwork.StudentMapper.updateStu",stu);
		
		session.commit();		
		
		MybatisUtils.closeSession(session);	

	}

4·测试

package edu.mju.stuwork.test;

import java.util.List;

import edu.mju.stuwork.dao.StudentDao;
import edu.mju.stuwork.dao.StudentDaoMybatisImpl;
import edu.mju.stuwork.domain.Student;

public class Tester {

	public static void main(String[] args) {


		StudentDao stuDao = new StudentDaoMybatisImpl();
		
		Student stu = stuDao.getStuByNo(10);
		System.out.println(stu);
		
		stu.setStuName("mikeha");
		stu.setStuMark(100);
		stuDao.updateStudent(stu);
		
		stu = stuDao.getStuByNo(10);
		System.out.println(stu);
	}

	
}

在这里插入图片描述

四·删除

1·修改“StudentDao”

添加

void delStudent(int stuNo);

2·修改“StudentMapper.xml”

   <delete id="delStu" parameterType="int">
      delete from tbl_student
      where stu_no=#{stuNo}
   </delete>

3·修改“StudentDaoMybatisImpl”

添加

@Override
public void delStudent(int stuNo) {

	SqlSession session = MybatisUtils.getSession();
	
	session.delete("edu.mju.stuwork.StudentMapper.delStu",stuNo);
	
	session.commit();
    MybatisUtils.closeSession(session);		

}

4·测试

package edu.mju.stuwork.test;

import java.util.List;

import edu.mju.stuwork.dao.StudentDao;
import edu.mju.stuwork.dao.StudentDaoMybatisImpl;
import edu.mju.stuwork.domain.Student;

public class Tester {

	public static void main(String[] args) {

		StudentDao stuDao = new StudentDaoMybatisImpl();
		
		stuDao.delStudent(10);

	}

}

在这里插入图片描述

五·将JDBC实现更换为Mybatis实现

1·将“StudentServiceImpl”的JDBC实现更换为Mybatis实现

在这里插入图片描述
将这些更换为Mybatis实现
在这里插入图片描述

2·测试

删除
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
Mybatis使用了连接池,速度快不少。
JDBC使我们了解Mybatis在做什么,Mybatis替代了我们以前在JDBC做的部分事情。但是只用到这种程度存在多表查询的结果不能实现自动映射,只能手动书写的问题。

对于使用Ajax和MyBatis进行增删改模糊询和分页的操作,你可以按照以下步骤进行: 1. 建立后端接口:首先,在你的后端框架(如Spring MVC)中,建立相应的Controller来处理前端发送的求。在Controller中,你可以使用MyBatis来执行数据库操作。 2. Ajax求发送:在前端页面中,使用Ajax技术发送求到后端接口。你可以使用jQuery或其他JavaScript库来方便地发送Ajax求。 3. 前端页面设计:设计一个用户界面,包含相应的表单或搜索框,用于输入询条件或操作数据。 4. 后端接口处理:在后端Controller中,根据接收到的求参数,调用对应的MyBatis方法来执行数据库操作。例如,你可以使用`@RequestMapping`注解来映射不同的求路径,并在方法中调用MyBatis的Mapper接口方法。 5. MyBatis配置:在MyBatis的配置文件中,配置数据库连接信息和相应的Mapper映射文件。在Mapper映射文件中定义增删改查的SQL语句,并与对应的Java方法进行映射。 6. 分页处理:如果需要进行分页询,你可以在后端接口中添加分页参数,并在MyBatis的Mapper映射文件中使用相应的SQL语句进行分页询。可以通过`LIMIT`关键字或者使用MyBatis提供的插件来实现分页功能。 需要注意的是,以上步骤只是一个简单的指导,具体的实现方式会根据你的项目环境和需求有所不同。你需要根据自己的项目进行适当的调整和扩展。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值