Mybatis(1)----------简介及第一开发程序

本文详细介绍MyBatis框架的基本概念、解决的问题、环境搭建步骤及配置方法,并提供了一个完整的示例,包括数据库表设计、Mapper文件编写、实体类定义、DAO接口声明以及测试类实现。

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

1、引言:

    Mybatis是⼀个基于java语⾔的持久层的框架,主要⽤来简化数据库的访问操作,内部封装 了原来的jdbc代码,替换了原有项⽬开发中的jdbc技术,他可以⾃动完成对象与关系的映射 (OR),极⼤简化了我们的开发,提⾼开发效率。

2、JDBC中存在的问题

      1).⼤量的代码冗余 (处理结果集的时候存在⼤量的冗余) 

      2).不能完成数据库和实体的⾃动转换 (需要⼿动封装实体,不能⾃定封装实体类)

3、环境搭建:

      1)引入核心jar:

        2)配置提示文件

    window--->preferences


输入"xml ",找到Xml CataLog选项并点击右侧的Add....

  

    在弹出的选项卡中选择本地磁盘上mybatis配置⽂件的提示信息,并输⼊提示的 key


注意:

主配置⽂件: 

        Public ID: -//mybatis.org//DTD Config 3.0//EN 

        Address: http://mybatis.org/dtd/mybatis-3-config.dtd 

映射⽂件: 

        Public ID: -//mybatis.org//DTD Mapper 3.0//EN 

        Address: http://mybatis.org/dtd/mybatis-3-mapper.dtd

  3)创建Mybatis的主配置文件

    a)在项⽬的src⽬录中⿏标右键,选择new,在搜索中搜索xml 选择XML Basic Template

    b)点击下⼀步,在输⼊框中输⼊⽂件的名称 "mybatis-config.xml"

    c)点击Next 下⼀步,选择Create XML file from DTD file

    d)点击Next 下一步,选择DTD⽂件,选择配置的主配置⽂件的dtd


    e)点击Next  下一步,直接finish即可;

生成配置文件如下:



4)书写连接相关的配置

<?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="dev">
	<!-- 配置测试环境 -->
	<environment id="dev">
		<!-- 事务管理方式  Type属性:是否使用事务,固定写为JDBC -->
		<transactionManager type="JDBC"/>
		<!-- 配置数据源   type属性:是否使用连接池POOLED(是)UNPOOL(不是)-->
		<dataSource type="POOLED"  >
			<property name="driver" value="oracle.jdbc.driver.OracleDriver"/>
			<property name="url" value="jdbc:oracle:thin:@localhost:1521:ORCL"/>
			<property name="username" value="hr"/>
			<property name="password" value="123"/>
		</dataSource>
	</environment>
</environments>


<!-- 进行注册 -->
<mappers>
	<!-- 写UserDaoMapper.xml所在的路径 -->
	<mapper resource="com/baizhi/dao/UserDaoMapper.xml" />
</mappers>


</configuration>

5)创建数据库

create table s_user (
	id number premary key,
	username varchar2(20),
    password varchar2(20),
	birthday date,
	xingzuo varchar2(20),
	shuxiang varchar2(20),
);

mapper.xml(在dao包中)

<?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:是mapping所在类的权限定类名 -->
<mapper namespace="com.baizhi.dao.UserDao">
	 
	 <!--根据id查询   parameterType:传入数据的类型    id:dao中对应的方法名 -->
	<select id="selectById" parameterType="Integer" resultType="com.baizhi.entity.User">
		select id,username,password,birthday,xingzuo,shuxiang from s_user where id = #{id}
	</select>
	<!--根据username和password查询  两个数据作为传参,在dao中加入@param绑定数据  resultType:返回值类型-->
	<select id="selectByNameAndPassword" resultType="com.baizhi.entity.User">
		select id,username,password,birthday,xingzuo,shuxiang from s_user where username=#{username} and password=#{password}
	</select>
	<!--查询所有   id:dao类中对应的方法名 -->
	<select id="selectAll" resultType="com.baizhi.entity.User">
		select id,username,password,birthday,xingzuo,shuxiang from s_user
	</select>
	
	<!--插入数据  -->
	<insert id="insert" parameterType="com.baizhi.entity.User">
		insert into s_user values(#{id},#{username},#{password},#{birthday},#{xingzuo},#{shuxiang})
	</insert>
	<!--更新数据-->
	<update id="update" parameterType="com.baizhi.entity.User">
		update s_user set username=#{username},password=#{password} where id=#{id}
	</update>
	<!--删除数据-->
	<delete id="delete" parameterType="String">
		delete from s_user where username=#{username}
	</delete>
	
</mapper>

书写:entity


import java.io.Serializable;
import java.util.Date;

public class User implements Serializable{
	private Integer id;
	private String username;
	private String password;
	private Date bir;
	private String xingzuo;
	private String shuxiang;
	public Integer getId() {
		return id;
	}
	public void setId(Integer id) {
		this.id = id;
	}
	public String getUsername() {
		return username;
	}
	public void setUsername(String username) {
		this.username = username;
	}
	public String getPassword() {
		return password;
	}
	public void setPassword(String password) {
		this.password = password;
	}
	public Date getBir() {
		return bir;
	}
	public void setBir(Date bir) {
		this.bir = bir;
	}
	public String getXingzuo() {
		return xingzuo;
	}
	public void setXingzuo(String xingzuo) {
		this.xingzuo = xingzuo;
	}
	public String getShuxiang() {
		return shuxiang;
	}
	public void setShuxiang(String shuxiang) {
		this.shuxiang = shuxiang;
	}
	public User(Integer id, String username, String password, Date bir,
			String xingzuo, String shuxiang) {
		super();
		this.id = id;
		this.username = username;
		this.password = password;
		this.bir = bir;
		this.xingzuo = xingzuo;
		this.shuxiang = shuxiang;
	}
	public User() {
		super();
		// TODO Auto-generated constructor stub
	}
	@Override
	public String toString() {
		return "User [id=" + id + ", username=" + username + ", password="
				+ password + ", bir=" + bir + ", xingzuo=" + xingzuo
				+ ", shuxiang=" + shuxiang + "]";
	}
	
}

 书写DAO:

import java.util.List;

import org.apache.ibatis.annotations.Param;

import com.baizhi.entity.User;

public interface UserDao {
	public User selectById(Integer id);
	//@param进行数据绑定
	public User selectByNameAndPassword(@Param("username")String username,@Param("password")String password);

	public List<User> selectAll();
	
	public void insert(User user);
	
	public void update(User user);
	
	public void delete(String username);
}

Test测试类

import java.io.IOException;
import java.io.Reader;
import java.util.Date;
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;
import org.junit.Test;

import com.baizhi.dao.UserDao;
import com.baizhi.entity.User;

public class TestM {
	
	@Test
	public void testSelectById() throws IOException {
		//读取配置文件
		Reader resourceAsReader = Resources.getResourceAsReader("mybatis-config.xml");
		//创建一个sqlSessionFactory对象
		SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(resourceAsReader);
		//获取sqlSession连接
		SqlSession sqlSession = sqlSessionFactory.openSession();
		//通过sqlSession连接获取userdao对象
		UserDao userDao = sqlSession.getMapper(UserDao.class);
		User user = userDao.selectById(5);
		System.out.println(user);
	}
	
	@Test
	public void testfindByUsernameAndPassword() throws IOException{
		UserDao userDao = new SqlSessionFactoryBuilder().build(Resources.getResourceAsReader("mybatis-config.xml")).openSession().getMapper(UserDao.class);
		User user = userDao.selectByNameAndPassword("sqc", "123");
		System.out.println(user);
	}
	
	@Test
	public void testSelectAll() throws IOException{
		UserDao userDao = new SqlSessionFactoryBuilder().build(Resources.getResourceAsReader("mybatis-config.xml")).openSession().getMapper(UserDao.class);
		List<User> list = userDao.selectAll();
		System.out.println(list);
	}
	
	@Test
	public void testInsert() throws IOException{
		SqlSession sqlSession = null;
		try{
			Reader resourceAsReader = Resources.getResourceAsReader("mybatis-config.xml");
			SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(resourceAsReader);
			sqlSession = sqlSessionFactory.openSession();
			UserDao dao = sqlSession.getMapper(UserDao.class);
			User user = new User(5,"hzq","123",new Date(),"天平座","鼠");
			dao.insert(user);
			sqlSession.commit();
		}catch(Exception e){
			sqlSession.rollback();
			throw new RuntimeException("~~~~~~~~~~~~");
		}
	}
	
	@Test
	public void testUpdate() throws IOException{
		SqlSession sqlSession = null;
		try{
			Reader resourceAsReader = Resources.getResourceAsReader("mybatis-config.xml");
			sqlSession = new SqlSessionFactoryBuilder().build(resourceAsReader).openSession();
			UserDao userDao = sqlSession.getMapper(UserDao.class);
			User user = new User(6,"sqc","123",null,null,null);
			userDao.update(user);
			sqlSession.commit();
		}catch(Exception e){
			sqlSession.rollback();
			throw new RuntimeException("~~~~~~~~~");
		}
	}
	
	
	@Test
	public void testDelete() throws IOException{
		SqlSession sqlSession = null;
		try{
			Reader resourceAsReader = Resources.getResourceAsReader("mybatis-config.xml");
			sqlSession = new SqlSessionFactoryBuilder().build(resourceAsReader).openSession();
			UserDao userDao = sqlSession.getMapper(UserDao.class);
			userDao.delete("hzq");
			sqlSession.commit();
		}catch(Exception e){
			sqlSession.rollback();
			throw new RuntimeException("~~~~~~~~~");
		}
	}
}





评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值