mybatis if test 用法_Mybatis基本知识:入门

1. Mybatis下载

MyBatis 的版本可以通过"https://github.com/mybatis/mybatis-3/releases"网址下载。本篇使用 mybatis-3.3.0.zip(可根据需要自行下载)。

MySQL驱动Jar包下载:https://github.com/mysql/mysql-connector-j。

2. Mybatis概述

Mybatis是一款优秀的基于Java的持久层框架,它内部封装了JDBC,使开发者只需关注SQL本身,而不必再耗费精力去处理关于JDBC的繁琐的创建过程,大大提高了开发的效率。

原生JDBC编程六步曲:
1.注册驱动
2.获取数据库连接·
3.获取数据库操作对象
4.执行SQL语句
5.处理查询结果集
6.关闭资源
Mybatis编程:
1.配置主配置文件mybatis.xml
2.配置映射文件mapper.xml
3.编写接口程序

3.举个例子

  • 项目层次结构

b1c72c49bcafbbad5c39256b91254824.png
  • 实体类(Student)
public class Student {
private Integer id;
private String sname;//姓名
private String sno;//学号

public Student() {
super();
}
public Student(String sname, String sno) {
super();
this.sname = sname;
this.sno = sno;
}
//setter and getter
}
  • 工具类(MyBatisUtil)
public class MyBatisUtil {
private static SqlSessionFactory factory;
public static SqlSession getSqlSession() throws Exception{
if(factory == null){
//1.读取配置文件
InputStream input = Resources.getResourceAsStream("mybatis.xml");
//2.创建SqlSessionFactory工厂
factory = new SqlSessionFactoryBuilder().build(input);
}
//3.获取SqlSession
return factory.openSession();
}
}
  • DAO层及实现类(StudentDao/Impl)
public interface StudentDao {
/**
* 保存学生信息
* @param studnet
*/
void saveStudent(Student studnet);
}
/**学生数据操作实现*/
public class StudentDaoImpl implements StudentDao {
private SqlSession sqlSession = null;
/** 保存学生信息 */
@Override
public void saveStudent(Student studnet) {
try {
sqlSession = MyBatisUtil.getSqlSession();//1.获取SqlSesssion
sqlSession.insert("saveStudent", studnet);//2.保存
sqlSession.commit(); //3.提交
} catch (Exception e) {
e.printStackTrace();
} finally {
if(sqlSession != null)//4.关闭资源
sqlSession.close();
}
}
}
  • 测试类
public class TestDemo {
/**测试保存 */
@Test
public void saveStudent(){
StudentDao studentDao = new StudentDaoImpl();
Student stu = new Student("小明","20200704");
studentDao.saveStudent(stu);
}
}
  • 日志配置文件
#log4j.rootLogger=trace, stdout
#test是mapper配置文件定的命名空间
log4j.logger.test=debug,stdout
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern=%5p [%t] - %m%n
  • 主配置文件
<?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>
<environments default="myDeveloper">
<!-- 环境代表了数据库的连接信息 -->
<environment id="myDeveloper">
<!-- 配置数据库的事务 - type:指定事务的类型
JDBC:表示使用数据库连接的事务管理(rollback, commit)
MANAGED:表示事务是由容器管理的(spring是容器,能够管理事务) -->
<transactionManager type="JDBC" />
<!-- 配置数据源 - type:数据源的类型
POOLED:表示连接池
UNPOOLED:不使用连接池,每次的数据库的操作是新建连接,使用后关闭连接
JNDI:java 命名和目录服务。 表示外部的连接池。-->
<dataSource type="POOLED">
<property name="driver" value="com.mysql.jdbc.Driver"/>
<property name="url" value="jdbc:mysql://127.0.0.1:3366/test"/>
<property name="username" value="root"/>
<property name="password" value="root"/>
</dataSource>
</environment>
</environments>
<!-- 配置sql映射文件 -->
<mappers>
<mapper resource="com/mybatis/abc/mybatis/dao/studentMapper.xml"/>
</mappers>
</configuration>
  • mapper配置文件
<?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">
<mapper namespace="test">
<!-- id="sql映射id" : 表示你要执行的sql的名称 -->
<!-- #{} 占位符 : 现在使用的是属性名 -->
<insert id="saveStudent" >
insert into student(sname,sno) values(#{sname},#{sno})
</insert>
</mapper>
  • 运行结果
DEBUG [main] - ==> Preparing: insert into student(sname,sno) values(?,?)
DEBUG [main] - ==> Parameters: 小明(String), 20200704(String)
DEBUG [main] - <== Updates: 1

4.主配置文件详解

主配置文件名称可根据需要随意命名。其主要完成以下几个功能

1.)注册存放DB连接的四要素的属性文件。(也可以省略,直接在数据源中列出)

2.)注册实体类的全限定类名的别名。(可省略)

3.)配置Mybatis运行环境(数据源和事务管理器)。

4.)注册映射文件。

1.)注册存放DB连接的四要素的属性文件

<properties resource="jdbc.properties"/>

注:标签的位置可以利用F2查看

2.)注册实体类的全限定类名的别名

<typeAliases>
<package name="com.mybatis.abc.mybatis.bean"/>
<!-- <typeAlias type="com.mybatis.abc.mybatis.bean.Student" alias="Student"/>-->
</typeAliases>

注:上述两个别名的定义一般使用package方式,这样可以将该包中的所有类的简单类名指定为别名。而typeAlias需要对实体类逐一定义。

type:全限定性类名。alias:别名。name:包名。

3.)配置Mybatis运行环境(数据源和事务管理器)

  • environments标签:defalult属性指定当前的运行环境。 environment的id属性为当前定义的运行环境
<environments default="myDeveloper">
<environment id="myDeveloper">
</environment>
<environment id="myDeveloper1">
</environment>
<environment id="myDeveloper2">
</environment>
</environments>
  • transactionManager标签
<!-- 配置数据库的事务 - type:指定事务的类型
JDBC:表示使用数据库连接的事务管理(rollback, commit),
默认情况下Mybatis的提交为手动提交;
MANAGED:表示事务是由容器管理的(spring是容器,能够管理事务)。 -->
<transactionManager type="JDBC" />
  • dataSource标签
<!-- 配置数据源 - type:数据源的类型
POOLED:表示连接池
UNPOOLED:不使用连接池,每次的数据库的操作是新建连接,使用后关闭连接
JNDI:java 命名和目录服务。 表示外部的连接池。-->
<dataSource type="POOLED">
<property name="driver" value="com.mysql.jdbc.Driver"/>
<property name="url" value="jdbc:mysql://127.0.0.1:3366/test"/>
<property name="username" value="root"/>
<property name="password" value="root"/>
</dataSource>

注:如果引入了DB属性配置文件value的值也可以写成${属性文件中的key值}

4.)注册映射文件的几种方式

第一种:需要对实体类逐一映射

<mappers>
<mapper resource="com/mybatis/abc/mybatis/dao/studentMapper.xml"/>
<mapper resource="com/mybatis/abc/mybatis/dao/studentMapper2.xml"/>
</mappers>

第二种:从本地磁盘加载映射文件

<mappers>
<mapper url="file:///D:studentMapper.xml"/>
</mappers>

第三种:仅适用于类路径下,1.DAO接口与映射文件在同一路径下。2.接口名与映射文件名相同。3.映射文件命名空间为接口全类名的情况.

<mappers>
<mapper class="com.mybatis.abc.mybatis.dao.StudentDao"/>
</mappers>

mapper配置文件:StudentDao.xml:

<mapper namespace="com.mybatis.abc.mybatis.dao.StudentDao">
<insert id="saveStudent" >
insert into student(sname,sno) values(#{sname},#{sno})
</insert>
</mapper>

第四种:class加载的简写(当配置文件较多时)

<mappers>
<package name="com.mybatis.abc.mybatis.dao"/>
</mappers>

注意:需满足条件

1.dao使用mapper动态代理

2.DAO接口与映射文件在同一路径下。

3.接口名与映射文件名相同。

4.映射文件命名空间(namespace)为接口全类名的情况。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值