myBatis01

1.创建对应的数据库以及需要的表

2.创建对应的java项目,引入需要的mybatis需要的jar,以及连接mysql数据库的jar!

3.创建对应的Student实体类
/**
*学生的实体类
*/
public class Student {
private Integer id; // 学生编号
private String name; // 姓名
private Integer age; // 年龄
/**
* 对应的有参无参构造以及对应的get和set方法
*/
public Student() {
super();
}
public Student(Integer id, String name, Integer age) {
super();
this.id = id;
this.name = name;
this.age = age;
}
public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public Integer getAge() {
return age;
}
public void setAge(Integer age) {
this.age = age;
}
}
4.创建对应的接口以及mapper文件
public interface StudentDao {
/**
* 新增学生信息
*/
void addStudent(Student student);
}
<?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="student">
<insert id="addStudent" parameterType="cn.bdqn.bean.Student">
insert into
student(age,name) values(#{age},#{name})
</insert>
</mapper>
5.创建对应的实现类和工具类
public class StudentDaoImpl implements StudentDao {
//新增学生
@Override
public void addStudent(Student student) {
SqlSession session=null;
try {
session = MyBatisUtils.getSession(); //获取session
/**
* 新增操作
* addStudent:一定要和mapper文件中 的 id一致!
*/
session.insert("addStudent", student);
/**
* 需要我们手动提交事务 02. 为什么 需要 手动提交
* 03.在底层代码中查看得出结论
* 底层的insert 以及delete 其实都是执行了 update操作
* 关键点在于 dirty!!!
* 04.怎么看到了session.commit 就是transaction.commit();
* 001.MyBatisUtils 的方法 openSession的时候!默认没有传递参数==>autoCommit=false
* 需要我们手动提交事务!
* 002.session.insert() 底层默认调用了update()
* 就是在update(),dirty=true! 数据是脏数据!
* 003. session.commit(); 底层 默认 transaction.commit();
* 之后dirty=false! 因为已经同步到数据库中!不是脏数据了!
*/
session.commit();
} catch (Exception e) {
e.printStackTrace();
}finally{
if (session!=null) {
session.close();
}
}
}
}

01.所有的增删改默认调用 update
02.update方法中有 一个非常重要的属性 是 dirty ===>脏!
为什么需要提交! dirty!!!


/**
* 创建会话工厂的单例
*/
public class MyBatisUtils {
//创建本类的静态变量
private static SqlSessionFactory sessionFactory;
//私有化构造
private MyBatisUtils(){}
//对外访问的接口
public static SqlSession getSession(){
try {
//读取mybatis的核心配置文件
InputStream stream = Resources.getResourceAsStream("mybatis.xml");
if (sessionFactory==null) { //判断sessionFactory是否为空
sessionFactory=new SqlSessionFactoryBuilder().build(stream);
}
} catch (IOException e) {
e.printStackTrace();
}
//01.这里为什么不需要关闭流?
return sessionFactory.openSession();
}
}

6.创建mybatis的核心配置文件和日志文件
<?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文件配置连接数据库的四要素 -->
<properties resource="jdbc.properties" />
<!-- 设置别名 两种方式 -->
<typeAliases>
<!-- 01.这种方式别名可以随意取 但是如果有多个 类 就需要配置多个typeAlias
<typeAlias type="cn.bdqn.bean.Student" alias="student"/> -->
<package name="cn.bdqn.bean"/><!-- 02.这种方式要求别名必须使用简写的类名 -->
</typeAliases>
<!-- 配置运行环境 可以有多个 environment -->
<environments default="mysql"><!-- 默认采用的环境 -->
<environment id="mysql"> <!-- 环境的名称 -->
<!--配置事务管理 采用jdbc默认的事务管理 之后整合的时候 肯定是交给了 spring来处理了 -->
<transactionManager type="JDBC" />
<!-- 数据源采用的是连接池技术 POOLED:mybatis自带的数据源,JNDI:基于tomcat的数据源 -->
<dataSource type="POOLED">
<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="cn/bdqn/dao/StudentMapper.xml" />
</mappers>
</configuration>
jdbc.driver=com.mysql.jdbc.Driver jdbc.url=jdbc:mysql://localhost:3306/mybatis jdbc.username=用户名 jdbc.password=密码
log4j.appender.console=org.apache.log4j.ConsoleAppender log4j.appender.console.Target=System.out log4j.appender.console.layout=org.apache.log4j.PatternLayout log4j.appender.console.layout.ConversionPattern=[%-5p] %c %L %m %n log4j.rootLogger=trace,console
7.创建测试类测试
public class StudentTest {
@Test
public void test() {
StudentDao dao = new StudentDaoImpl();
dao.addStudent(new Student(1, "小黑", 10));
}
}
8.查看运行结果



浙公网安备 33010602011771号