初入Mybatis写个helloworld

本文详细介绍MyBatis框架的安装配置与基本使用流程,包括环境搭建、CRUD操作及日志配置,适合初学者快速上手。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、刚入Mybatis其实是很郁闷的,苦于jar包的下载,在github上只能眼睁睁的看着,而下载速度受限,速度几乎没有,只能求而次之好不容易在其他平台下了一个老版本mybatis-3.4.6.jar,在这里放网盘了,提取码:j9gt。

二、关于mybatis的初次使用的第一感觉是嗯~ o(* ̄▽ ̄*)o,还不错,sql语句和java代码分离了,降低了耦合。就是配置有点多,初步测试了一把CRUD操作

具体使用和spring差不多一样的步骤了

1、导包

     在导包这里我导入了三个包分别是mysql驱动包,mybatis包,和log4j包:mysql-connector-java-5.1.46.jar、mybatis-3.4.6.jar、log4j-1.2.17.jar(日志框架包的使用要依赖类路径下的一个log4j.properties或者log4j.xml文件,都是有固定配置的,这个包也可不导入)

2、写配置

      mybatis的配置主要分为两个部分,一个是mybatis的主体配置,同样放在类路径下,可以命名为mybatis-config.xml这个配置文件是引导mybatis运行,连接向哪个数据库的。另一个配置部分就是要实现的映射器的映射配置文件了,可以与dao层接口类相关联,管理每一个数据库操作方法。

      mybatis主题配置文件内容如下:

<?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://127.0.0.1:3306/testmysql?characterEncoding=utf8"/>
        <property name="username" value="root"/>
        <property name="password" value=""/>
      </dataSource>
    </environment>
  </environments>
  <!-- 引入我们自己编写的每一个接口的实现文件:映射器实现文件,resource:类路径下的文件 -->
  <mappers>
    <mapper resource="DeptDao.xml"/>
  </mappers>
</configuration>

    映射器实现配置文件如下:

<?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.feilonkji.dao.DeptDao">
    <!-- public Dept getDept(Integer deptNo); 下方的select对应此方法 -->
  	<select id="getDept" resultType="com.feilonkji.bean.Dept">
  		<!-- sql语句不要写分号,写了分号有时候会报异常 -->
  		select * from dept where deptNo=#{deptNo}
  	</select>
  	<!-- public int updateDept(Dept dept); -->
  	<update id="updateDept">
  	<!-- 增删改不需要写返回值类型,如果对应映射器的返回值是int,会自动判断返回影响了多少行
  	     如果返回值是boolean型,同样会自动判断如果影响了0行则会返回false,否则返回true
  	    方法参数时对象时取值直接写相应的属性名
  	 -->
  	    update dept set dname=#{dName} where deptNo=#{deptno}
  	</update>
  	<!-- public int addDept(Dept dept); -->
  	<insert id="addDept">
  	    insert into dept(deptno,dname,loc) values(#{deptno},#{dName},#{loc})
  	</insert>
  	<!-- public int removeDept(Integer deptNo); -->
  	<update id="removeDept">
  		delete from dept where deptno=#{deptNo}
  	</update>
  </mapper>

   上面的映射器配置文件只实现了基本的crud操作,对应接口中的每一个方法,自己配置的映射器配置实现文件一定要在主体配置文件中注册,也就是上面的<mappers>引入自己配置的实现文件。

使用的映射器DeptDao:

public interface DeptDao {
	/**根据部门编号获取部门对象*/
	public Dept getDept(Integer deptNO);
	/**添加部门*/
	public int addDept(Dept dept);
	/**修改部门信息*/
	public int updateDept(Dept dept);
	/**删除部门*/
	public boolean removeDept(Integer deptNo);
	
}

3、测试

      在测试这里又有几个步骤

       1、首先要根据mybatis主体配置文件获取SqlSessionFactory(会话工厂对象)。

       2、从SqlSessionFactory中获取SqlSession

       3、再通过SqlSession获取要实现的映射器的实例对象,然后运行相应方法即可

       测试例子如下:

package com.feilonkji.test;

import static org.junit.jupiter.api.Assertions.*;

import java.io.IOException;
import java.io.InputStream;

import org.apache.ibatis.io.Resources;
import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.session.SqlSessionFactoryBuilder;

import com.feilonkji.bean.Dept;
import com.feilonkji.dao.DeptDao;

class Test {

	@org.junit.jupiter.api.Test
	void test() throws IOException {
		//1、从配置文件中创建一个SqlSessionFactory
		//SqlSessionFactory:是SqlSession工厂,负责创建SqlSession对象
		//SqlSession相当于sql会话(代表和数据库的一次会话)
		String resource = "mybatis-config.xml";
		InputStream inputStream = Resources.getResourceAsStream(resource);
		SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
		//2、获取和数据库的一次会话
		SqlSession openSession = sqlSessionFactory.openSession();
		//3、使用SqlSession操作数据库
		Dept dept;
		try {
			DeptDao deptDao = openSession.getMapper(DeptDao.class);
			dept = deptDao.getDept(10);
		} finally {
			openSession.close();
		}
		System.out.println(dept);
	}

}

关于log4j.jar的使用,我在类路径下添加了一个log4j.properties配置文件,内容如下:

# 
log4j.rootLogger=ERROR, stdout
# MyBatis 这个地方就是填要监听的映射器的路径
log4j.logger.com.feilonkji.dao=TRACE
# \u63A7\u5236\u53F0\u8F93\u51FA
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern=%5p [%t] - %m%n

到此为止就配置完毕啦。mybatis的helloworld测试就完成了。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值