一.MyBatis基礎知識
掌握點
- 掌握MyBati中常用API的使用方法
- 正確撰寫MyBatis的組態檔
- 正確撰寫MyBatis中的映射檔案
MyBatis是一款優秀的持久層框架,它支持制定化SQL,儲存程序以及高級映射,MyBatis將JDBC進行了封裝,避免了直接使用JDBC操作資料庫(),MyBatis可以使用簡單的①XML或者②注解配置映射類和表之間的關系,將介面和JAVA的POJO(Plain Ordinary Java Object,普通的Java物件)映射成資料庫中記錄,
MyBatis的組態檔
1.設定配置編碼格式
在web.xml中添加filter標簽,設定編碼為UTF-8
<filter>
<filter-name>encoding</filter-name>
<filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>
<async-supported>true</async-supported>
<init-param>
<param-name>encoding</param-name>
<param-value>utf-8</param-value>
</init-param>
<init-param>
<param-name>forceEncoding</param-name>
<param-value>true</param-value>
</init-param>
</filter>
2.properties元素的介紹和使用
properties是一個配置屬性的元素,該元素通常用于將內部的配置外在話,即通過外部的組態檔動態地替換內部定義的屬性,常用的如資料庫的連接等屬性,
- driver:mysql的驅動
- url:資料庫的url地址,localhost本地地址,替換localhost為192./././地址則訪問該地址的資料庫
- username:連接資料庫的用戶名
- password:連接資料庫的密碼
具體根據自己的實際情況填寫,
db.properties的組態檔,檔案內容如下:
jdbc.driver=com.mysql.cj.jdbc.Driver
jdbc.url=jdbc:mysql://localhost:3306/ssm?useUnicode=true&characterEncoding=utf8
jdbc.username=root
jdbc.password=123456
在有了db.properties屬性檔案的匯入,就可以修改組態檔中連接資料庫的資訊,代碼如下:
3.mybatis-config.xml
在eclipse中,mybatis-config.xml需要快捷配置則需要進行配置.dtd檔案,配置的位置如下,

mybatis-3-config.dtd的添加和mybatis-3-mapper.dtd同理,

在配置完畢后就可以進行快捷敲代碼了,
在src下創建MyBatis組態檔mybatis-config.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="db.properties"/>
<!-- 定義別名 -->
<typeAliases>
<package name="com.po"/>
</typeAliases>
<!-- 配置環境,默認的環境id為mysql-->
<environments default="mysql">
<!-- 配置id為mysql的資料庫環境-->
<environment id="mysql">
<!-- 使用jdbc的事務管理-->
<transactionManager type="JDBC"/>
<!-- 資料庫連接池-->
<dataSource type="POOLED">
<!-- 資料庫驅動.在driver值中,會因為版本過低導致無法啟動驅動,無法是使用cannot find com.mysql.cj.jdbc.Driver驅動-->
<property name="driver" value="https://www.cnblogs.com/luohuas/p/${jdbc.driver}"/>
<!-- 連接資料庫-->
<property name="url" value="https://www.cnblogs.com/luohuas/p/${jdbc.url}"/>
<!-- 連接資料庫的用戶名-->
<property name="username" value="https://www.cnblogs.com/luohuas/p/${jdbc.username}"/>
<!-- 連接資料庫的密碼-->
<property name="password" value="https://www.cnblogs.com/luohuas/p/${jdbc.password}"/>
</dataSource>
</environment>
</environments>
<!-- 配置mapper的位置-->
<mappers>
<mapper resource="com/mapper/StudentMapper.xml"/>
</mappers>
</configuration>
在配置好資料庫的組態檔后
在com.utils包中寫一個SrudnetUtils.java類,用來獲取可以操作資料的物件,
package com.utils;
import java.io.IOException;
import java.io.Reader;
import org.apache.ibatis.io.Resources;
import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.session.SqlSessionFactoryBuilder;
public class SrudnetUtils {
// 初始化sqlSessionFactory物件
private static SqlSessionFactory sqlSessionFactory=null;
static {
Reader reader;
try {
// 使用MyBatis提供的Resources類加載MyBatis的組態檔
reader = Resources.getResourceAsReader("mybatis-config.xml");
// 構建sqlSessionFactory工廠
sqlSessionFactory=new SqlSessionFactoryBuilder().build(reader);
} catch (IOException e) {
// TODO 自動生成的 catch 塊
e.printStackTrace();
}
}
// 獲取SqlSession物件的靜態方法
public static SqlSession getSession() {
return sqlSessionFactory.openSession();
}
}
完成工具類后
在com.po包中創建一個物體類Student.java
package com.po;
public class Student {
private Integer id;
private String loginname;
private String username;
private Integer age;
public Student() {//無參建構式
super();
}
public Student(Integer id, String loginname, String username, Integer age) {//帶參建構式
super();
this.id = id;
this.loginname = loginname;
this.username = username;
this.age = age;
}
// get和set
public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id = id;
}
public String getLoginname() {
return loginname;
}
public void setLoginname(String loginname) {
this.loginname = loginname;
}
public String getUsername() {
return username;
}
public void setUsername(String username) {
this.username = username;
}
public Integer getAge() {
return age;
}
public void setAge(Integer age) {
this.age = age;
}
// toString方法
@Override
public String toString() {
return "Student [id=" + id + ", loginname=" + loginname + ", username=" + username + ", age=" + age + "]";
}
}
在com.mapper包中創建映射檔案
StudentMapper.xml
<?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="com.mapper.StudentMapper">
<!--查詢一條資料 -->
<select id="selectOneStudentById" resultType="Student">
select * from student where id=#{id}
</select>
<!--查詢全部資料 -->
<select id="selectAllStudent" resultType="Student">
select * from student
</select>
</mapper>
最后創建測驗類
在測驗用例中呼叫SrudnetUtils.java類中的SqlSession()得到一個SqlSession的實體sqlSession,相當于得到一個資料庫的連接,通過sqlSession的方法執行在映射檔案中指定的SQL陳述句,
- 查詢:sqlSession.selectOne()
- 添加:sqlSession.insert()
- 修改:sqlSession.update()
- 洗掉:sqlSession.delete()
TestStudent.java
package com.test;
import java.util.List;
import org.apache.ibatis.session.SqlSession;
import org.junit.Test;
import com.po.Student;
import com.utils.StudentUtils;
public class TestStudent {
// @Test//獲取表student的一行資料
// public void selectOneStudentBy() {
// SqlSession sqlSession=null;
// sqlSession = StudentUtils.getSession();
// Student student = sqlSession.selectOne("com.mapper.StudentMapper.selectOneStudentById",1);
// System.out.println(student.toString());
// }
@Test
public void selectAllStu() {
SqlSession sqlSession = null;
sqlSession = StudentUtils.getSession();
List<Student> student = sqlSession.selectList("com.mapper.StudentMapper.selectAllStudent");
System.out.println(student.toString());
}
}
其中
SqlSession sqlSession=null;
sqlSession=SrudnetUtils.getSession();
sqlSession._......
sqlSession.commit();//這行代碼不寫則無法使用添加修改洗掉的功能
持續更新.....
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/285547.html
標籤:Java
上一篇:Java設計模式(2:單一職責原則和依賴倒置原則詳解)
下一篇:面阿里P7,竟問這么簡單的題目?
