Mybatis入门配置
在学配置Mybatis前,先学习一种有着main函数功能的框架—单元测试框架JUnit。
1、什么是JUnit
JUnit 是一个 Java 编程语言的单元测试框架。JUnit 在测试驱动的开发方面有很重要的发展,是起源于 JUnit 的一个统称为 xUnit 的单元测试框架之一。JUnit主要运用于程序员测试。
2、怎么使用JUnit
(1) 首先,需要导入两个jar包,使用Eclipse的伙伴这个时候可以松一口气了,因为在Eclipse里面我们可以在项目里面直接“Build Path”获取这两个jar包。(但是这样导入有个缺点,并没有加载到服务器里面,如果要想加载到服务器里面,还是老老实实把jar包导入lib里面)。见下图1、2、3
图1 在“Build Path”构建
图2 在Java Build Path里面Add Library
图3 配置成功
(2) 来看看是要导入哪两个jar包,见下图4
图4 要导的两个Jar包
(3) 新建一个包,在包里新建一个JunitTest类用于测试。代码如下
package com.ydj.test;
import org.junit.Test;
/**
* 测试---Junit
* @author Carlos
*
*/
public class JunitTest {
/**
* 不写main方法实现打印
*/
@Test //这个语句必须写,不然执行不了
public void test(){
System.out.println("---这是一个没有main方法的测试---");
}
}
(4) 结果见下图5
图5 测试结果
以上就是我们基本需要掌握的JUnit的知识,有了上面的知识,就继续配置我们的Mybatis。
------------------------------------------------------------------------------华丽的分割线----------------------------------------------------------------------------------
前面说了那么多,都是开胃菜,真正的重头戏在下面!!
引言:Mybatis是一个持久化【数据操作】的框架,封装了jdbc的框架。mybatis只需要开发者关注sql语句,至于其他的数据库连接、执行sql语句、封装结果操作全部由mybaits完成。
1、前期工作
(1) 需要导入的Jar包,见下图6
图6 使用Mybatis需要的Jar包
除了上图标红的jar包,其他jar包是第三方jar包,根据自己需求自行导入。
(2) 创建项目(大家看我的项目结构,就会很清楚了),见下图7
图7 项目结构
2、我会根据上图的项目结构,按照Mybatis配置顺序一步一步和大家解释
(1) 创建一个项目MyBatisWeb01
导入相应Jar包和JUnit框架
(2) 在数据库(mybatisweb01)里面建表(t_user),见下图8
图8 创建数据库表
(3) 在src下面创建三个包和一个mybatis的配置文件
1)com.ydj.model包
这个包唯一功能就是创建实体类—User,代码如下:
package com.ydj.model;
public class User {
private int uId; //用户ID
private String uName; //用户名
private String uPwd; //密码
//无参构造方法
public User() {}
//有参构造
public User(String uName, String uPwd){
this.uName = uName;
this.uPwd = uPwd;
}
//有参构造
public User(int uId, String uName, String uPwd) {
this.uId = uId;
this.uName = uName;
this.uPwd = uPwd;
}
//get、set方法
public int getuId() {
return uId;
}
public void setuId(int uId) {
this.uId = uId;
}
public String getuName() {
return uName;
}
public void setuName(String uName) {
this.uName = uName;
}
public String getuPwd() {
return uPwd;
}
public void setuPwd(String uPwd) {
this.uPwd = uPwd;
}
//重写toString方法
@Override
public String toString() {
return "User [uId=" + uId + ", uName=" + uName + ", uPwd=" + uPwd + "]";
}
}
2)com.ydj.dao包
这个包有两个功能,一个是创建dao层接口,一个是创建对应的.xml配置文件
dao层接口代码:
package com.ydj.dao;
import java.sql.SQLException;
import java.util.ArrayList;
import com.ydj.model.User;
public interface UserDao {
//1.插入数据
public void save(User user) throws SQLException;
}
UserDao.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">
<!-- 包名 + .xml文件名 -->
<mapper namespace="com.ydj.dao.UserDao">
<!-- 插入数据 save对应dao层接口里面的方法名 -->
<insert id="save">
INSERT INTO t_user(user_name,user_pwd) VALUES(#{uName},#{uPwd})
</insert>
3)mybatis.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>
<!-- 实体类所在包名 主要用于查询 -->
<typeAliases>
<package name="com.ydj.model"/>
</typeAliases>
<!-- environments下面可以有多个environment,每次只能执行一个。当然,要想执行多个数据库,需要在创建sqlSeesion时做出来 -->
<!-- 执行哪一个,就要看environments的default 和 environment的id,当default与id的值相同时,就执行id对应的environment-->
<!-- default和id里面的名字可以自己随便取,一般还是能够字如其意-->
<environments default="mysql">
<environment id="mysql">
<transactionManager type="JDBC"/>
<dataSource type="POOLED">
<!-- property里面的name值千万不要改动,vaule的值根据自己的驱动和数据库填入 -->
<property name="driver" value="com.mysql.jdbc.Driver"/>
<property name="url" value="jdbc:mysql://localhost:3306/mybatisweb01"/>
<property name="username" value="root"/>
<property name="password" value="x5"/>
</dataSource>
</environment>
</environments>
<!-- 这是mybatis.xml配置文件和每个dao层的.xml配置文件联系的地方 就是可以映射 -->
<mappers>
<!-- 第一种写法:包名+配置文件名字 每个dao接口都需要写一个 -->
<!-- <mapper resource="com/ydj/dao/UserDao.xml"/> -->
<!-- 第二种写法:只要写一次,它里面的映射文件根据实际映射而映射,比较灵活 -->
<package name="com.ydj.dao"/>
</mappers>
</configuration>
4)com.ydj.test包
这个包只是测试mybatis是否配置成功,能否数据持久化
package com.ydj.test;
import java.io.IOException;
import java.io.InputStream;
import java.sql.SQLException;
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 org.junit.Test;
import com.ydj.dao.UserDao;
import com.ydj.model.User;
public class InsertUserTest {
@Test
public void insertUser() throws IOException, SQLException{
//1.加载配置文件并构建SqlSessionFactory对象
InputStream inputStream = Resources.getResourceAsStream("mybatis.xml");
SqlSessionFactory factory = new SqlSessionFactoryBuilder().build(inputStream);
//2.从SqlSessionFactory对象中获取SqlSession对象---true表示事务自动提交,false表示事务需要手动提交
SqlSession session = factory.openSession(true);
//3.根据dao接口对象通过动态代理创建dao接口的实现类对象
UserDao dao = session.getMapper(UserDao.class);
//4.执行插入数据操作
dao.save(new User("ydj", "123456"));
//5.关闭资源
session.close();
}
}
3、结果
检查数据库表是否插入成功
图9 数据库表成功插入
总结:配置Mybatis其实还是比较容易,只要一步一步配置,就算出了错误,再去百度,就能很快配置成功。第一步:需要知道导入哪些jar包;第二步:可以使用JUnit也可以直接使用main函数测试;第三步:创建项目;第四步:配置相应的配置文件。
后面我还会写一写Mybatis的增删查改文章,嘻嘻~
推荐阅读