初识Mybatis01

一、Mybatis简介

        MyBatis 是一款优秀的持久层框架,它支持定制化 SQL、存储过程以及高级映射。MyBatis 避免了几乎所有的 JDBC 代码和手动设置参数以及获取结果集。MyBatis 可以使用简单的 XML 或注解来配置和映射原生信息,将接口和 Java 的 POJOs(Plain Ordinary Java Object,普通的 Java对象)映射成数据库中的记录。

二、实例,搭建一个Mybatis框架

1.创建数据库

f2d523fd5a060a4f09194dc4d6fdabd6e27.jpg

2.创建一个Java工程,并导入Mybatis和jdbc的jar包,Build path

4cac02d59718715604838ea0a1f9d37a158.jpg

jdbc.properties

jdbc.driverClassName=com.mysql.jdbc.Driver
jdbc.url=jdbc:mysql://localhost:3306/db_mybatis
jdbc.username=root
jdbc.password=123456

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>
         <!-- 引用jdbc.properties -->
	<properties resource="jdbc.properties"/>
	<!-- 起个别名,Student -->
	<typeAliases>
		<typeAlias alias="Student" type="com.java.model.Student"/>
	</typeAliases>
	<!-- 使用jdbc.properties的数据 -->
	<environments default="development">
		<environment id="development">
			<transactionManager type="JDBC" />
			<dataSource type="POOLED">
				<property name="driver" value="${jdbc.driverClassName}" />
				<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/java/mappers/StudentMapper.xml" />
	</mappers>
	
</configuration>

3.创建sqlsession工厂工具,写一个添加操作

3d704e898f3bf14da856723c96221039673.jpg

SqlSessionFactoryUtil.java

package com.java.util;

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;

public class SqlSessionFactoryUtil {

	private static SqlSessionFactory sqlSessionFactory;
	
	public static SqlSessionFactory getSqlSessionFactory(){
		if(sqlSessionFactory==null){
			InputStream inputStream=null;
			try{
				inputStream=Resources.getResourceAsStream("mybatis-config.xml");
				sqlSessionFactory=new SqlSessionFactoryBuilder().build(inputStream);
			}catch(Exception e){
				e.printStackTrace();
			}
		}
		return sqlSessionFactory;
	}
	
	public static SqlSession openSession(){
		return getSqlSessionFactory().openSession();
	}
}

实体类Student

package com.java.model;

public class Student {
	private Integer id;
	private String name;
	private Integer age;

	public Student() {
		super();
	}
	
	public Student(String name, Integer age) {
		super();
		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;
	}
	
}

Student映射接口

package com.java.mappers;

import com.java.model.Student;

public interface StudentMapper {
	public int add(Student student);
}

StudentMapper.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">
<!-- mapper对应接口 -->
<mapper namespace="com.java.mappers.StudentMapper">
	<!-- id对应StudentMapper接口的方法 -->
	<!--parameterType:因为mybatis-config.xml右Student别名,所以可以使用Student-->
	<!-- 否则parameterType要导入完整的路径com.java.model.Student -->
	<!-- 添加使用insert标签,属性名Student.name,Student.age导入进数据库 -->
	<insert id="add" parameterType="Student"  >
		insert into t_student values(null,#{name},#{age})
	</insert>

</mapper> 

StudentTest.java测试

package com.java.service;

import org.apache.ibatis.session.SqlSession;

import com.java.mappers.StudentMapper;
import com.java.model.Student;
import com.java.util.SqlSessionFactoryUtil;

public class StudentTest {
	public static void main(String[] args) {
		SqlSession sqlSession=SqlSessionFactoryUtil.openSession();
		StudentMapper studentMapper=sqlSession.getMapper(StudentMapper.class);
		Student student=new Student("赵六",18);
		int result=studentMapper.add(student);
		sqlSession.commit();
		if(result>0){
			System.out.println("添加成功!");
		}
	}
}

结果

7344cc38026835dc099609e4932999bd5cc.jpg

a2a674101b461b916446da55f6428367632.jpg

三、mybatis-config.xml详解

4caf0fb4d12e3fbee56727a894290cd2324.jpg

1:environments(环境):MyBatis 支持多个环境,可以任意配置,一般有开发、测试、正式三个环境,两个环境的数据库数据可以不一样

       <environments default="development">
	    <!--开发环境-->
		<environment id="development">
			<transactionManager type="JDBC" />
			<dataSource type="POOLED">
				<property name="driver" value="${jdbc.driverClassName}" />
				<property name="url" value="${jdbc.url}" />
				<property name="username" value="${jdbc.username}" />
				<property name="password" value="${jdbc.password}" />
			</dataSource>
		</environment>
		<!-- 测试环境-->
		<environment id="test">
			<transactionManager type="JDBC" />
			<dataSource type="POOLED">
				<property name="driver" value="${jdbc.driverClassName}" />
				<property name="url" value="${jdbc.url}" />
				<property name="username" value="${jdbc.username}" />
				<property name="password" value="${jdbc.password}" />
			</dataSource>
	</environment>


2:transactionManager

MyBatis 支持两种类型的事务管理器:JDBC 和 MANAGED(托管);

JDBC:应用程序负责管理数据库连接的生命周期;

MANAGED:由应用服务器负责管理数据库连接的生命周期;(一般商业服务器才有此功能,如 JBOSS,WebLogic)
3:dataSource:用来配置数据源;

类型有:UNPOOLED,POOLED(常用),JNDI;

UNPOOLED,没有连接池,每次数据库操作,MyBatis 都会创建一个新的连接,用完后,关闭;适合小并发 项目;

POOLED,用上了连接池; 

JNDI,使用应用服务器配置 JNDI 数据源获取数据库连接

4:properties:配置属性
上面例子是引用jdbc.properties(推荐使用这种方式)

	<properties resource="jdbc.properties"/>

还有一种将数据库连接信息直接写在mybatis-config.xml,不用引入

<!-- <properties resource="jdbc.properties"/> -->
	<properties>
		<property name="jdbc.driverClassName" value="com.mysql.jdbc.Driver"/>
		<property name="jdbc.url" value="jdbc:mysql://localhost:3306/db_mybatis"/>
		<property name="jdbc.username" value="root"/>
		<property name="jdbc.password" value="123456"/>
	</properties>

调用还是${jdbc.username},${jdbc.password}这种形式

5:typeAliases:别名

给类的完成限定名取别名,方便使用

      <!--这种方式可以自定义别名,但是model实体多,用这种方式就不好了-->
        <typeAliases>
		<typeAlias alias="Student" type="com.java1234.model.Student"/>
	</typeAliases>



        <!--推荐使用这种方式来写别名,这种方式实体类的全名是什么,别名就是什么-->
	<typeAliases>
		<package name="com.java1234.model"/>
	</typeAliases>


6:mappers:映射

     <mappers>
	<!--第一种方式 <mapper resource="com/java1234/mappers/StudentMapper.xml" /> -->
	<!--第二种方式 <mapper class="com.java1234.mappers.StudentMapper"/> -->
            
             <!--推荐使用,自动找路径下面的所有映射-->
	     <package name="com.java.mappers"/>
	</mappers>

 

四、配置 Log4j 日志

d6ae656ad9793ed6ff86dc8adab65f05b9e.jpg

添加jar包,helog4j.properties

log4j.rootLogger=info,appender1,appender2

log4j.appender.appender1=org.apache.log4j.ConsoleAppender 

log4j.appender.appender2=org.apache.log4j.FileAppender 
log4j.appender.appender2.File=D:/logFile.txt
 
log4j.appender.appender1.layout=org.apache.log4j.TTCCLayout
log4j.appender.appender2.layout=org.apache.log4j.TTCCLayout  

rootLogger根定义三个目标info,appender1,appender2

appender1:ConsoleAppender控制台输出

appender2:FileAppender文件输出,在 D盘输出日志:logFile.txt

StudentTest使用log4j

19d9c329a3ffb73221e046e96345bfbcb97.jpg

 

看看D 盘

b6477bbf6a9e0b943cf8ef6c1527b2a4944.jpg

c7dbc85fe2c235d8da84b2234937a63c1c5.jpg

转载于:https://my.oschina.net/u/3848699/blog/2250421

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值