面試題
https://blog.csdn.net/a745233700/article/details/80977133
目錄結構
第1節(jié)課
mybatis開發(fā)
jar包下載
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis</artifactId>
<!-- <version>3.3.0</version> -->
<version>3.4.2</version>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>5.1.36</version>
</dependency>
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-log4j12</artifactId>
<version>1.7.2</version>
</dependency>
<dependency>
<groupId>org.mybatis.generator</groupId>
<artifactId>mybatis-generator-core</artifactId>
<version>1.3.2</version>
</dependency>
<dependency>
<groupId>org.mybatis.caches</groupId>
<artifactId>mybatis-ehcache</artifactId>
<version>1.0.2</version>
</dependency>
<dependency>
<groupId>net.sf.ehcache</groupId>
<artifactId>ehcache</artifactId>
<version>2.10.1</version>
</dependency>
等待的過程講解mybatis入門
mybatis入門
概念定義
mybatis是開源的持久層框架淀歇,是apache下的頂級項目易核,他的前身ibatis
原來托管在google下,后來托管在github
他是ORM(對象關系映射)框架浪默,數(shù)據(jù)庫表-java類的實體類 mapper類里
mybatis工作原理和流程
第二節(jié)課 第一個mybatis程序#
src/main/java *.java 關鍵代碼
src/main/resource 配置文件或資源文件
src/main/test 測試文件
演示第一個項目
src/main/resource下新建config文件夾牡直,并新建SqlMapConfig.xml
配置文件SqlMapConfig.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">
</properties>
<!-- 和spring整合后 environments配置將廢除-->
<environments default="development">
<environment id="development">
<!-- 使用jdbc事務管理缀匕,事務控制由mybatis-->
<transactionManager type="JDBC" />
<!-- 數(shù)據(jù)庫連接池,由mybatis管理-->
<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>
<mapper resource="sqlmap/User.xml"/>
</mappers>
</configuration>
db.properties
jdbc.driver=com.mysql.jdbc.Driver
jdbc.url=jdbc:mysql://localhost:3306/java16?characterEncoding=UTF-8&useUnicode=true
jdbc.username=root
jdbc.password=root
User.java
public class User {
// 主鍵id,自增
private int user_id;
private String user_name;
private String user_pwd;
private String user_email;
private String user_idCard;
private int user_power=0;
....
}
user.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">
<!-- namespace命名空間碰逸,作用就是對sql進行分類化管理乡小,理解sql隔離
注意:使用mapper代理方法開發(fā),namespace有特殊重要的作用
-->
<mapper namespace="test">
<!-- 在 映射文件中配置很多sql語句 -->
<!-- 需求:通過id查詢用戶表的記錄 -->
<!-- 通過 select執(zhí)行數(shù)據(jù)庫查詢
id:標識 映射文件中的 sql
將sql語句封裝到mappedStatement對象中饵史,所以將id稱為statement的id
parameterType:指定輸入 參數(shù)的類型满钟,這里指定int型
#{}表示一個占位符號
#{id}:其中的id表示接收輸入 的參數(shù),參數(shù)名稱就是id胳喷,如果輸入 參數(shù)是簡單類型湃番,#{}中的參數(shù)名可以任意,可以value或其它名稱
resultType:指定sql輸出結果 的所映射的java對象類型厌蔽,select指定resultType表示將單條記錄映射成的java對象牵辣。
-->
<select id="findUserById" parameterType="int" resultType="com.neuedu.pojo.User">
SELECT * FROM T_USER WHERE user_id=#{id}
</select>
</mapper>
MybatisTest.java
public class MybatisTest {
// 根據(jù)id查詢用戶信息,得到一條記錄結果
@Test
public void findUserByIdTest() throws IOException {
// mybatis配置文件
String resource = "config/SqlMapConfig.xml";
// 得到配置文件流
InputStream inputStream = Resources.getResourceAsStream(resource);
// 創(chuàng)建會話工廠奴饮,傳入mybatis的配置文件信息
SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder()
.build(inputStream);
// 通過工廠得到SqlSession
SqlSession sqlSession = sqlSessionFactory.openSession();
// 通過SqlSession操作數(shù)據(jù)庫
// 第一個參數(shù):映射文件中statement的id,等于=namespace+"."+statement的id
// 第二個參數(shù):指定和映射文件中所匹配的parameterType類型的參數(shù)
// sqlSession.selectOne結果 是與映射文件中所匹配的resultType類型的對象
// selectOne查詢出一條記錄
User user = sqlSession.selectOne("test.findUserById", 1);
System.out.println(user);
// 釋放資源
sqlSession.close();
}
}
接下來從頭建立我們的第一個項目
創(chuàng)建mybatis項目
第一步新建maven web項目
第二步 創(chuàng)建依賴pom.xml,引入mybatis相關的jar(上面已完成)
第三步 創(chuàng)建src/main/resource下建立config文件夾
在文件夾下面建立SqlMapConfig.xml
具體操作步驟:file-new-other-xml file輸入文件名字SqlMapConfig.xml
打開mybatis 開發(fā)指南中文版第5頁復制以下內容
<!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"/>
<dataSource type="POOLED">
<property name="driver" value="${driver}"/>
<property name="url" value="${url}"/>
<property name="username" value="${username}"/>
<property name="password" value="${password}"/>
</dataSource>
</environment>
</environments>
<mappers>
<mapper resource="org/mybatis/example/BlogMapper.xml"/>
</mappers>
</configuration>
第四步:引入數(shù)據(jù)庫配置的資源文件
拷貝db.properties到src/main/resource下
第五步:SqlMapConfig.xml里引用資源文件
<!-- 引入資源文件 -->
<properties resource="db.properties"></properties>
第六步:修改SqlMapConfig.xml里
<mapper resource="sqlmap/User.xml"/>
第七步:有resource下建立sqlmap文件夾
第八步:在文件夾下建立User.xml
拷貝手冊第7頁如下內容并修改為正確的路徑
<?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="user">
<select id="findUserById" parameterType="int" resultType="com.neuedu.pojo.User">
select * from t_user where user_id = #{user_id}
</select>
</mapper>
第九步:src/main/java下新建com.neuedu.pojo包
并在包下建立User.java
package com.neuedu.pojo;
public class User {
// 主鍵id,自增
private int user_id;
private String user_name;
private String user_pwd;
private String user_email;
private String user_idCard;
private int user_power = 0;
}
第三節(jié)
在src/test/java下編寫測試程序
MybatisTest.java
@Test
public void findTest() throws IOException{
//第一步讀取SqlMapConfig
//指定文件位置
String resource="config/SqlMapConfig.xml";
//讀取資源文件
InputStream input=Resources.getResourceAsStream(resource);
//獲取SqlSessionFactory
SqlSessionFactory factory= new SqlSessionFactoryBuilder().build(input);
//獲取SqlSession
SqlSession session=factory.openSession();
//執(zhí)行查詢
User u=session.selectOne("user.findUserById", 1);
System.out.println(u.getUser_name());
//關閉連接
session.close();
}
刪除功能
User.xml
<delete id="delUser" parameterType="int">
delete from t_user where user_id = #{user_id}
</delete>
測試類:
@Test
public void delTest() throws IOException{
//第一步讀取SqlMapConfig
//指定文件位置
String resource="config/SqlMapConfig.xml";
//讀取資源文件
InputStream input=Resources.getResourceAsStream(resource);
//獲取SqlSessionFactory
SqlSessionFactory factory= new SqlSessionFactoryBuilder().build(input);
//獲取SqlSession
SqlSession session=factory.openSession();
//執(zhí)行查詢
int count=session.delete("user.delUser",6);
System.out.println(count);
session.commit();
//關閉連接
session.close();
}
sqlSessionFactory.openSession(); 默認不自動提交
sqlSessionFactory.openSession(true); 自動提交,不用寫 session.commit();
作業(yè):
做用戶的添加和修改功能