一、mybatis初体验helloworld

本文介绍了MyBatis框架的基本概念及优势,并通过一个简单的HelloWorld示例详细展示了如何搭建环境、编写代码及进行数据库交互。从环境搭建到具体实现,为初学者提供了全面的指导。

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

用了挺久的mybatis了一直没有做一个系统的学习记录,最近比较清闲就来记录一下

一、介绍

mybatis是一个操作吃就层与数据库打交道的框架。是一个半自动型框架,与之对应的就是hibernate全自动框架。
优点:
1.mybatis支持sql与java代码的分离,写在java代码中则修改时每次都需要重新编译,便于sql管理。
2.连表查询结果便于封装vo,mybatis是一个半自动框架,每一个操作数据库的行为都由自己来编写sql操作数据库,结果返回值便于封装成对象。例如连表查询操作结果可直接封装成对象,hibernate则不支持。
3.灵活,性能消耗小,hibernate每一个vo对象都需要一个xml映射文件,所以无法处理连表查询结果,并且当只需要查询其某几个字段时hibernate是会把所有字段全部查询的,性能消耗较大。

二、永远的helloworld

  1. 建表sql
CREATE TABLE `employee` (
  `id` int(32) NOT NULL AUTO_INCREMENT,
  `user_name` varchar(20) DEFAULT NULL,
  `gender` varchar(2) DEFAULT NULL,
  `email` varchar(20) DEFAULT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=6 DEFAULT CHARSET=utf8
  1. 新建一个maven工程 source-mybatis
  2. 导入依赖
    <!--mybatis依赖  -->
    <dependency>
		<groupId>org.mybatis</groupId>
		<artifactId>mybatis</artifactId>
		<version>3.4.6</version>
	</dependency>
	<!-- 数据库连接 -->
	<dependency>
	    <groupId>mysql</groupId>
	    <artifactId>mysql-connector-java</artifactId>
	    <version>5.1.38</version>
	</dependency>
  1. 创建vo类与mapper接口
//get set 就不显示了
public class Employee {
	private Integer id;
	private String userName;
	private String gender;
	private String email;
	}


//mapper 接口
public interface EmployeeMapper {
	public Employee selectEmp(int id);
	public int saveEmpOne(Employee emp);
}
  1. 配置文件 mybatis-config.xml 与mapper 接口配置文件
<?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>

<!--数据库连接配置方式2  -->
  <properties>
  		<property name="driver" value="com.mysql.jdbc.Driver"/>
  		<property name="url" value="jdbc:mysql://hadoop202:3306/hymc"/>
  		<property name="username" value="root"/>
  		<property name="password" value="root"/>
  </properties>
<!--数据库连接配置方式3
    <properties resource=""/>
    <properties url=""/> -->
    
  <environments default="development">
    <environment id="development">
      <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}"/>
<!--    数据库连接配置方式1
		<property name="driver" value="com.mysql.jdbc.Driver"/>
        <property name="url" value="jdbc:mysql://hadoop202:3306/hymc"/>
        <property name="username" value="root"/>
        <property name="password" value="root"/> -->
      </dataSource>
    </environment>
  </environments>
  <!-- 将我们写好的sql映射文件注册到全局配置文件中 -->
  <mappers>
      <!-- xml映射配置方式 -->
    <mapper resource="mapper/EmployeeMapperXml.xml"/>
  </mappers>
</configuration>

mapper接口配置文件:EmployeeMapperXml.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="com.cjy.mybatis.dao.EmployeeMapper">

<resultMap type="com.cjy.mybatis.entity.Employee" id="baseMap">
		<id column="id" property="id" />
		<result column="user_name" property="userName" />
		<result column="gender" property="gender" />
		<result column="email" property="email" />
</resultMap>
<parameterMap type="com.cjy.mybatis.entity.Employee" id="parameMap">
	<parameter property="userName" resultMap="baseMap"/>
	<parameter property="gender" resultMap="baseMap"/>
	<parameter property="email" resultMap="baseMap"/>
</parameterMap>

  <select id="selectEmp" resultType="com.cjy.mybatis.entity.Employee" parameterType="int">
    select id,user_name userName,gender,email,hobbys from employee where id = #{id}
  </select>
  
  <insert id="saveEmpOne" parameterMap="parameMap" ><!-- or parameterType="com.cjy.mybatis.entity.Employee" -->
      INSERT INTO employee(user_name,gender,email,hobbys) 
      VALUES(#{userName},#{gender},#{email})
  </insert>
  
</mapper>
  1. 测试代码
    @Test
    public void test4() throws IOException{
    	 String resource = "mybatis-config.xml";
    	 InputStream inputStream = null;
		 inputStream = Resources.getResourceAsStream(resource);
		 SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
	     SqlSession openSession = sqlSessionFactory.openSession();
		 EmployeeMapper mapper = openSession.getMapper(EmployeeMapper.class);
         Employee employee = mapper.selectEmp(1);
         System.out.println(employee);
         //Employee [id=1, userName=zhangsan , gender=0, email=zhangsan@163.com]
	}
demo地址:

https://github.com/chenjy512/mybatis-demo/tree/master/source-mybatis-01helloworld

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值