1.config文件--別名,配置(賬號密碼庫....),Mapper文件位置
2.Dao接口-->方法
3.Mapper文件-->對應(yīng)Dao,<selece>...sql...</select>
4.測試
一、config文件
1.類的別名
<!-- 類的別名 -->
<typeAliases>
<typeAlias type="com.model.User" alias="user" />
</typeAliases>
- type 屬性:指定需要映射的完整類名,此處是 com.model.User。
- alias 屬性:定義給該類的別名,此處使用 user 作為別名。
2.對事物的管理和連接池配置
<!-- 對事物的管理和連接池配置 -->
<environments default="development">
<environment id="development">
<transactionManager type="JDBC"></transactionManager>
<dataSource type="POOLED">
<property name="driver" value="com.mysql.cj.jdbc.Driver" />
<property name="url"
value="jdbc:mysql://localhost/test" />
<property name="username" value="root" />
<property name="password" value="root" />
</dataSource>
</environment>
</environments>
- <property name="driver" value="com.mysql.cj.jdbc.Driver" />:指定 JDBC 驅(qū)動類,用于連接 MySQL 數(shù)據(jù)庫。
- 如果mysql 8.0以下,則數(shù)據(jù)庫地址為com.mysql.jdbc,Driver
- 如果mysql 8.0以上,則數(shù)據(jù)庫地址為com.mysql.cj.jdbc,Driver
- <property name="url" value="jdbc:mysql://localhost/test" />:定義數(shù)據(jù)庫的連接 URL,這里連接的是本地的 MySQL 數(shù)據(jù)庫及其 test 數(shù)據(jù)庫。
- <property name="username" value="root" />:設(shè)置連接數(shù)據(jù)庫的用戶名。
- <property name="password" value="root" />:設(shè)置連接數(shù)據(jù)庫的密碼。
3.mapper文件的映射路徑
<!-- mapper文件的映射路徑 -->
<mappers>
<mapper resource="UserMapper.xml" />
</mappers>
- <mapper resource="UserMapper.xml" />:指定了一個映射器文件,resource 屬性指明了其資源路徑。
二、Dao接口
定義一個公共接口和一個Sex接口
//公共的接口
//默認(rèn)的6個基本方法
public interface Dao<T> {
//根據(jù)id查詢
public T findModelById(int id);
//根據(jù)名字查詢
public T findModelByName(String name);
/*遍歷集合
* mybatis 的 功能是 由
* 一個接口 和 一個mapper文件 組成實(shí)現(xiàn)的
* 返回一個集合 List 這個list集合 只能放在.add(user)
*/
public List<T> findAll();
//插入數(shù)據(jù)
public void insertModel(T t);
//更新數(shù)據(jù)
public void updateModel(T t);
//刪除數(shù)據(jù)
public void deleteModel(T t);
}
//定義SexDao接口 繼承Dao的六個基本方法
public interface SexDao extends Dao<Sex> {
}
三、mapper文件
在這里,UserMapper.xml(UserDao是一個存在六個基本方法的接口) 是一個 XML 文件,通常包含 SQL 語句和結(jié)果映射,MyBatis 會根據(jù)這個文件來執(zhí)行數(shù)據(jù)庫操作。
<?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文件==>dao層接口-->
<!-- namespace="dao層接口的路徑" -->
<mapper namespace="com.dao.UserDao">
<!-- id="方法名字" resultType="返回值類型" -->
<select id="findUserById" resultType="user">
select * from user where id = #{id}
</select>
<!-- 通過名字查找用戶 -->
<select id="findUserByName" resultType="user">
SELECT * FROM user WHERE name = #{name}
</select>
<insert id="insertUser" parameterType="user">
insert into user(name,age,sex)values (#{name},#{age},#{sex})
</insert>
<update id="updateUser" parameterType="user">
update user set name=#{name},age=#{age},sex=#{sex} where id = #{id}
</update>
<delete id="deleteUser" parameterType="user">
delete from user where id = #{id}
</delete>
<resultMap id="user" type="user">
<!-- id是告知主鍵,哪個列對應(yīng)哪個類的成員函數(shù)-->
<!-- property 成員變量 column 列名-->
<id property ="id" column="id"></id>
<result property="name" column="name"></result>
<result property="age" column="age"></result>
</resultMap>
<select id="findAll" resultMap="user">
select * from user
</select>
</mapper>
注意:
1.mapper文件的映射文件路徑與dao包路徑相同
2.直接使用 User 作為別名,而不需要使用全限定類名
