MyBatis之Eclipse中简单开发

        本文使用一个简单的开发程序,将MyBatis的整个开发流程进行梳理一遍,可以对MyBatis基础有更深的了解。首先,本文使用的是Mapper代理,即用Mapper.xml文件与Mapper接口之间通过配置来完成映射,从而可以使得代码量大大减少,避免许多重复的操作。

1.建立项目,导入相关包
        在Eclipse中建立一个java项目,本文项目名mybatisDemo,然后便是导入相关包:
 1.jdk包(一般在Eclipse中配置完之后是自带的)
 2.mybatis-3.4.5.jar及其mybatis的依赖包
 3.数据库驱动包:mysql-connector-java-5.1.44-bin.jar
                                               
2.实体类
        本文实体类User类,如下代码所示,是个典型的Javabean,其中有个toString()方法,则是在返回对象的时候能够如方法内格式输出。
package com.mybatis.model.impl;

public class User {
	private Integer id;
	private String name;
	private String sex;
	private Integer age;
	public User()
	{
	}
	public User(String name,String sex,Integer age)
	{
		this.name=name;
		this.sex=sex;
		this.age=age;
	}
	public Integer getId()
	{
		return this.id;
	}
	public void setId(Integer id)
	{
		this.id=id;
	}
	
	public String getName()
	{
		return this.name;
	}
	public void setName(String name)
	{
		this.name=name;
	}
	
	public String getSex()
	{
		return this.sex;
	}
	public void setSex(String sex)
	{
		this.sex=sex;
	}
	
	public Integer getAge()
	{
		return this.age;
	}
	public void setAge(Integer age)
	{
		this.age=age;
	}
	public String toString()
	{
		return "User [id="+id+",name="+name+",sex="+sex+",age"+age+"]";
	}		
}

3.log4j.properties文件配置
        一般来说日志文件log4j.properties配置内容一般比较固定,如下所示:
# Global logging configuration
#\u5728\u5f00\u53d1\u73af\u5883\u4e0b\u65e5\u5fd7\u7ea7\u522b\u8981\u8bbe\u7f6e\u6210DEBUG\uff0c\u751f\u4ea7\u73af\u5883\u8bbe\u7f6e\u6210info\u6216error
log4j.rootLogger=DEBUG, stdout
# 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
        其中log4j.rootLogger值在开发过程中标注为DEBUG,在投入使用过程中使用info。前者主要是开发过程中便于发现问题,而后者则是为了有更好的用户体验。

4.mapper接口
        其实这里的mapper接口就是之前的dao组件,就是对数据库的原子操作。但是为了优化工作量,则使用针对接口编程,则使用了mapper代理。mapper代理只需要接口而不需要实现类,属于真正的针对接口编程。
package com.mybatis.mapper;
import com.mybatis.model.impl.*;
import java.util.*;

public interface UserMapper {
	
	public void insertUser(User user) throws Exception;
	
	public User selectOneUser(Integer id) throws Exception;
	
	public List<User> selectAllUser() throws Exception;
	public void deleteUser() throws Exception;

}



5.持久化类映射文件(mapper文件)--UserMapper.xml
         UserMapper.xml文件是针对mapper接口中的方法进行配置的,针对这些方法编写sql语句,这也是MyBatis的核心所在。这也是MyBatis与Hibernate的一个明显的区别,Hibernate使用的是DAO接口及其实现类,通过实现类来完成数据库的原子操作,而MyBatis则只需要mapper接口,接口中表明需要的原子操作方法,而实现则是通过在相应的xml文件中通过编写sql语言来实现,因此MyBatis中比较灵活。注意以下xml文件中namespace则需要说明对应的mapper接口位置。
<?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.mybatis.mapper.UserMapper">
	<insert id="insertUser" parameterType="com.mybatis.model.impl.User" useGeneratedKeys="true"
	keyProperty="id" >
		insert into tb_user(name,sex,age)
		values(#{name},#{sex},#{age})
	</insert>
	
	<select id="selectAllUser" resultType="com.mybatis.model.impl.User">
		select * from tb_user
	</select>
	<delete id="deleteUser">
		delete from tb_user
		
	</delete>
	<select id="selectOneUser" parameterType="java.lang.Integer" 
	resultType="com.mybatis.model.impl.User">
		select * from tb_user where id=#{id}
	</select>
</mapper>
6.MyBatis配置文件--mybatis-config.xml
        MyBatis配置文件则是对整个项目的全局配置,包括日志文件,以及运行环境等,注意还需要将mapper.xml文件加载在该配置文件中。注意其中配置过程中注意大小写,如果大小写搞混了,则会报错(case sensitive)
<?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">
 
<!-- XML配置文件包含对MyBatis系统的核心设置 -->
<configuration>
	<!-- 指定MyBatis所用日志的具体实现 -->
	<settings>
		<setting name="logImpl" value="LOG4J"/>
	</settings>
	<environments default="development">
  		<environment id="development">
    		<transactionManager type="JDBC">
    		</transactionManager>
    		<dataSource type="POOLED">
      			<property name="driver" value="org.gjt.mm.mysql.Driver"/>
      			<property name="url" value="jdbc:mysql://localhost:3306/mybatis?characterEncoding=UTF-8"/>
      			<property name="username" value="root"/>
      			<property name="password" value="root"/>
    		</dataSource>
  		</environment>
	</environments>
	<mappers>
		<mapper resource="mapper/UserMapper.xml"/>
	</mappers>
</configuration>
7.测试
1.首先在mysql中建立一个mybatis的database,然后建立一个tb_user的table,再根据上述User类编写相应的属性名,并且让id成为主键并自动增长。
2.添加数据:
package com.mybatis.test;
import java.util.*;
import java.io.InputStream;
import org.apache.ibatis.io.*;
import org.apache.ibatis.session.*;

import com.mybatis.mapper.UserMapper;
import com.mybatis.model.impl.*;;

public class MyBatisTest {

	public static void main(String[] args) throws Exception{
		// TODO Auto-generated method stub
		//读取MyBatis配置文件
		InputStream inputStream=Resources.getResourceAsStream("mybatis-config.xml");
		//初始化mybatis,创建SqlSessionFactory类的实例。
		SqlSessionFactory sqlSessionFactory=new SqlSessionFactoryBuilder().build(inputStream);
		//创建Session实例
		SqlSession session=sqlSessionFactory.openSession();
		//创建User对象
		UserMapper userMapper=session.getMapper(UserMapper.class);
		User user=new User("Carson","男",23);
		userMapper.insertUser(user);
		user=new User("THL","女",23);
		userMapper.insertUser(user);
		session.commit();
		//List<User> list=userMapper.selectAllUser();
		//System.out.println(list);
		//userMapper.deleteUser();
		session.commit();
		session.close();
		

	}

}
运行上述程序,则得到如下数据表:


3.查询数据:
package com.mybatis.test;
import java.util.*;
import java.io.InputStream;
import org.apache.ibatis.io.*;
import org.apache.ibatis.session.*;

import com.mybatis.mapper.UserMapper;
import com.mybatis.model.impl.*;;

public class MyBatisTest {

	public static void main(String[] args) throws Exception{
		// TODO Auto-generated method stub
		//读取MyBatis配置文件
		InputStream inputStream=Resources.getResourceAsStream("mybatis-config.xml");
		//初始化mybatis,创建SqlSessionFactory类的实例。
		SqlSessionFactory sqlSessionFactory=new SqlSessionFactoryBuilder().build(inputStream);
		//创建Session实例
		SqlSession session=sqlSessionFactory.openSession();
		//创建User对象
		UserMapper userMapper=session.getMapper(UserMapper.class);
		//User user=new User("Carson","男",23);
		//userMapper.insertUser(user);
		//user=new User("THL","女",23);
		//userMapper.insertUser(user);
		//session.commit();
		List<User> list=userMapper.selectAllUser();
		System.out.println(list);
		//userMapper.deleteUser();
		session.commit();
		session.close();
		

	}

}
运行程序在控制台看到如下结果:



4.删除数据
代码如下:
package com.mybatis.test;
import java.util.*;
import java.io.InputStream;
import org.apache.ibatis.io.*;
import org.apache.ibatis.session.*;

import com.mybatis.mapper.UserMapper;
import com.mybatis.model.impl.*;;

public class MyBatisTest {

	public static void main(String[] args) throws Exception{
		// TODO Auto-generated method stub
		//读取MyBatis配置文件
		InputStream inputStream=Resources.getResourceAsStream("mybatis-config.xml");
		//初始化mybatis,创建SqlSessionFactory类的实例。
		SqlSessionFactory sqlSessionFactory=new SqlSessionFactoryBuilder().build(inputStream);
		//创建Session实例
		SqlSession session=sqlSessionFactory.openSession();
		//创建User对象
		UserMapper userMapper=session.getMapper(UserMapper.class);
		//User user=new User("Carson","男",23);
		//userMapper.insertUser(user);
		//user=new User("THL","女",23);
		//userMapper.insertUser(user);
		//session.commit();
		//List<User> list=userMapper.selectAllUser();
		//System.out.println(list);
		userMapper.deleteUser();
		session.commit();
		session.close();
		

	}

}
运行以上程序,可以在数据库中看到记录全被删除:

                    

8.文件结构
                
9.总结
        以上是MyBatis的完整流程,可以将其与Hibernate相比较可以看出,MyBatis实现相同功能,在Java代码量上减少了许多,而需要更多的配置文件,然后在相应映射文件中编写sql语句,MyBatis中需要编写大量的原生sql语句,而且直接在映射文件中。因此对于数据库的操作更具开放性以及灵活性。


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值