java配置Mybatis并测试(附maven配置流程)

1.创建项目

(1)创建maven项目

*记得勾上这个

上面是分组ID,是maven项目包的唯一标识,类似包名

下面的ID是项目名称,随意取即可

(2)创建动态web项目

推荐选择3.1而不是4.0,为了保障服务器稳定性

设置好项目名一直next即可

2.导入mysql驱动和mybatis的jar包

(1)利用maven配置,配置pom.xml文件

这里是用来配置导入所需jar包的,是管理maven项目的核心配置文件

*里一定要写入正确的版本号,否则会报错

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
  <modelVersion>4.0.0</modelVersion>
  <groupId>cs.ahau.cn</groupId>
  <artifactId>MybatisTest</artifactId>
  <version>0.0.1-SNAPSHOT</version>
  
  <dependencies>
  <!-- 数据库连接部分,以mysql为例-->
	<dependency>
	    <groupId>mysql</groupId>
	    <artifactId>mysql-connector-java</artifactId>
	    <version>5.1.37</version>
	</dependency>
	
	<!-- Mybatis部分-->
	<dependency>
	    <groupId>org.mybatis</groupId>
	    <artifactId>mybatis</artifactId>
	    <version>3.4.5</version>
	</dependency>
  </dependencies>

</project>

(2)动态web项目常规导入jar包

在WEB-INF的lib文件夹下导入所有所需jar包

还需在项目中重构导入jar包,不然调用报错

3.配置log4j.properties文件

为了方便查看控制台输出SQL语句

# Global logging configuration
log4j.rootLogger=ERROR, stdout
# MyBatis logging configuration...
log4j.logger.com.lifeng=DEBUG
# 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

web项目在src下创建包,如cs.su.cn

maven项目在src/main/java下新建包

4.创建Student实体类

直接在包内新建实体类

*get、set与toString方法可通过右键代码区选择源码(source)选择一键生成

package cs.ahau.edu.cn;

public class Student {
	private String StuNo;
	private String StuName;
	private String StuPassword;
	
	public Student(String sno, String sname, String spwd) {
		this.StuNo = sno;
		this.StuName = sname;
		this.StuPassword = spwd;
	}
	
	public String getStuNo() {
		return StuNo;
	}
	public void setStuNo(String stuNo) {
		StuNo = stuNo;
	}
	public String getStuName() {
		return StuName;
	}
	public void setStuName(String stuName) {
		StuName = stuName;
	}
	public String getStuPassword() {
		return StuPassword;
	}
	public void setStuPassword(String stuPassword) {
		StuPassword = stuPassword;
	}
	@Override
	public String toString() {
		return "Student [StuNo=" + StuNo + ", StuName=" + StuName + ", StuPassword=" + StuPassword + "]";
	}
}

5.创建对象映射Dao层接口

在包内新建StudentDao类

仅定义抽象方法,等待被实现

package cs.ahau.edu.cn;

import java.util.List;

public interface StudentDao {
	public List<Student> selectAllStudent();
	public int insertStudent(Student student);
	public int updateStudent(Student student);
	public int deleteStudent(String sno);
}

6.创建SQL映射文件

在包内新建StudentMapper.xml映射文件

*每个sql语句需要单独区分开,id要与Dao接口的函数名一致,parameterType与resultType分别对应参数类型和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">

<mapper namespace="cs.ahau.edu.cn.StudentDao">
    <!-- 查找所有学生 -->
	<select id="selectAllStudent" resultType="cs.ahau.edu.cn.Student"> <!-- parameterType="java.lang.String"  -->
	    select * from stu
	</select>
	<!-- 插入一个学生 -->
	<insert id="insertStudent" parameterType="cs.ahau.edu.cn.Student">
	    insert into stu(StuNo, StuName, StuPassword) values (#{StuNo}, #{StuName}, #{StuPassword}) 
	</insert>	
	<!-- 修改一个学生 -->
	<update id="updateStudent" parameterType="cs.ahau.edu.cn.Student">
	    update stu set StuPassword = #{StuPassword} where StuNo = #{StuNo}
	</update>
	<!-- 删除一个学生 -->
	<delete id="deleteStudent" parameterType="java.lang.String">
	    delete from stu where sno = #{0}
	</delete>
</mapper>

7.创建MyBatis主配置文件:mybatis-config.xml

web项目:在src主目录下创建

maven项目:在src/main/resources下创建

用于配置mysql connector连接信息和sql映射文件的Mapper路径

*结构需要按代码所示逐级嵌套书写,configuration下紧接着写好jdbc.properties的路径,否则下面的property处引用变量会出问题

<?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="jdbc.properties"/>
    
	<environments default="development">
	    <environment id="development">
	        <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="cs/ahau/edu/cn/StudentMapper.xml"/>
	</mappers>
</configuration>

 这里是单独的jdbc.properties文件,用来独立存放jdbc驱动连接信息

*如果mysql服务器版本在8.0以上,driver需要写成com.mysql.cj.jdbc.Driver

jdbc.driver = com.mysql.jdbc.Driver
jdbc.url = jdbc:mysql://127.0.0.1:3306/student?useSSL=false&characterEncoding=UTF8&serverTimezone=Asia/Shanghai
jdbc.username = root
jdbc.password = 123456

8.创建Dao层实现类

在包内新建StudentDaoImpl类

用于实现Dao接口,真正调用mybatis配置文件接入数据库,生成session对象,执行sql语句操作等方法。

包括基本增查改删

*除了查询,所以有关修改数据库信息的操作均需进行提交操作,即在末尾写入session.commit语句,表示提交会话

package cs.ahau.edu.cn;

import java.io.Reader;
import java.util.ArrayList;
import java.util.List;

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 StudentDaoImpl implements StudentDao{
	SqlSession session = null;
	
	public List<Student> selectAllStudent() {
		List<Student> list = new ArrayList<Student>();
		try {
			//1.读取主配置文件mybatis-config.xml
			String resource = "mybatis-config.xml";
			Reader reader = Resources.getResourceAsReader(resource);
			//2.根据主配置文件mybatis-config.xml构建SqlSessionFactory对象factory
			SqlSessionFactoryBuilder builder = new SqlSessionFactoryBuilder();
			SqlSessionFactory factory = builder.build(reader);
			//3.根据SqlSessionFactory对象创建SqlSession对象session
			session = factory.openSession();
			//4.调用SqlSession对象session的selectList方法执行查询数据库的操作,返回映射后的结果集合
			list = session.selectList("cs.ahau.edu.cn.StudentDao.selectAllStudent");	
		}catch (Exception e) {
			e.printStackTrace();
		}
		System.out.println(list);
		return list;
	}
	
	public int insertStudent(Student student) {
		int rs = 0;
		try {
			String resource = "mybatis-config.xml";
			Reader reader = Resources.getResourceAsReader(resource);
			SqlSessionFactoryBuilder builder = new SqlSessionFactoryBuilder();
			SqlSessionFactory factory = builder.build(reader);
			session = factory.openSession();
			rs = session.insert("cs.ahau.edu.cn.StudentDao.insertStudent", student);
			session.commit();
		} catch (Exception e) {
			e.printStackTrace();
		}
		return rs;
	}
	
	public int updateStudent(Student student) {
		int rs = 0;
		try {
			String resource = "mybatis-config.xml";
			Reader reader = Resources.getResourceAsReader(resource);
			SqlSessionFactoryBuilder builder = new SqlSessionFactoryBuilder();
			SqlSessionFactory factory = builder.build(reader);
			session = factory.openSession();
			rs = session.update("cs.ahau.edu.cn.StudentDao.updateStudent", student);
            session.commit();
		} catch (Exception e) {
			e.printStackTrace();
		}
		return rs;
	}
	
	public int deleteStudent(String sno) {
		int rs = 0;
		try {
			String resource = "mybatis-config.xml";
			Reader reader = Resources.getResourceAsReader(resource);
			SqlSessionFactoryBuilder builder = new SqlSessionFactoryBuilder();
			SqlSessionFactory factory = builder.build(reader);
			session = factory.openSession();
			rs = session.delete("cs.ahau.edu.cn.StudentDao.deleteStudent", sno);
            session.commit();
		} catch (Exception e) {
			e.printStackTrace();
		}
		return rs;
	}

}

9.创建主测试类,实例化接口类

将每个sql执行方法分开写成函数,主函数需要测试哪个函数就调用哪个

package cs.ahau.edu.cn;

import java.util.List;

public class MainTest {
	static StudentDao studentdao = new StudentDaoImpl();
	
	public static void main(String[] args) {
		//selectAllStudent();
		Student std = new Student("1000", "xiao", "123");
		insertStudent(std);
	}

	public static void selectAllStudent() {
		List<Student> list = studentdao.selectAllStudent();
		for (int i = 0; i < list.size(); i++) {
			list.get(i).toString();
		}
	}
	
	public static void insertStudent(Student student) {		
		int rs = studentdao.insertStudent(student);
		System.out.println(rs);
	}
	
	public static void updateStudent(Student student) {
		int rs = studentdao.updateStudent(student);
		System.out.println(rs);
	}
	
	public static void deleteStudent(String sno) {
		int rs = studentdao.deleteStudent(sno);
		System.out.println(rs);
	}
}

测试结果如下:

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值