1.maven工程引入依赖:
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis</artifactId>
<version>x.x.x</version>
</dependency>
2.新建一个mybatis-config.xml文件,内容如下:
<?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>
<environments default="development">//通过“development”选择需要连接的数据库
<environment id="development">//id->区分不同的数据库
<transactionManager type="JDBC"/>
<dataSource type="POOLED">//数据库连接池
<property name="driver" value="${driver}"/>//驱动
<property name="url" value="${url}"/>
//数据库的账号密码
<property name="username" value="${username}"/>
<property name="password" value="${password}"/>
</dataSource>
</environment>
</environments>
//映射文件配置
<mappers>
<mapper resource="org/mybatis/example/BlogMapper.xml"/>
</mappers>
</configuration>
3.新建一个TeacherMapper.xml文件,在该文件内书写SQL语句
<?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">
<!--将对于教师表的sql操作书写在文件中
namespace:命名空间
作用:文件在项目中的唯一标识 用于sql语句的查找
接口和mapper文件映射 namespace的值和接口的全限定名一致
接口中的方法 和sql语句的映射 方法名 和 sql标签id保持一致
-->
<mapper namespace="cn.kgc.mybatis.mapper.TeacherMapper">
<!-- 查询 select
id:sql语句的唯一标识 一般id 对应接口的方法名
resultType返回结果类型 数据类型的全限名 包名+类名 反射
-->
<select id="selectAll" resultType="cn.kgc.mybatis.entity.Teacher">
select id,tea_name,profession from teacher
</select>
<!--根据id查询 #{}获取参数 参数的占位==? 避免SQL的注入 ${} 存在SQL注入
sql语句中如果只有一个参数传递 参数的取值名字 任意
-->
<select id="selectOne" resultType="cn.kgc.mybatis.entity.Teacher" parameterType="integer">
select * from teacher where id = #{id}
</select>
<!--添加教师信息 参数类型是对象类型,取值时使用对象中属性名-->
<insert id="addOne" parameterType="cn.kgc.mybatis.entity.Teacher">
insert into teacher (id,tea_name,profession)value (#{id},#{teaName},#{profession})
</insert>
<!--更新教师信息-->
<update id="updateOne" parameterType="cn.kgc.mybatis.entity.Teacher">
update teacher set tea_name=#{teaName} where id=#{id}
</update>
<!--删除教师信息-->
<delete id="deleteOne" parameterType="integer">
delete from teacher where id=#{id}
</delete>
</mapper>
4.新建实体类Teacher.class
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
@Data
@Builder
@AllArgsConstructor
@NoArgsConstructor
public class Teacher {
private String teaName;
private Integer id;
private String profession;
}
5.创建接口文件TeacherMapper.java
public interface TeacherMapper {
List<Teacher> selectAll();
Teacher selectOne(Integer id);
Integer updateOne(Teacher teacher);
Integer addOne(Teacher teacher);
Integer deleteOne(Integer id);
}
6.创建TestTeacherMapper.java文件
public class TestTeacherMapper {
private SqlSessionFactory factory;
@Before
public void init(){
try {
//加载mybatis的配置文件
InputStream resourceAsStream = Resources.getResourceAsStream("config/mybatis-config.xml");
factory = new SqlSessionFactoryBuilder().build(resourceAsStream);
} catch (IOException e) {
e.printStackTrace();
}
}
@Test
public void selectAll(){
//sql会话对象 执行数据的crud操作
SqlSession sqlSession = factory.openSession();
//通过sqlSession获取teacherMapper的代理对象 类似之前使用的接口类实现对象 org.apache.ibatis.binding.MapperProxy@1c3a4799
TeacherMapper mapper = sqlSession.getMapper(TeacherMapper.class);
List<Teacher> teachers = mapper.selectAll();
for (Teacher teacher:teachers){
System.out.println("teacher = " + teacher);
}
}
@Test
public void selectOne(){
SqlSession sqlSession = factory.openSession();
TeacherMapper mapper = sqlSession.getMapper(TeacherMapper.class);
Teacher teacher = mapper.selectOne(1);
System.out.println("teacher = " + teacher);
}
@Test
public void addOne(){
SqlSession sqlSession = factory.openSession();
TeacherMapper mapper = sqlSession.getMapper(TeacherMapper.class);
Teacher teacher = new Teacher("jack", 20, "sdsdsdsdds");
Integer integer = mapper.addOne(teacher);
sqlSession.commit();
System.out.println(integer>0?"true":"false");
}
@Test
public void updateOne(){
SqlSession sqlSession = factory.openSession();
TeacherMapper mapper = sqlSession.getMapper(TeacherMapper.class);
Teacher teacher = new Teacher("jason", 20, "sdsdsdsdds");
Integer integer = mapper.updateOne(teacher);
sqlSession.commit();
System.out.println(integer>0?"true":"false");
}
}