Mybatis实现简单的CURD操作

1.项目架构

在这里插入图片描述
需要的jar包
在这里插入图片描述
com.pojo.Grade.java(plain ordinary java object)实体类

package com.pojo;
public class Grade {
	private int id;
	private int grade;
	public int getId() {
		return id;
	}
	public void setId(int id) {
		this.id = id;
	}
	public int getGrade() {
		return grade;
	}
	public void setGrade(int grade) {
		this.grade = grade;
	}
	@Override
	public String toString() {
		return "Grade [id=" + id + ", grade=" + grade + "]";
	}
}

log4j.properties日志输出文件

# Global logging configuration
log4j.rootLogger=DEBUG, stdout
# Console output...
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern=%5p [%t] - %m%n

mysql.properties 数据库配置信息文件

jdbc.driver=com.mysql.jdbc.Driver
jdbc.url=jdbc:mysql://localhost:3306/examsystem?characterEcoding=utf-8
jdbc.username=root
jdbc.password=123456

SqlMapConfig.xml 主配置文件
通过引入外部数据库配置信息,使用${jdbc.driver}来获取值

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE configuration
PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-config.dtd">
<configuration>
	<!-- 引入外部配置信息 -->
	<properties resource="mysql.properties"></properties>

	<!-- 和spring整合后 environments配置将废除 -->
	<environments default="development">
		<environment id="development">
			<!-- 使用jdbc事务管理 -->
			<transactionManager type="JDBC" />
			<!-- 数据库连接池 -->
			<dataSource type="POOLED">
				<property name="driver" value="${jdbc.driver}" />
				<property name="url" value="${jdbc.url}" />
				<property name="username" value="${jdbc.username}" />
				<property name="password" value="${jdbc.password}" />
			</dataSource>
		</environment>
	</environments>
	
	<mappers>
		<mapper resource="com/mapper/Grade.xml" />
	</mappers>
</configuration>

DBUtil工具类
主要为了获取sqlSession

package com.util;
import java.io.IOException;
import org.apache.ibatis.io.Resources;
import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.session.SqlSessionFactoryBuilder;

public class DBUtil {
	private static SqlSessionFactory ssf;
	static {
		SqlSessionFactoryBuilder sfb =new SqlSessionFactoryBuilder();
		try {
			ssf=sfb.build(Resources.getResourceAsStream("SqlMapConfig.xml"));
		} catch (IOException e) {
			e.printStackTrace();
		}
	}
	public static SqlSession openSqlSession() {
		return ssf.openSession();
	}
}

Grade.xml
sql映射文件,务必将对应接口类的全路径配置正确。并且id一定要唯一

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<!-- namespace:命名空间【重要】对应接口类的全路径 -->
<mapper namespace="com.mapper.GradeMapper">
	<select id="selectById" parameterType="int" resultType="com.pojo.Grade">
		select * from Grade where id=#{id}
	</select>
	<insert id="insertGrade" parameterType="int">
		 insert into Grade(grade) VALUES (#{grade})
	</insert>
	<update id="updateGradeById" parameterType="com.pojo.Grade">
		update Grade set grade=#{grade} where id= #{id}
	</update>
	<delete id="deleteGradeById" parameterType="int">
		delete from Grade where id=#{id}
	</delete>
</mapper>

GradeMapper.java
sql映射文件对应的接口类

接口类与映射文件的对应
返回值类型 : resultType
方法名 : id
参数 :parameterType

package com.mapper;
import com.pojo.Grade;
public interface GradeMapper {
	public Grade selectById(int id); 
	public void insertGrade(int grade);
	public void updateGradeById(Grade grade);
	public void deleteGradeById(int id);
}

测试类:MybatisDemo.java

package com.test;

import org.apache.ibatis.session.SqlSession;
import org.junit.Test;

import com.mapper.GradeMapper;
import com.pojo.Grade;
import com.util.DBUtil;

public class MybatisDemo {
	//基于DBUtil和Mapper接口方式
	@Test	//查询
	public void testQuery2() {
		//1.获取SqlSession
		SqlSession ss=DBUtil.openSqlSession();
		//2.通过SqlSession的getMapper方法获取GradeMapper
		GradeMapper gm=ss.getMapper(GradeMapper.class);
		Grade grade=gm.selectById(1);
		System.out.println(grade);
		ss.close();
	}
	
	@Test	//插入
	public void testQuery3() {
		//1.获取SqlSession
		SqlSession ss=DBUtil.openSqlSession();
		//2.通过SqlSession的getMapper方法获取GradeMapper
		GradeMapper gm=ss.getMapper(GradeMapper.class);
		gm.insertGrade(6666);
		ss.commit();
		ss.close();
	}
	
	@Test	//删除
	public void testQuery4() {
		//1.获取SqlSession
		SqlSession ss=DBUtil.openSqlSession();
		//2.通过SqlSession的getMapper方法获取GradeMapper
		GradeMapper gm=ss.getMapper(GradeMapper.class);
		gm.deleteGradeById(2);
		ss.commit();
		ss.close();
	}
	
	@Test	//修改
	public void testQuery5() {
		//1.获取SqlSession
		SqlSession ss=DBUtil.openSqlSession();
		//2.通过SqlSession的getMapper方法获取GradeMapper
		GradeMapper gm=ss.getMapper(GradeMapper.class);
		Grade grade=new Grade();
		grade.setId(4);
		grade.setGrade(6666);
		gm.updateGradeById(grade);
		ss.commit();
		ss.close();
	}
	
}

提醒:如果在映射文件Grade.xml中,id务必唯一,且所有的sql语句不能存在错误。

猜你喜欢

转载自blog.csdn.net/qq_29864051/article/details/89514417