创建你的第一个MyBatis程序

什么是MyBatis?

MyBatis源自Apache的iBatis开源项目, 从iBatis3.x开始正式更名为MyBatis。它是一个优秀的持久层框架。

为什么要用MyBatis?

在以往我们在使用JDBC与数据库进行交互时,无论是使用DBUtil工具类,还是Spring的JDBCTemplate对象,其中所有的SQL代码都与Java语句耦合在了一起,这对后期维护修改程序带来了很大麻烦,而MyBatis能够帮助我们将SQL语句和Java代码分离,方便了后期因需求变动而对SQL语句进行修改。

如何使用MyBatis?


 实例背景:

a.创建数据库表

create table user_info(
  id int(6) primary key,
  name varchar(15) unique,
  mobile varchar(11) not null,
  address varchar(30) not null
)
insert into user_info (id,name,mobile,address)
values (1, 'walylz', '12345678910','北京');

insert into user_info (id,name,mobile,address)
values (2, 'Tom', '01987654321','上海');

 b.自定义类

public class UserInfo {

	private int id;
	private String name;
	private String mobile;
	private String address;
	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 String getMobile() {
		return mobile;
	}
	public void setMobile(String mobile) {
		this.mobile = mobile;
	}
	public String getAddress() {
		return address;
	}
	public void setAddress(String address) {
		this.address = address;
	}

1)添加所需jar包

Github项目地址:https://github.com/mybatis/mybatis-3/releases

2)创建接口

public interface IUserInfoDao {

	String getById(@Param("id")int id);//使用param注解限定xml文件中sql语句中传值名称
	
	UserInfo selectById(@Param("id")int id);
	
	List select(@Param("name")String name);
	
	boolean delete(@Param("id")int id);//若为boolean则返回true/false;若为int 则返回受影响行数
}

3)创建user_info.xml配置文件添加sql语句

namespace必须为接口的全类名(获取全类名:Copy Qualified Name)







	
	
	
	
	
	
	
	

	
	
		delete from user_inf where id = ${id}
	
	

4)创建MyBatis配置文件mybatis-config.xml




     
        
	
		
			
			
				
				
				
				
			
		
	
	
	
	
		
	

5)创建测试类调用接口中方法

public class Test {

	public static void main(String[] args) {
		try {
			InputStream inputStream = Resources.getResourceAsStream("mybatis-config.xml");
                        
                        //获取SqlSessionFactory对象
			SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);//此处是检查时异常需要try-catch
                        
                        //获取SqlSession对象,代表与数据库的一次会话,用完需要关闭。注意:由于SqlSession为非线程安全的,所以该变量应定义为局部变量,不要定义成全局变量
			SqlSession sqlSession = sqlSessionFactory.openSession();//openSession()无参则默认不提交事务(false),true则自动提交
			
                        //获取IUserInfo接口实现类对象
                        IUserInfoDao userInfoDao = sqlSession.getMapper(IUserInfoDao.class);//获得代理对象
			
			验 证//

                        //验证代理类
                        System.out.println(userInfoDao.getClass().getName());

			//验证getById方法
                        System.out.println(userInfoDao.getById(1));
			
                        //验证selectById方法
			UserInfo userInfo = userInfoDao.selectById(1);
			System.out.println(userInfo.getName());
			
                        //验证select方法
			for (UserInfo ui : userInfoDao.select("%admin%")) {
				System.out.println(ui.getName());
			}
			
                        //验证delete方法,此处需要手动提交事务
			System.out.println(userInfoDao.delete(9));
			sqlSession.commit();

                        //释放资源
			sqlSession.close();
		} catch (IOException e) {
			e.printStackTrace();
		}
	}
}

 

你可能感兴趣的:(MyBatis,mybatis)