MyBatis创建项目(1)

MyBatis介绍:
MyBatis 是一款优秀的持久层框架,其前身是iBatis,它支持定制化 SQL、存储过程以及高级映射。MyBatis 避免了几乎所有的 JDBC 代码
和手动设置参数以及获取结果集。MyBatis 可以使用简单的 XML 或注解来配置和映射原生信息,将接口和 Java 的 POJOs(Plain Old Java
Objects,普通的 Java对象)映射成数据库中的记录。
现在软件开发常用框架:Spring、SpringMVC、MyBatis、Hibernate、struts2
控制层框架(代替传统的Servlet):SpringMVC/struts2
持久层框架(dao层操作,代替传统的):MyBatis/hibernate
整合框架:Spring
SSH:Spring struts2 Hibernate
SSM:Spring SpringMVC MyBatis
源生JDBD的缺点:
1、SQL语句是硬编码,如果需求变更需要修改SQL就要修改java代码,需要重新编译,系统维护不方便;
2、通过preparedStatement向占位符设置参数,存在硬编码(参数位置,参数);
3、遍历查询结果集存在硬编码(列名);
MyBatis的优点:
1、将SQL语句同意配置在文件中,修改SQL不需要java代码;
2、将sql中的占位符及对应的参数类型设置在配置文件中,能够自动输入映射;

3、自动进行SQL查询结果向java对象映射(输出映射)


用纯mybatis创建项目的步骤:
1、创建一个Dynamic Web project工程;

2、MyBatis的下载及jar包:https://github.com/mybatis,我自己下载了mybatis-3.4.5.zip,当然各版本几乎没什么差别,建议使用最新版本,具

体情况根据项目需求而定。

解压之后目录结构如下:

2.1 将mybatis-3.4.5.jar复制到WebContent/WEB-INF/lib目录下;
2.2 打开lib文件夹,将此文件夹下的所有的jar包都拷贝复制到WebContent/WEB-INF/lib目录下;
3、下载jJDBC的驱动包mysql-connector-java-5.1.38.jar,也拷贝到WebContent/WEB-INF/lib目录下;
4、创建需要的数据库表,我自己以user(id,username,password)表演示;

5、在实体类包domain下定义实体类(包名的命名规则:com.公司域名.项目名.模块名.子模块名...):



package com.***.mybatis.***.domain;

/**
 * <p>ClassName : User</p>
 * <p>Company : ***</p>
 * @author ***
 * @date 2017年11月9日 上午11:01:43
 */
public class User {
	private String id;
	private String username;
	private String password;
	public String getId() {
		return id;
	}
	public void setId(String 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;
	}
	@Override
	public String toString() {
		return "User [id=" + id + ", username=" + username + ", password=" + password + "]";
	}
}


6、定义Dao接口以及接口的实现类,并在接口中添加“添加新用户”的方法;
6.1 接口:

package com.***.mybatis.***.dao;

import java.io.IOException;

import com.***.mybatis.***.domain.User;

/**
 * <p>ClassName:UserDao</p>
 * @功能描述 用户数据持久层接口
 * <p>Company:***</p>
 * @author ***
 * @date 2017年11月9日 下午3:44:22
 */
public interface UserDao {

	/**
	 * 增加新用户
	 * @return
	 * @throws IOException
	 */
	public int saveAddUser(User user) throws IOException;
}

6.2 接口实现类:

import java.io.InputStream;

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 com.***.mybatis.***.dao.UserDao;
import com.***.mybatis.***.domain.User;

/**
 * <p>ClassName:UserDaoImpl</p>
 * @功能描述 用户数据持久层实现类
 * <p>Company:***</p>
 * @author ***
 * @date 2017年11月10日 上午10:58:15
 */
public class UserDaoImpl implements UserDao {

	/**
	 * 增加新用户
	 * @param user
	 * @return
	 * @throws IOException
	 */
	@Override
	public int saveAddUser(User user) throws IOException {
		System.out.println("执行添加用户方法!");
		return 0;
	}
}

7、安装MyBatis(重点)

7.1 在src目录下创建MyBatis主配置文件:mybatis-config.xml;

<?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>
	<!-- 加载数据库配置文件 -->
	<properties resource="resources/db.properties" />
	<environments default="mysql">
		<environment id="mysql">
			<!-- 以jdbc的方式管理事务 -->
			<transactionManager type="JDBC" />
			<!-- 配置数据源 -->
			<dataSource type="POOLED">
				<property name="driver" value="com.mysql.jdbc.Driver" />
				<property name="url" value="jdbc:mysql://127.0.0.1:3306/***" />
				<property name="username" value="root" />
				<property name="password" value="root" />
				<!-- <property name="driver" value="${jdbc.driver}" /> <property name="url" 
					value="${jdbc.url}" /> <property name="username" value="${jdbc.username}" 
					/> <property name="password" value="${jdbc.password}" /> -->
			</dataSource>
		</environment>
	</environments>

	<!-- 配置映射文件 -->
	<mappers>
		<mapper resource="com/***/mybatis/***/dao/UserDao.xml" />
	</mappers>
</configuration>

7.2 在Dao接口的同级别目录中创建SQL映射文件名为 接口名.xml

<?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就相当于java中的package -->
<mapper namespace="user">
	<insert id="saveAddUser" parameterType="com.***.mybatis.***.domain.User">
		insert into user (username,password) values(#{username},#{password})
	</insert>
</mapper>

7.3 在主配置文件mybatis-config.xml中定义MyBatis的运行环境(配置数据源);
7.4在主配置文件中映入SQL映射文件(配置映射文件)
8、编写Dao方法,调用SQL映射文件
8.1 通过I/O流加载主配置文件
8.2 创建SessionFactory对象
8.3 创建SQLSession对象
8.4 通过SQLSession对象调用相关的SQL映射执行数据库操作
8.5 提交事务(增删改操作必须提交事务)

8.6 关闭SQLSession对象

import java.io.InputStream;

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 com.***.mybatis.***.dao.UserDao;
import com.***.mybatis.***.domain.User;

/**
 * <p>ClassName:UserDaoImpl</p>
 * @功能描述 用户数据持久层实现类
 * <p>Company:***</p>
 * @author ***
 * @date 2017年11月10日 上午10:58:15
 */
public class UserDaoImpl implements UserDao {
	/**
	 * 增加新用户
	 * @param user
	 * @return
	 * @throws IOException
	 */
	@Override
	public int saveAddUser(User user) throws IOException {
		System.out.println("执行添加用户方法!");

		// 用流的形式加载mybatis主配置文件
		String resource = "resources/mybatis/mybatis-config.xml";
		InputStream inputStream = Resources.getResourceAsStream(resource);
		// 获得SqlSessionFactory对象
		SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
		// 获得SqlSession对象,与数据库会话的对象
		SqlSession session = sqlSessionFactory.openSession();

		int result = session.insert("user.saveAddUser", user);
		session.commit();
		return result;
	}
}

9、创建测试类:

package com.wolfhome.mybatis.hrz.test;

import java.io.IOException;

import com.wolfhome.mybatis.hrz.dao.impl.UserDaoImpl;
import com.wolfhome.mybatis.hrz.domain.User;

/**
 * <p>ClassName:Test</p>
 * @功能描述 测试类
 * <p>Company:nstr</p>
 * @author Hrzhi
 * @date 2017年11月9日 下午4:40:37
 */
public class Test {

	public static void main(String[] args) {
		
		UserDaoImpl userDao = new UserDaoImpl();

		//添加用户
		User user = new User();
		user.setUsername("张三");
		user.setPassword("123456");
		
		try {
			int result = userDao.saveAddUser(user);
			System.out.println("添加成功"+ result + "个新用户");
		} catch (IOException e) {
			e.printStackTrace();
		}
	}
}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值