mybatis
一、maybatis第一个HelloWorld
(1)引入jar并构建
(2)创建实体对象Employee
public class Employee {
private int id;
private String name;
private int gender;
private String address;
get/set ...
}
(3)创建mapper的接口
package com.yhcen.mybatis.mapper;
import com.yhcen.mybatis.bean.Employee;
public interface EmployeeMapper {
Employee getEmpById(Integer id);
}
(4)创建配置文件
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>
<environments default="development">
<environment id="development">
<transactionManager type="JDBC" />
<dataSource type="POOLED">
<property name="driver" value="com.mysql.jdbc.Driver" />
<property name="url" value="jdbc:mysql://localhost:3306/test" />
<property name="username" value="root" />
<property name="password" value="11111" />
</dataSource>
</environment>
</environments>
<!-- 将我们写好的sql映射文件(EmployeeMapper.xml)一定要注册到全局配置文件(mybatis-config.xml)中
因为是都在根目录下直接写文件名即可,如果有路径层级通过com/yhcen/EmployeeMapper.xml格式去写-->
<mappers>
<mapper resource="EmployeeMapper.xml" />
</mappers>
</configuration>
引入log4j的xml用于打印sql日志
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE log4j:configuration SYSTEM "log4j.dtd">
<log4j:configuration xmlns:log4j="http://jakarta.apache.org/log4j/">
<appender name="STDOUT" class="org.apache.log4j.ConsoleAppender">
<param name="Encoding" value="UTF-8" />
<layout class="org.apache.log4j.PatternLayout">
<param name="ConversionPattern" value="%-5p %d{MM-dd HH:mm:ss,SSS} %m (%F:%L) \n" />
</layout>
</appender>
<logger name="java.sql">
<level value="debug" />
</logger>
<logger name="org.apache.ibatis">
<level value="info" />
</logger>
<root>
<level value="debug" />
<appender-ref ref="STDOUT" />
</root>
</log4j:configuration>
创建EmployeeMapper.xml , 需要注意的是namespace是引入接口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="com.yhcen.mybatis.mapper.EmployeeMapper">
<!--
namespace:名称空间;指定为接口的全类名
id:唯一标识
resultType:返回值类型
#{id}:从传递过来的参数中取出id值
public Employee getEmpById(Integer id);
-->
<select id="getEmpById" resultType="com.yhcen.mybatis.bean.Employee">
select id,name,gender,address from employee where id = #{id}
</select>
</mapper>
(5)创建测试类进行测试
public class MybatisTest01 {
@Test
public void test01() throws IOException {
//获取xml的文件流,通过sqlsessionfactory进行构建生成sqlseesion去掉查询方法
InputStream is = Resources.getResourceAsStream("mybatis-config.xml");
SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(is);
SqlSession sqlSession = sqlSessionFactory.openSession();
//Employee employee = sqlSession.selectOne("com.yhcen.mybatis.mapper.EmployeeMapper.getEmpById",1);
//mybatis会为接口自动创建一个代理对象,代理对象去实现增删改查
EmployeeMapper employeeMapper = sqlSession.getMapper(EmployeeMapper.class);
Employee employee = employeeMapper.getEmpById(1);
System.out.println(employee);
sqlSession.close(); //用完进行关闭
}
}
总结:
1、根据xml配置文件(全局配置文件)创建一个SqlSessionFactory对象 有数据源一些运行环境信息
2、sql映射文件;配置了每一个sql,以及sql的封装规则等。
3、将sql映射文件注册在全局配置文件中
4、写代码:
1)、根据全局配置文件得到SqlSessionFactory;
2)、使用sqlSession工厂,获取到sqlSession对象使用他来执行增删改查
一个sqlSession就是代表和数据库的一次会话,用完关闭
3)、使用sql的唯一标志来告诉MyBatis执行哪个sql。sql都是保存在sql映射文件中的。
二、maybatis配置文件标签
标签是有顺序的不能打乱顺序,可以没有但是存在的话就得按照先后顺序添加,具体顺序可以看主注解 的顺序
1、properties标签
作用:引入外部properties配置文件的内容
<!--
resource : 引入类路径下资源 用/代表路径层级
url : 引入磁盘或者网络路径下资源
举例: 数据库配置文件抽取
-->
<?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">
<properties resource = "db.properties"></properties>
<configuration>
<environments default="development">
<environment id="development">
<transactionManager type="JDBC" />
<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>
<!-- 将我们写好的sql映射文件(EmployeeMapper.xml)一定要注册到全局配置文件(mybatis-config.xml)中
因为是都在根目录下直接写文件名即可,如果有路径层级通过com/yhcen/EmployeeMapper.xml格式去写-->
<mappers>
<mapper resource