mybaits配置關(guān)系圖
Maven依賴
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis</artifactId>
<version>3.4.1</version>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>5.1.6</version>
</dependency>
實(shí)現(xiàn)步驟
- 首先建立一個(gè)表搔预,并實(shí)現(xiàn) 一個(gè)與這個(gè)表中字段對(duì)應(yīng)的類
- 配置conf.xml文件
- 配置Mapper.xml文件
- 通過mybatis操作數(shù)據(jù)庫(kù)
mapper.xml
首先看一下xxxMapper文件
<?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="me.gacl.mapping.userMapper">
<select id="getUser" parameterType="int"
resultType="com.reno.mybatis.domain.User">
select * from testuser where id=#{id}
</select>
<insert id="addUser" parameterType="com.reno.mybatis.domain.User">
insert into testuser
(name,age) values (#{name},#{age})
</insert>
<!-- 刪除用戶(Remove) -->
<delete id="deleteUser" parameterType="int">
delete from users where id=#{id}
</delete>
<!-- 修改用戶(Update) -->
<update id="updateUser" parameterType="com.reno.mybatis.domain.User">
update users set name=#{name},age=#{age} where id=#{id}
</update>
<!-- 查詢?nèi)坑脩?-->
<select id="getAllUsers" resultType="com.reno.mybatis.domain.User">
select * from users
</select>
</mapper>
- 在這里首先需要關(guān)注的一點(diǎn)是namespace虫腋,每一個(gè)mapper有一個(gè)唯一指定的namespace,一般采用包名+mapper的文件名瓮下。之后再操作數(shù)據(jù)庫(kù)時(shí)就通過namespace+select的id 這種方式來(lái)操作仅叫。
- mapper內(nèi)包裹的就是一系列的數(shù)據(jù)庫(kù)操作丁侄。
- <select> 中 id用于 配合namespace定位到具體操作
- parameterType表示參數(shù)類型俊扭,參數(shù)就被傳遞到#{}所在的地方。
- resultType代表了數(shù)據(jù)的返回類型拦坠,這里返回類型就是那個(gè)與數(shù)據(jù)庫(kù)表信息對(duì)應(yīng)的類
conf.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" />
<!-- 配置數(shù)據(jù)庫(kù)連接信息 -->
<dataSource type="POOLED">
<property name="driver" value="com.mysql.jdbc.Driver" />
<property name="url" value="jdbc:mysql://localhost:3306/tablename" />
<property name="username" value="realusername" />
<property name="password" value="realpasswd" />
</dataSource>
</environment>
</environments>
<mappers>
<mapper resource="com/reno/mybatis/mapping/userMapper.xml" />
</mappers>
</configuration>
- 在environment中配置了數(shù)據(jù)庫(kù)的連接信息
- mapper中配置了各個(gè)mapper.xml的位置连躏,其中將包名轉(zhuǎn)化為文件路徑
通過mybaits操作數(shù)據(jù)庫(kù)
package com.reno.mybatis;
import java.io.InputStream;
import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.session.SqlSessionFactoryBuilder;
import com.reno.mybatis.domain.User;
public class mybaitsTest {
public static void test() {
// mybatis的配置文件
String resource = "conf.xml";
// 使用類加載器加載mybatis的配置文件(它也加載關(guān)聯(lián)的映射文件)
InputStream is = mybaitsTest.class.getClassLoader().getResourceAsStream(resource);
// 構(gòu)建sqlSession的工廠
SqlSessionFactory sessionFactory = new SqlSessionFactoryBuilder().build(is);
// 使用MyBatis提供的Resources類加載mybatis的配置文件(它也加載關(guān)聯(lián)的映射文件)
// Reader reader = Resources.getResourceAsReader(resource);
// 構(gòu)建sqlSession的工廠
// SqlSessionFactory sessionFactory = new
// SqlSessionFactoryBuilder().build(reader);
// 創(chuàng)建能執(zhí)行映射文件中sql的sqlSession
SqlSession session = sessionFactory.openSession();
/**
* 映射sql的標(biāo)識(shí)字符串,
* me.gacl.mapping.userMapper是userMapper.xml文件中mapper標(biāo)簽的namespace屬性的值贞滨,
* getUser是select標(biāo)簽的id屬性值入热,通過select標(biāo)簽的id屬性值就可以找到要執(zhí)行的SQL
*/
String statement = "com.reno.mybatis.mapping.userMapper.getUser";// 映射sql的標(biāo)識(shí)字符串
// 執(zhí)行查詢返回一個(gè)唯一user對(duì)象的sql
User user = session.selectOne(statement, 1);
System.out.println(user);
}
}