(一)使用Mybatis实现在student数据库中插入一个学生信息
准备工作
首先下载好对应的maven和修改好其中的xml文件及配好环境变量之后,再下载好mybatis之后,在idea中修改好配置,就可以创建maven文件了,选择创建maven-…-quickstart 然后一个maven项目就创建好了(ps:在联网的时候创建)
创建好之后右下角有个这样的图
选择enable auto-import就可以了
1.引入相关依赖
使用项目管理工具maven仓库来管理JAR包
因为该项目(插入学生用到了数据库)所以需要在项目的pom.xml文件中导入MySQL驱动包,MyBatis包,JUnit测试包(一般自动有JUnit)
直接在浏览器中搜maven仓库,进去,搜你需要用的包名,选择相应的版本,粘贴到pom.xml文件中即可
另外:idea不会自动编译src/main/java目录下的xml文件,所以需要在pom.xml加上一下代码,目的是将项目中的src/main/java目录下的xml等资源文件进行编译进classes文件夹
加入的位置在</ build>上面
<resources>
<resource>
<directory>src/main/java</directory>
<includes>
<include>**/*.xml</include>
</includes>
</resource>
</resources>
创建mybatis核心配置文件
在src/main/java目录下创建mybatis核心配置文件,用于项目的环境配置,如:链接数据库等相关配置,通常命名为mybatis-config,xml
在下载好的mybatis中找到里面的说明文件,搜dtd,选择带有configuration的那个,直接粘贴到里面就行
<?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">
<environment id="development">
<transactionManager type="JDBC"/>
<dataSource type="POOLED">
<property name="driver" value="com.mysql.jdbc.Driver"/>
<property name="url" value="jdbc:mysql://localhost:3306/test?serverTimezone=GMT%2B8"/>
<property name="username" value="root"/>
<property name="password" value=""/>
</dataSource>
</environment>
</environments>
<mappers>
<mapper resource="映射文件的位置"/>
</mappers>
</configuration>
上面除了修改driver,url等,还有在< mappers>里面需要些映射文件的位置,映射文件可以有多个
3.创建数据库表,创建POJO实体
略(自己创建了一个student表,有自增id属性,name,age,score四个属性)
4.创建映射文件
在你的包下面创建dao包
里面自己写管理学生的接口,和实现接口的类,实现接口的类中先不写内容
下面创建映射文件,在自己的包下面创建一个mapper文件夹,在mapper文件夹下创建映射文件StudentMapper.xml,该文件主要用于配置sql语句和Java对象之间的映射,使sql语句查询出来的数据能够被封装成Java对象。一个项目中可以有多个映射文件,每个实体都可以有其对应的映射文件,映射文件通常使用POJO实体+Mapper命名,例如Student实体类的映射文件名就可以命名成StudentMapper.xml
在下载好的mybatis中找到里面的说明文件,搜dtd,选择带有mapper的那个,直接粘贴到里面就行
<?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="xxx">
<insert id="insertStudent" parameterType="com.wwj.entity.Student">
insert into student(name,age,score) values (#{name},#{age},#{score})
</insert>
</mapper>
上面namespace里面随便写上什么,之后在控制台用log4j输出日志信息的时候可以选择
然后在< mapper>下面写你需要的操作,插入就用insert,查找就用select等,其属性id="insertStudent"现在可以随便起,之后sqlSession执行插入命令的时候会用到,另一个属性parameterType="com.wwj.entity.Student"是参数类型,这个就是Student类型,但是要写全路径,不然项目运行时找不到
5.写student实现类
所有的mybatis应用都是以SqlSessionFactory对象为中心,而SqlSessionFactoryBuilder就是SqlSessionFactory的构造者。SqlSessionFactoryBuilder通过build()方法构建SqlSessionFactory对象。
package com.wwj.dao;
import com.wwj.entity.Student;
import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.session.SqlSessionFactoryBuilder;
import org.apache.ibatis.io.Resources;
import java.io.IOException;
import java.io.InputStream;
public class StudentDaoImp implements IStudentDao {
@Override
public void insertStudent(Student student) {
SqlSession sqlSession = null;
// 1.创建SqlSessionFactoryBuilder对象
SqlSessionFactoryBuilder builder = new SqlSessionFactoryBuilder();
try {
// 2.读取mybatis-config.xml文件
InputStream in = Resources.getResourceAsStream("mybatis-config.xml");
// 3.创建sqlsessionfactory对象,参数读取链接哪个数据库
SqlSessionFactory factory = builder.build(in);
// 4.创建sqlsession对象
sqlSession = factory.openSession();
// 5.执行插入命令,第一个参数是studentmapper.xml文件中写的哪一条执行语句的id
// 第二个参数是要插入的数据
sqlSession.insert("insertStudent",student);
// 6.手动提交
sqlSession.commit();
} catch (IOException e) {
e.printStackTrace();
}finally {
if(sqlSession != null){
sqlSession.close();
}
}
}
}
这里写的比较繁琐但是好理解,之后可以简化代码,创建一个辅助类的文件夹用来创建sqlsession对象
6.进行测试
public static void main(String[] args) {
IStudentDao studentDao = new StudentDaoImp();
Student student = new Student("jj",15,96.5);
studentDao.insertStudent(student);
}
完成!!!