mybatis初识

时间:2023-03-09 00:23:46
mybatis初识

mybatis采用弱连接,在一定程度上集中管理了sql的语句编写,又实现了自动映射bean。

此处以最基础的mybatis连接为例:

引入jar包:

mybatis-3.4.5.jar

ojdbc-6.jar

在src下创建文件:mybatis.cfg.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="ojdbc.properties"></properties>
<!--bean 别名通过扫描 bean下的内容获取 -->
<typeAliases>
<package name="bean" />
</typeAliases>
<!-- 配置mybatis运行环境 -->
<environments default="cybatis">
<environment id="cybatis">
<!-- type="JDBC" 代表使用JDBC的提交和回滚来管理事务 -->
<transactionManager type="JDBC" /> <!-- mybatis提供了3种数据源类型,分别是:POOLED,UNPOOLED,JNDI -->
<!-- POOLED 表示支持JDBC数据源连接池 -->
<!-- UNPOOLED 表示不支持数据源连接池 -->
<!-- JNDI 表示支持外部数据源连接池 -->
<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扫描内容 -->
<mappers>
<package name="mapper" />
</mappers> </configuration>

在src下创建ojdbc.properties文件

db连接驱动文件写法参照 db连接驱动,以下为例子:

jdbc.driver=oracle.jdbc.driver.OracleDriver
jdbc.url=jdbc:oracle:thin:@192.168.201.7::orcl
jdbc.username=test
jdbc.password=test1234

在mapper的package下,创建对象的接口文件和xml映射文件,要求信息对应上。

userMapper.xml

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org/DTD Mapper 3.0" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="mapper.UserMapper">
<!-- 自定义返回结果集 -->
<resultMap id="User" type="User">
<result property="UserId" column="User_id" javaType="java.lang.String"></result>
<result property="UserNo" column="User_no" javaType="java.lang.String"></result>
</resultMap> <select id="getUserById" parameterType="string" resultMap="User">
select User_id,User_no from User where User_id=#{UserId}
</select> <select id="getUserBySearch" parameterType="string" resultMap="User">
select User_id,User_no from User where org_name like #{orgName}
</select>
</mapper>

userMapper.java

public interface UserMapper {

    /**
*
* @param UserId 主键ID
* @return User
* @throws Exception
*/
User getUserById(String UserId) throws Exception; /**
*
* @param orgName
* @return
* @throws Exception
*/
List<User> getUserBySearch(String orgName) throws Exception;
}

创建对数据库的连接:

/**
* 获取连接db的session
* @author DennyZhao
*
*/
public class DBTools { public static SqlSessionFactory sessionFactory;
static {
//使用MyBatis提供的Resources类加载mybatis的配置文件
//构建sqlSession的工厂
Reader reader;
try {
reader = Resources.getResourceAsReader("mybatis.cfg.xml");
sessionFactory = new SqlSessionFactoryBuilder().build(reader);
} catch (IOException e) {
e.printStackTrace();
}
}
public static SqlSession getSession() {
return sessionFactory.openSession();
}
}

测试:

public class UserTest {

    public static void main(String[] args) throws Exception {
SqlSession session = DBTools.getSession();
UserMapper UserMapper = session.getMapper(UserMapper.class);
List<User> UserList = UserMapper.getUserBySearch("%张三%");
session.close();
} }