Mybaits学习笔记(一)

本文详细介绍了一个基于MyBatis的增删改查实例,包括环境搭建、数据库操作等关键步骤。

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

一、首先看下整体结构


二、导入jar包

    <!-- 连接MySQL数据库需要的jar包 -->  
    <dependency>  
       <groupId>mysql</groupId>  
       <artifactId>mysql-connector-java</artifactId>  
       <version>5.1.36</version>  
    </dependency>  
    <dependency>
       <groupId>org.mybatis</groupId>
       <artifactId>mybatis</artifactId>
       <version>3.2.3</version>
       <scope>provided</scope>
    </dependency>
三、编写总配置文件,命名为config.xml

<?xml version="1.0" encoding="GBK"?>
<!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">    <!-- 使用JDBC的事务控制机制 -->
			<transactionManager type="JDBC"></transactionManager>
			<dataSource type="UNPOOLED"><!-- 使用连接池 -->
			<!-- 链接数据库信息 -->
				<property name="driver" value="com.mysql.jdbc.Driver"></property>
				<property name="url" value="jdbc:mysql:///etoak"></property>
				<property name="username" value="root"></property>
				<property name="password" value="etoak"></property>
			</dataSource>
		</environment>
	</environments>
	<mappers><!-- 映射文件位置 -->
		<mapper resource="com/etoak/bean/Student.xml"></mapper>
	</mappers>
</configuration>

四、编写session工厂类

package com.etoak.factory;

import java.io.Reader;

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 SF {
	private static SqlSessionFactory f;
	private SF(){}
	static{
		try {//1.
			Reader reader = Resources.
					getResourceAsReader("config.xml");
			f = new SqlSessionFactoryBuilder().build(reader);
		} catch (Exception e) {
			e.printStackTrace();
		}
	}
	public static SqlSession getSession(){
		return f.openSession();
	}
	public static void main(String[] args) {
		System.out.println(SF.getSession());
	}
}

五、创建数据库表

drop table if exists student;
create table student(
	id int primary key auto_increment,
	name varchar(32),
	age int,
	birth datetime
);
六、对应的JavaBean

package com.etoak.bean;

import java.util.Date;

public class Student {
	private int id;
	private String name;
	private int age;
	private Date birth;
	
	public int getId() {
		return id;
	}
	public void setId(int id) {
		this.id = id;
	}
	public String getName() {
		return name;
	}
	public void setName(String name) {
		this.name = name;
	}
	public int getAge() {
		return age;
	}
	public void setAge(int age) {
		this.age = age;
	}
	public Date getBirth() {
		return birth;
	}
	public void setBirth(Date birth) {
		this.birth = birth;
	}
}
七、JavaBean对应的配置文件

<?xml version="1.0" encoding="GBK"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.etoak">
	<insert id="addStu" parameterType="com.etoak.bean.Student">
		insert into student(      name,age,birth)
		values(#{name},#{age},#{birth})
	</insert>
	<select id="getStuById" parameterType="int"
	resultType="com.etoak.bean.Student">
		select * from student where id=#id:<span class="s1" style="font-family: Arial, Helvetica, sans-serif;">INTEGER</span><span style="font-family: Arial, Helvetica, sans-serif;">#</span>
	</select>
	<update id="updateStu" parameterType="com.etoak.bean.Student">
		update student set name=#{name},age=#{age},birth=#{birth}
		where id=#{id}
	</update>
</mapper>
八、Dao接口与实现

package com.etoak.dao;

import com.etoak.bean.Student;

public interface IStudentDao {
	boolean addStudent(Student stu);
	Student getStuById(int id);
	void updateStudent(Student stu);
}
package com.etoak.dao;
import org.apache.ibatis.session.SqlSession;
import com.etoak.bean.Student;
import com.etoak.factory.SF;

public class StudentDaoImpl implements IStudentDao{
    SqlSession session = null;
    @Override
    public boolean addStudent(Student stu) {
        try {
            session = SF.getSession();
            //第一个参数表示执行SQL语句的Id
            //第二个参数是执行该SQL语句所需要参数
            session.insert("addStu",stu);
            session.commit();
            return true;
        } catch (Exception e) {
            e.printStackTrace();
            if(session!=null)session.rollback();
            return false;
        }finally{
            if(session!=null)session.close();
        }
    }
    @Override
    public Student getStuById(int id) {
        try {
            session = SF.getSession();
            Student stu =(Student)session.selectOne("getStuById",id);
            session.commit();
            return stu;
        } catch (Exception e) {
            e.printStackTrace();
            if(session!=null)session.rollback();
            return null;
        }finally{
            if(session!=null)session.close();
        }
    }
    @Override
    public void updateStudent(Student stu) {
        try {
            session = SF.getSession();
            session.update("updateStu",stu);
            session.commit();
        } catch (Exception e) {
            e.printStackTrace();
            if(session!=null)session.rollback();
        }finally{
            if(session!=null)session.close();
        }
    }
}
九、测试

package com.etoak.test;

import java.util.Date;
import com.etoak.bean.Student;
import com.etoak.dao.IStudentDao;
import com.etoak.dao.StudentDaoImpl;

public class Test {

	public static void main(String[] args) {
		/*Student stu = new Student();
		stu.setName("etoak");
		stu.setAge(123);
		stu.setBirth(new Date());
		*/
		IStudentDao dao = new StudentDaoImpl();
		//dao.addStudent(stu);
		Student stu = (Student)dao.getStuById(1);
		stu.setName("newNAME");
		dao.updateStudent(stu);
	}
}

推荐myBatis博客

http://czj4451.iteye.com/blog/1976365








评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值