项目的大致文件目录为
Mybatis是一个半自动的持久层框架,sql语句需要自己写,Mybatis的全局配置有以下:
首先新建lib文件夹放架包,新建conf放配置文件,然后需要先导入相应的架包mybatis的核心架包,log4j的日志输出和连接数据库的connector,log4的配置文件直接复制就行放在conf文件夹下
<?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>
在conf文件夹下新建datasource.properties存放数据源
jdbc.driven=com.mysql.cj.jdbc.Driver
jdbc.url=jdbc:mysql://localhost:3306/test?characterEncoding=utf-8&serverTimezone=UTC
jdbc.user=root
jdbc.password=123456
在conf下新建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>
<!-- 引入数据源文件 -->
<properties resource="datasource.properties"></properties>
<environments default="development">
<!-- 我们可以配置多个environment,需要通过id指定一个默认的 -->
<environment id="development">
<!-- 采用最原始的JDBC管理事务 -->
<transactionManager type="JDBC" />
<!-- 使用连接池连接数据,我们不需要再导入新的,mybatis内置了连接池 -->
<dataSource type="POOLED">
<property name="driver" value="${jdbc.driven}" />
<property name="url" value="${jdbc.url}" />
<property name="username" value="${jdbc.user}" />
<property name="password" value="${jdbc.password}" />
</dataSource>
</environment>
</environments>
<mappers>
<mapper resource="com/xiong/mapper/EmpMapper.xml" />
<mapper resource="com/xiong/mapper/DeptMapper.xml" />
</mappers>
</configuration>
然后根据表结构新建相应的bean实体生成相应的方法这里就不演示了,我的是一张emp表和dept表
然后在src文件夹的mapper包中新建EmpMapper接口,其中写两个测试查询的方法
package com.xiong.mapper;
import java.util.List;
import com.xiong.bean.Emp;
public interface EmpMapper {
Emp getEmp(Emp e);
Emp getEmpById(String id);
}
然后在conf的文件夹的mapper包中新建EmpMapper.xml的映射文件,对应mybatis.xml的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">
<!-- 这里需要EmpMapper接口的全限定名 -->
<mapper namespace="com.xiong.mapper.EmpMapper" >
<!-- 接口方法要对应sql标签的id,resultType是查询返回的实体类型,没有返回值时就不需要写 -->
<!-- Emp getEmp(Emp e); -->
<select id="getEmp" resultType="com.xiong.bean.Emp">
select id,name,age,sex,did from emp
where
id=#{id}
</select>
<!-- Emp getEmpById(String id); -->
<select id="getEmpById" resultType="com.xiong.bean.Emp">
select id,name,age,sex,did from emp where id=#{id}
</select>
</mapper>
然后在test类中测试
InputStream resourceAsStream = Resources.getResourceAsStream("mybatis.xml");
SqlSessionFactory build = new SqlSessionFactoryBuilder().build(resourceAsStream);
SqlSession openSession = build.openSession(true);
EmpMapper mapper = openSession.getMapper(EmpMapper.class);
Emp emp = mapper.getEmp(e);
System.out.println(emp);