MyBatis创建项目(1)

来源:互联网 发布:qt5 串口助手编程 编辑:程序博客网 时间:2024/06/07 15:42
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;}@Overridepublic 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 */@Overridepublic 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 */@Overridepublic 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();}}}


原创粉丝点击