my batis学习笔记
在良久之前才选择写这篇笔记,并不是因为现在才学,而是因为懒造成的后果影响巨大。
——Six_Rabbit 于2020-8-31
什么影响
在写这篇笔记时,在工作或者是学习时,因为电脑数据更新而无法copy,导致自己需要从CSDN上copy配置文件,但是配置文件属实有点凌乱,加之答案不一,所以写一篇适合自己的笔记。
my batis环境搭建
pom.xml配置
<!--mybatis-->
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis</artifactId>
<version>3.5.5</version>
</dependency>
<!--在build中添加以下代码-->
<resources>
<resource>
<directory>src/main/java</directory>
<includes>
<include>**/*.properties</include>
<include>**/*.xml</include>
</includes>
<filtering>true</filtering>
</resource>
</resources>
作为万年不碰pom.xml的cv工程师,忽略上面的代码报了一个错误让我找了半天,最终还是找到了,由于maven的特性,只打包了.java后缀的代码,没有打包xml,所以要加上以上代码。
实体类的搭建
/**
* 学生实体类
* @author SixRabbit
*/
public class Student implements Serializable
{
//id
@JSONField(name = "id")
private Integer id;
//姓名
@JSONField(name = "name")
private String name;
public Student(){}
public Student(Integer id, String name) {
this.id = id;
this.name = name;
}
public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
@Override
public String toString() {
return "Student{" +
"id=" + id +
", name='" + name + '\'' +
'}';
}
}
注意:导入了阿里巴巴的FastJSON包,文中根据字段的注释全部属于FastJSON的注释,用处在于将对象转换成JSON格式的字符串。
在建立实体类(JavaBean)需要和数据库中的表一一对应。
跟据实体类建表或根据表建库
/*
Navicat MySQL Data Transfer
Source Server : t104
Source Server Version : 50624
Source Host : localhost:3306
Source Database : test
Target Server Type : MYSQL
Target Server Version : 50624
File Encoding : 65001
Date: 2020-08-31 18:54:02
*/
SET FOREIGN_KEY_CHECKS=0;
-- ----------------------------
-- Table structure for student
-- ----------------------------
DROP TABLE IF EXISTS `student`;
CREATE TABLE `student` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`name` varchar(255) NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=11 DEFAULT CHARSET=utf8mb4;
-- ----------------------------
-- Records of student
-- ----------------------------
INSERT INTO `student` VALUES ('1', 'SixRabbit');
INSERT INTO `student` VALUES ('2', '1');
INSERT INTO `student` VALUES ('3', '2');
INSERT INTO `student` VALUES ('4', '3');
INSERT INTO `student` VALUES ('5', '4');
INSERT INTO `student` VALUES ('6', '5');
INSERT INTO `student` VALUES ('7', '6');
INSERT INTO `student` VALUES ('10', 'A');
那么准备工作已经完成了,那么开始配置mybatis的xml文件吧
首先先展示一下鄙人的目录结构
首先在resource中写一份mybatis-config.xml
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="mysql">
<environment id="mysql">
<transactionManager type="JDBC"></transactionManager>
<dataSource type="POOLED">
<property name="driver" value="com.mysql.jdbc.Driver"/>
<property name="url" value="jdbc:mysql://127.0.0.1:3306/test"/>
<property name="username" value="root"/>
<property name="password" value=""/>
</dataSource>
</environment>
</environments>
<mappers>
<mapper class="priv.sixrabbit.dao.StudentMapper"/>
</mappers>
</configuration>
在写一份基于实体类的dao层接口StudentMapper
package priv.sixrabbit.dao;
import priv.sixrabbit.javabean.Student;
import java.util.List;
public interface StudentMapper
{
/**
* 查询所有
* @return
*/
List<Student> findAll();
/**
* 根据ID删除
* @return
*/
int deleteStudentForId(Student student);
/**
* 增加学生
* @return
*/
int addStudent(Student student);
/**
* 修改学生数据
* @param student
* @return
*/
int updateStudent(Student student);
}
在写一封基于StudentMapper接口的映射配置文件StudentMapper.xml
<?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">
<mapper namespace="priv.sixrabbit.dao.StudentMapper">
<!--查询所有-->
<select id="findAll" resultType="priv.sixrabbit.javabean.Student">
Select * from Student
</select>
<!--删除学生-->
<delete id="deleteStudentForId" parameterType="priv.sixrabbit.javabean.Student">
delete from student where id = #{id}
</delete>
<!--增加学生-->
<insert id="addStudent" parameterType="priv.sixrabbit.javabean.Student">
insert into student (name) value (#{name})
</insert>
<!--修改学生信息-->
<update id="updateStudent" parameterType="priv.sixrabbit.javabean.Student">
update student set name = #{name} where id = #{id}
</update>
</mapper>
本的环境搭建就基本完工了。