一、编码流程
1、通过数据库表新建实体类
package com.web.bean;
import lombok.Data;
@Data
public class Xs0101 {
private Integer xs0101id;
private String xh;
private String lastName;
private Integer age;
private String address;
}
2、导入对应的maven依赖
引入Mybatis和数据库的依赖
<dependencies>
<!-- Mybatis -->
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis</artifactId>
<version>3.3.0</version>
</dependency>
<!-- Oracle -->
<dependency>
<groupId>com.oracle</groupId>
<artifactId>ojdbc6</artifactId>
<version>11.2.0.1.0</version>
</dependency>
<!-- MySql-->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>5.1.47</version>
</dependency>
<!-- 自动生成构造方法、getter/setter、equals、hashcode、toString方法 -->
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<version>1.18.24</version>
</dependency>
</dependencies>
处理配置文件读取问题
<build>
<resources>
<resource>
<directory>src/main/java</directory>
<includes>
<include>**/*.properties</include>
<include>**/*.xml</include>
</includes>
<filtering>false</filtering>
</resource>
<resource>
<directory>src/main/resources</directory>
<includes>
<include>**/*.properties</include>
<include>**/*.xml</include>
</includes>
<filtering>false</filtering>
</resource>
</resources>
</build>
3、建立Mapper映射文件
新建mapper包,在mapper包下新建Xs0101Mapper.xml,管理SQL
<?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标签 Mybatis映射配置
namespace属性 命名空间(随便写,通过此命名访问SQL),如果是有接口,则需要接口的全名com.web.mapper.UsersMappser
-->
<mapper namespace="xs0101Map">
<!--
select: 查询
id: 唯一标示符(namespace.id实现此SQL调用)
parameterType: 参数类型,可省略
resultType: 返回值类型
-->
<select id="findXs0101ById" parameterType="java.lang.Integer" resultType="com.web.bean.Xs0101">
SELECT * FROM xs0101 WHERE xs0101id = #{id}
</select>
</mapper>
4、配置文件
在resources下新建configuration.xml,用于管理数据源,Mapper映射文件
<?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">
<!-- 使用jdbc事务管理,目前由mybatis来管理 -->
<transactionManager type="JDBC"/>
<!-- 数据库连接池,目前由mybatis来管理 -->
<dataSource type="POOLED">
<property name="driver" value="oracle.jdbc.driver.OracleDriver" />
<property name="url" value="jdbc:oracle:thin:@localhost:1521:orcl" />
<property name="username" value="scott" />
<property name="password" value="123456" />
</dataSource>
</environment>
</environments>
<mappers>
<!-- <mapper>标签用来配置映射文件的,将映射文件进行注册,可以有多个 -->
<mapper resource="com/web/mapper/Xs0101Mapper.xml" />
</mappers>
</configuration>
5、测试类
public class Test {
public static SqlSessionFactory getSqlSessionFactory(){
//读取配置文件
InputStream inputStream = null;
try {
inputStream = Resources.getResourceAsStream("configuration.xml");
} catch (IOException e) {
e.printStackTrace();
}
//创建SqlSession工厂
SqlSessionFactory factory = new SqlSessionFactoryBuilder().build(inputStream);
return factory;
}
public static void main(String[] args) {
//打开sqlSession,默认是不提交事务,带参数true后自动提交
SqlSession sqlSession = getSqlSessionFactory().openSession(true);
//通过namespace.id的方式进行调用
Xs0101 xs0101 = sqlSession.selectOne("xs0101Map.findXs0101ById",1007);
System.out.println(xs0101);
//提交回滚事务
//sqlSession.commit();
//sqlSession.rollback();
//关闭连接
sqlSession.close();
}
}
二、通过接口实现
1、新建接口
package com.web.mapper;
import com.web.bean.Xs0101;
public interface Xs0101Mapper {
public Xs0101 findXs0101ById(Integer id);
}
2、映射文件调整
Mapper映射文件中的namespace值更改为接口的权限名,SQL标签的id和接口的方法名保持一致
3、测试类
public class Test {
public static SqlSessionFactory getSqlSessionFactory(){
//读取配置文件
InputStream inputStream = null;
try {
inputStream = Resources.getResourceAsStream("configuration.xml");
} catch (IOException e) {
e.printStackTrace();
}
//创建SqlSession工厂
SqlSessionFactory factory = new SqlSessionFactoryBuilder().build(inputStream);
return factory;
}
public static void main(String[] args) {
//打开sqlSession,默认是不提交事务,带参数true后自动提交
SqlSession sqlSession = getSqlSessionFactory().openSession(true);
//获取Mapper对象,实际自动生成了接口的代理对象
Xs0101Mapper xs0101Mapper = sqlSession.getMapper(Xs0101Mapper.class);
//通过namespace.id的方式进行调用
Xs0101 xs0101 = xs0101Mapper.findXs0101ById(1001);
System.out.println(xs0101);
//提交回滚事务
//sqlSession.commit();
//sqlSession.rollback();
//关闭连接
sqlSession.close();
}
}