Mybatis增删改查(连接mysql数据库)

此项目不是maven项目,也是创建Dynamic Web Project


两种开发方式:Dao开发方式,Mapping代理开发方式

使用原始dao开发的缺点就是只能通过selectOne或者selectList等操作,而不是直接调用映射配置文件中的方法,不能一目了然。

本文为Mapping代理开发方式。


                mybatis,有两个配置文件

        全局配置文件SqlMapConfig.xml(配置数据源,全局变量,加载映射文件等东西)

        映射文件xxxMapper.xml,用来对输入参数输出参数,数据库语句做配置的。

      mybatis配置好之后的使用步骤

        1、获取sqlMapConfig.xml的位置然后进行加载

        2、通过sqlMapConfig.xml中的内容创建出sqlsessionFactory对象

        3、然后通过sqlsessionFactory对象创建出sqlsession对象

        4、有了sqlsession对象就可以进行相应的操作了。



工程目录:

Mybatis增删改查(连接mysql数据库)_第1张图片


步骤:

前置:创建数据库,数据表,添加数据。

1.添加jar (WebContent/WEB-INF/lib目录下添加)

2.pojo  [User.java](添加到数据里各个数据的get/set方法)

3.设置mybatis配置文件 [conf.xml] (直接放置在src下,不需要放包下)

4.配置数据表的映射文件 [UserMapping.xml]

5.Dao接口类 [IUserOperaton.java]

6.实现方法 [Test.java]


具体:

前置:

create database mybatis;
create table user(
    id int primary key auto_increment,
    name varchar(20),
    age int);


1.添加jar

只需添加两个jar: mybatis-3.4.5.jar 和 mysql-connector-java-5.5.10.bin.jar

一个是mybatis核心包,另一个是mysql驱动包


2.pojo

public class User {

	private int id;
	private String name;
	private int age;

        ..省略get/set语句..
}


3.设置mybatis配置文件conf.xml(配置数据源,全局变量,加载映射等。)







	
	
		
		
		
		
		
	
	 
	
		
			 
			
			
			
				
				
				  
                  
                  
			
		
	
	
	
	
		
	

4.定义数据表的映射文件(一般命名为:表名+Mapping)

名字与配置文件conf.xml里相对应








	
    
    
    
    
    
    
    
    
    
    	update user set name = #{name},age = #{age} where id = #{id}
    
    
     
    
    	insert into user(name,age) values(#{name},#{age})
    
    
    
    	delete from user where id = #{id}
    
    


5.Dao接口类

package com.mybatis.test;

import java.util.List;

//所有的接口名与UserMapping的id名对应
public interface IUserOperaton {

	public List SelectAll();
	
	public User SelectById(int id);
	
	public List SelectByName(String name);
	
	public void UpdateUser(User user);
	
	public void InsertUser(User user);
	
	public void DeleteUser(int id);
}


6.实现方法,测试

package com.mybatis.test;

import java.io.IOException;
import java.io.InputStream;
import java.io.Reader;
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;

//所有方法名为实现IUserOperaton接口
public class Test {

	//private static InputStream inputStream;
	private static Reader reader;
	
	private static SqlSessionFactory sqlSessionFactory;//会话工厂
	
	static {
		try {
			//配置文件conf.xml
			String resource= "conf.xml";
			
			//inputStream = Resources.getResourceAsStream(resource);
			reader = Resources.getResourceAsReader(resource);
			
			//创建会话工厂
			sqlSessionFactory = new SqlSessionFactoryBuilder().build(reader);
		} catch (IOException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
	}
	
	public void getUserAll() {
		// 通过工厂得到SqlSession
		SqlSession session = sqlSessionFactory.openSession();
		
		try {
			//创建代理对象
			IUserOperaton iUserOperaton = session.getMapper(IUserOperaton.class);
			List users = iUserOperaton.SelectAll();
			for(User user : users) {
				System.out.println("id is = " + user.getId() + "name is = " + user.getName() + ",age is = " + user.getAge());
			}
		}finally {
			session.close();
		}
	}
	
	public void getUserById(int id) {
		// 通过工厂得到SqlSession
		SqlSession session = sqlSessionFactory.openSession();
		
		try {
			//创建代理对象
			IUserOperaton iUserOperaton = session.getMapper(IUserOperaton.class);
			User user = iUserOperaton.SelectById(id);
			System.out.println("name is = " + user.getName() + ",age is = " + user.getAge());
		}finally {
			session.close();
		}
	}
	
	public void getUserByName(String name) {
		// 通过工厂得到SqlSession
		SqlSession session = sqlSessionFactory.openSession();
		
		try {
			//创建代理对象
			IUserOperaton iUserOperaton = session.getMapper(IUserOperaton.class);
			List users = iUserOperaton.SelectByName(name);
			for(User user : users) {
				System.out.println("name is = " + user.getName() + ",age is = " + user.getAge());
			}
		}finally {
			session.close();
		}
	}
	
	public void updateUser() {
		// 通过工厂得到SqlSession
		SqlSession session = sqlSessionFactory.openSession();
		
		try {
			//创建代理对象
			IUserOperaton iUserOperaton = session.getMapper(IUserOperaton.class);
			User user = iUserOperaton.SelectById(3);
			if(user != null) {
				user.setName("three");
				iUserOperaton.UpdateUser(user);
				session.commit();
			}
		}finally {
			session.close();
		}
	}
	
	public void deleteUser(int id) {
		// 通过工厂得到SqlSession
		SqlSession session = sqlSessionFactory.openSession();
		
		try {
			//创建代理对象
			IUserOperaton iUserOperaton = session.getMapper(IUserOperaton.class);
			iUserOperaton.DeleteUser(id);
			session.commit();
		}finally {
			session.close();
		}
	}
	
	public void insertUser() {
		User user = new User();
		user.setName("two");
		user.setAge(33);
		
		// 通过工厂得到SqlSession
		SqlSession session = sqlSessionFactory.openSession();
		try {
			//创建代理对象
			IUserOperaton iUserOperaton = session.getMapper(IUserOperaton.class);
			iUserOperaton.InsertUser(user);
			session.commit();
			System.out.println("userid:" + user.getId());
		}finally {
			session.close();
		}
	}
	
	public static void main(String[] args) {
		// TODO Auto-generated method stub

		Test test = new Test();
		
		test.getUserAll();
		test.getUserById(3);
		test.getUserByName("two");
		test.insertUser();
		test.updateUser();
		test.deleteUser(3);
	}

}

你可能感兴趣的:(Web后端)