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语句不能存在错误。