中文亚洲精品无码_熟女乱子伦免费_人人超碰人人爱国产_亚洲熟妇女综合网

當前位置: 首頁 > news >正文

1核2g 做網(wǎng)站百度手機應用商店

1核2g 做網(wǎng)站,百度手機應用商店,wordpress query_vars,眉山網(wǎng)站制作目錄 1 配置 MyBatis 方式 1.1 XML 配置文件 1.2 Java 注解配置 1.3. Java API 配置 2 在 MySQL 中創(chuàng)建一張表 3 創(chuàng)建一個基于 Maven 的 JavaWeb 工程 4 編寫 User 實體類 5 創(chuàng)建 Mybatis 全局配置文件 6 編寫一個 DAO 或 Mapper 接口 7 編寫 SQL 映射配置文件&#…

目錄

1 配置 MyBatis 方式

1.1 XML 配置文件

1.2 Java 注解配置

1.3. Java API 配置

2 在 MySQL 中創(chuàng)建一張表

3 創(chuàng)建一個基于 Maven 的?JavaWeb 工程

4 編寫 User 實體類

5?創(chuàng)建 Mybatis 全局配置文件

6 編寫一個 DAO 或 Mapper 接口

7 編寫 SQL 映射配置文件(重要)

8 加載映射文件

9 導入日志文件

10 創(chuàng)建 MyBatisTest 測試類

11 參考文檔


1 配置 MyBatis 方式

MyBatis 可以通過以下三種方式來創(chuàng)建和配置

1.1 XML 配置文件

????????最常見的方式是使用 XML 配置文件來配置 MyBatis。在 XML 配置文件中,可以定義數(shù)據(jù)源、映射文件的位置、類型別名、插件等信息。XML 配置文件通常包括 MyBatis 的全局配置和映射文件的配置。以下是一個簡單的 XML 配置文件示例:

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE configurationPUBLIC "-//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="com.mysql.jdbc.Driver"/><property name="url" value="jdbc:mysql://localhost:3306/mydatabase"/><property name="username" value="root"/><property name="password" value="root"/></dataSource></environment></environments><mappers><mapper resource="com/example/mapper/ExampleMapper.xml"/></mappers>
</configuration>

1.2 Java 注解配置

????????從 MyBatis 3.4.1 版本開始,MyBatis 支持使用 Java 注解來配置映射關系。可以使用 @MapperScan 注解來指定 Mapper 接口所在的包,也可以使用 @Mapper 注解來標記 Mapper 接口。以下是一個簡單的 Java 注解配置示例:

@Configuration
@MapperScan("com.example.mapper")
public class MyBatisConfig {// 數(shù)據(jù)源配置// 其他配置...
}

1.3. Java API 配置

????????除了使用 XML 配置文件和 Java 注解外,MyBatis 還支持使用 Java API 來進行配置。通過編寫 Java 代碼,可以動態(tài)地創(chuàng)建 SqlSessionFactory 對象,并且進行各種配置。以下是一個簡單的 Java API 配置示例:

DataSource dataSource = getDataSource(); // 獲取數(shù)據(jù)源
TransactionFactory transactionFactory = new JdbcTransactionFactory();
Environment environment = new Environment("development", transactionFactory, dataSource);
Configuration configuration = new Configuration(environment);
configuration.addMapper(MyMapper.class);
SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(configuration);

2 在 MySQL 中創(chuàng)建一張表

drop table if exists person; 
create table person (
id int(10) primary key auto_increment, #主鍵,自動增長
name varchar(14) unique not null, #該行不重復,不為空
age int,
sex char(10) default '女' # 沒有插入該列,填入默認值"女"
)charset=utf8; #utf-8 編碼#多行插入
insert into person(name, age, sex) values
('西施', 18, '女'),
('大喬', 32, null),
('王昭君', 24, null);insert into person(name,age) values('趙飛燕',27);
insert into person(name,age) values('虞姬', 25);
insert into person(id,name,age) values(9, '貂蟬', 26);

3 創(chuàng)建一個基于 Maven 的?JavaWeb 工程

可以參考以下博文:

IDEA 2023.2 配置 JavaWeb 工程-CSDN博客icon-default.png?t=N7T8https://blog.csdn.net/zjs246813/article/details/136199249?spm=1001.2014.3001.5501導入依賴

<dependencies><!-- Mybatis --><dependency><groupId>org.mybatis</groupId><artifactId>mybatis</artifactId><version>3.5.6</version></dependency><!-- mysql驅動 --><dependency><groupId>mysql</groupId><artifactId>mysql-connector-java</artifactId><version>8.0.21</version></dependency><!-- 日志處理 --><dependency><groupId>log4j</groupId><artifactId>log4j</artifactId><version>1.2.17</version></dependency><!-- 單元測試 --><dependency><groupId>junit</groupId><artifactId>junit</artifactId><version>4.12</version></dependency>
</dependencies>

4 編寫 User 實體類

public class User {private Integer id;private String name;private Integer age;private String sex;// Getter、Setter、toString() 方法省略
}

5?創(chuàng)建 Mybatis 全局配置文件

創(chuàng)建 mysql.properties 配置文件

study 改為自己的數(shù)據(jù)庫名

root 是數(shù)據(jù)庫用戶名

123456 是數(shù)據(jù)庫用戶密碼

驅動器一般為?com.mysql.jdbc.Driver

url=jdbc:mysql://localhost:3306/study?useSSL=false&useUnicode=true&characterEncoding=UTF-8&serverTimezone=UTC
name=root
password=123456
driver=com.mysql.cj.jdbc.Driver

在 resources 目錄中,創(chuàng)建 Mybatis 的全局配置文件 mybatis-config.xml

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE configurationPUBLIC "-//mybatis.org//DTD Config 3.0//EN""http://mybatis.org/dtd/mybatis-3-config.dtd">
<configuration><!-- 通過properties標簽,讀取java配置文件的內容 --><properties resource="mysql.properties" /><!-- 配置環(huán)境.--><environments default="development"><!-- id屬性必須和上面的default一致 --><environment id="development"><!--配置事務的類型--><transactionManager type="JDBC"></transactionManager><!--dataSource 元素使用標準的 JDBC 數(shù)據(jù)源接口來配置 JDBC 連接對象源 --><dataSource type="POOLED"><!--配置連接數(shù)據(jù)庫的4個基本信息--><property name="url" value="${url}" /><property name="username" value="${name}" /><property name="password" value="${password}" /><property name="driver" value="${driver}" /></dataSource></environment></environments>
</configuration>

對 mybatis-config.xml 中配置項的簡單說明:

  • properties用于加載外部屬性文件,通過指定 resource="mysql.properties",MyBatis 會嘗試從當前目錄下查找名為 "mysql.properties" 的文件,并將其中的屬性值應用到配置 property?中
  • environments配置當前的環(huán)境,default 屬性有 development 和 work 兩種選擇,默認是 development 開發(fā)模式,work 是工作模式?? ?指定當前運行環(huán)境,通過 default 屬性指定某個運行環(huán)境的標識符 id 來使用該運行環(huán)境?
  • environment配置每個 environment 定義的環(huán)境,可以配置多個運行環(huán)境,但是每個 SqlSessionFactory 實例只能選擇一個運行環(huán)境。其 id 屬性也有 development 和 work 兩種選擇,并且必須和上面的 default 屬性一致?? 配置運行環(huán)境,通過 id 屬性來標識該環(huán)境。如果配置了兩個相同的 environment,即它們的 id 屬性值相同,MyBatis 會用后面的覆蓋掉前面的
  • transactionManager配置事務管理器類型,type 屬性中有 JDBC 和 MANAGED 兩種,一次只能配置一個
    • JDBC 使用 JdbcTransactionFactory 工廠生成的 JdbcTransaction 對象實現(xiàn),以 JDBC 的方式進行數(shù)據(jù)庫的提交、回滾等操作,它依賴于從數(shù)據(jù)源得到的連接來管理事務范圍
    • MANAGED 使用 ManagedTransactionFactory 工廠生成的 ManagedTransaction 對象實現(xiàn),它的提交和回滾不需要任何操作,而是把事務交給容器進行處理,默認情況下會關閉連接,如果不希望默認關閉,只要將其中的 closeConnection 屬性設置為 false 即可
  • dataSource配置數(shù)據(jù)源類型,type屬性有 UNPOOLED、POOLED 和 JNDI 三種選擇:
    • UNPOOLED (UnpooledDataSourceFactory):采用非數(shù)據(jù)庫池的管理方式,每次請求都會新建一個連接,并用完后關閉它,所以性能不是很高。該方式適用于只有小規(guī)模數(shù)量并發(fā)用戶的簡單應用程序
    • POOLED?(PooledDataSourceFactory):采用連接池的概念將數(shù)據(jù)庫鏈接對象 Connection 組織起來,可以在初始化時創(chuàng)建多個連接,使用時直接從連接池獲取,避免了重復創(chuàng)建連接所需的初始化和認證時間,從而提升了效率,所以這種方式比較適合對性能要求高的應用中。在開發(fā)或測試環(huán)境中經(jīng)常用到此方式
    • JNDI (JndiDataSourceFactory):數(shù)據(jù)源 JNDI 的實現(xiàn)是為了能在如 EJB 或應用服務器這類容器中使用,容器可以集中或在外部配置數(shù)據(jù)源,然后放置一個 JNDI 上下文的引用。在生產(chǎn)環(huán)境中優(yōu)先考慮這種方式
  • property:dataSource 中的 property 元素就是數(shù)據(jù)庫相關的配置信息

6 編寫一個 DAO 或 Mapper 接口

在 com.mapper 目錄下創(chuàng)建一個 UserMapper 接口

package com.mapper;import com.entity.User;
import org.apache.ibatis.annotations.Param;import java.util.List;public interface UserMapper {// 查詢所有用戶List<User> selectAllUser();// 通過 id 查詢一個用戶User selectUserById(int id);// 模糊查詢,根據(jù) name 字段查詢用戶List<User> selectUserByName(String name);// insert、update、delete的返回值都是int(影響行數(shù))// 添加用戶// 帶兩個參數(shù),需要在接口中通過@Param注解指定名稱(因為編譯時參數(shù)名不會保留)int insertUser(@Param("name") String name,@Param("age") int age,@Param("sex") String sex);// 根據(jù) id 更新用戶int updateUser(@Param("id") int id,@Param("name") String name,@Param("age") int age,@Param("sex") String sex);// 根據(jù) id 刪除用戶int deleteUsesr(int id);
}

7 編寫 SQL 映射配置文件(重要)

????????在目錄 resources 創(chuàng)建 mapper 目錄,然后在 mapper 目錄下創(chuàng)建一個 UserMapper.xml 文件。Mybatis 中所有數(shù)據(jù)庫的操作都基于 SQL 映射配置文件中配置的SQL語句,在 SQL 映射配置文件中可以配置任何類型的 SQL 語句??蚣軙鶕?jù)配置文件中的參數(shù)配置,完成對 SQL 語句輸入輸出參數(shù)的映射配置。

相關屬性
描述
namespace表示命名空間,用來設定當前 Mapper 配置文件的唯一標識,將來在 Java 程序中通過 namespace 屬性值來定位到這個配置文件,namespace 屬性值可以隨意命名,建議使用 Mapper 接口的全類名命名,如 com.mapper.UserMapper
idSQL 映射語句的唯一標識
parameterType用來指定 SQL 語句中的參數(shù)類型,可以是一個簡單類型,也可以是一個復雜對象類型
resultType 和?resultMap

用來指定 SQL 語句的返回值類型,resultType 用于指定返回的單一結果類型,而 resultMap 用于指定返回結果的映射關系,通常用于復雜的查詢結果映射

parameterMap用來指定參數(shù)映射關系
sql用于定義可重用的 SQL 片段,可以在不同的 SQL 語句中重復使用,從而減少重復編寫相同的 SQL 代碼
include用于引用外部的 SQL 片段,可以在 SQL 映射文件中引用其他 SQL 片段,從而實現(xiàn)模塊化的 SQL 代碼編寫
cache用于配置結果緩存,可以指定 SQL 語句的查詢結果是否需要被緩存
#{}#{} 表示 SQL 語句的占位符
${}${} 表示 SQL 語句的拼接符

#{} 和 ${} 介紹

  • #{}SQL 語句的占位符,相當于JDBC中的 "?",它會自動進行 Java 類型和 JDBC 類型轉換,可以防止 SQL 注入攻擊。#{} 接受的輸入?yún)?shù)的類型可以是簡單類型、普通 JavaBean 或者 HashMap 。當接受簡單類型時,#{} 中可以寫 value 或者其他任意名稱。如果接受的是JavaBean,它會通過 OGNL 讀取對象中的屬性值,例如,一個JavaBean user,它有一個屬性 name,在映射文件中可以使用 #{user.name} 來引用這個屬性值
  • ${}: SQL 語句的拼接符,會將接收到的參數(shù)在不進行 JDBC 類型轉換的情況下拼接在 SQL 語句中,${} 里面必須要寫參數(shù),不然會報錯。${} 接受輸入?yún)?shù)的類型可以是簡單類型、普通 JavaBean 或者 HashMap 。當接受簡單類型時,${} 中只能寫 value,而不能寫其他任意名稱。如果接受的是 JavaBean,它會通過 OGNL 讀取對象中的屬性值,同上
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapperPUBLIC "-//mybatis.org//DTD Mapper 3.0//EN""http://mybatis.org/dtd/mybatis-3-mapper.dtd"><!--namespace-綁定一個對應dao/mapper接口-->
<mapper namespace="com.mapper.UserMapper"><!-- 查詢所有用戶 --><!--通過 resultType 指定查詢的結果是 User 類型的數(shù)據(jù)只需要指定 resultType 的類型,MyBatis 會自動將查詢的結果映射成 JavaBean 中的屬性--><!-- id 和 com.mapper.UserMapper.selectAllUser 對應 --><select id="selectAllUser" resultType="com.entity.User">select * from person;</select><!-- 通過id查詢一個用戶 --><!-- 帶一個簡單類型的參數(shù), 這種情況下parameterType屬性可以省略,mybatis可以自動推斷出類型 --><select id="selectUserById" parameterType="int" resultType="com.entity.User">select * from person where id = #{id};</select><!-- 模糊查詢,根據(jù)name字段查詢用戶--><select id="selectUserByName" parameterType="String" resultType="com.entity.User">select * from person where name like '%${value}%';</select><!-- 添加用戶--><!-- 帶兩個參數(shù),需要在接口中通過@Param注解指定名稱(因為編譯時參數(shù)名不會保留) --><!-- insert、update、delete的返回值都是int(影響行數(shù)) --><insert id="insertUser" parameterType="com.entity.User">insert into person(name, age, sex)values (#{name}, #{age}, #{sex});</insert><!-- 根據(jù)id更新用戶 --><update id="updateUser" parameterType="com.entity.User">update person set name = #{name},age = #{age},sex = #{sex} where id = #{id}</update><!-- 根據(jù)id刪除用戶 --><delete id="deleteUser" parameterType="int">delete from person where id = #{id}</delete>
</mapper>

8 加載映射文件

將上面創(chuàng)建的 UserMapper.xml 文件配置到全局配置文件 mybatis-config.xml 中

<!--指定映射配置文件的位置,這個映射配置文件指的是每個業(yè)務獨立的配置文件-->
<mappers><mapper resource="mapper/UserMapper.xml"/>
</mappers>

9 導入日志文件

導入日志文件,在 resources 目錄下創(chuàng)建 log4j.properties 配置文件,并且導入如下配置(如果log報錯則以管理員的方式啟動 Eclipse 或 IDEA)

# Set root category priority to INFO and its only appender to CONSOLE.
#log4j.rootCategory=INFO, CONSOLE            debug   info   warn error fatal
log4j.rootCategory=debug, CONSOLE, LOGFILE# Set the enterprise logger category to FATAL and its only appender to CONSOLE.
log4j.logger.org.apache.axis.enterprise=FATAL, CONSOLE# CONSOLE is set to be a ConsoleAppender using a PatternLayout.
log4j.appender.CONSOLE=org.apache.log4j.ConsoleAppender
log4j.appender.CONSOLE.layout=org.apache.log4j.PatternLayout
log4j.appender.CONSOLE.layout.ConversionPattern=%d{ISO8601} %-6r [%15.15t] %-5p %30.30c %x - %m\n# LOGFILE is set to be a File appender using a PatternLayout.
log4j.appender.LOGFILE=org.apache.log4j.FileAppender
log4j.appender.LOGFILE.File=D:/axis.log
log4j.appender.LOGFILE.Append=true
log4j.appender.LOGFILE.layout=org.apache.log4j.PatternLayout
log4j.appender.LOGFILE.layout.ConversionPattern=%d{ISO8601} %-6r [%15.15t] %-5p %30.30c %x - %m\n

10 創(chuàng)建 MyBatisTest 測試類

使用 JDBC 的事務管理在進行增刪改操作時,需要進行提交事務,也就是 sqlSession.commit(),否則數(shù)據(jù)不會操作成功

public class MybatisTest {//定義 SqlSessionSqlSession sqlSession = null;@Beforepublic void getSqlSession() throws IOException {//加載 mybatis 全局配置文件 Resources// 原 InputStream is = MybatisTest.class.getClassLoader().getResourceAsStream("mybatis-config.xml");InputStream is = Resources.getResourceAsStream("mybatis-config.xml");//創(chuàng)建 SqlSessionFactory 對象SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(is);//根據(jù) sqlSessionFactory 產(chǎn)生 sessionsqlSession = sqlSessionFactory.openSession();}//查詢所有用戶數(shù)據(jù)@Testpublic void testSelectAllUser() {/*** 注意:這個字符串由 UserMapper.xml 文件中的兩個部分構成(namespace + id)* <mapper namespace="com.mapper.UserMapper">中 namespace 的值* <select id="selectAllUser" > 中的 id 值* 這樣Mybatis才能找到需要的SQL*/String statement = "com.mapper.UserMapper.selectAllUser";List<User> listUser = sqlSession.selectList(statement);for (User user : listUser) {System.out.println(user);}sqlSession.close();}//根據(jù)Id查詢一個用戶數(shù)據(jù)@Testpublic void testSelectUserById() {String statement = "com.mapper.UserMapper.selectUserById";User user = sqlSession.selectOne(statement, 1);System.out.println(user);sqlSession.close();}//模糊查詢:根據(jù) person 表的 name 字段@Testpublic void testSelectUserByName() {String statement = "com.mapper.UserMapper.selectUserByName";List<User> listUser = sqlSession.selectList(statement, "大");for (User user : listUser) {System.out.println(user);}sqlSession.close();}//添加一個用戶數(shù)據(jù)@Testpublic void testInsertUser() {String statement = "com.mapper.UserMapper.insertUser";User user = new User();user.setName("嫦娥");user.setAge(24);user.setSex("女");int i = sqlSession.insert(statement, user);System.out.println( (i>0)? "添加成功!":"添加失敗!");//提交插入的數(shù)據(jù)sqlSession.commit();sqlSession.close();}//根據(jù)id修改用戶數(shù)據(jù)@Testpublic void testUpdateUser(){//如果設置的 id不存在,那么數(shù)據(jù)庫沒有數(shù)據(jù)更改String statement = "com.mapper.UserMapper.updateUser";User user = new User();user.setId(10);user.setName("王紅");user.setAge(26);user.setSex("女");int i = sqlSession.update(statement, user);System.out.println( (i>0)? "修改成功!":"修改失敗!");//提交數(shù)據(jù)sqlSession.commit();sqlSession.close();}//根據(jù)id刪除用戶數(shù)據(jù)@Testpublic void testDeleteUser(){String statement = "com.mapper.UserMapper.deleteUser";int i = sqlSession.delete(statement, 10);System.out.println( (i>0)? "刪除成功!":"刪除失敗!");sqlSession.commit();sqlSession.close();}
}

部分執(zhí)行結果

執(zhí)行過程(添加一個用戶)

11 參考文檔

Mybatis3詳解(二)----Mybatis的第一個入門實例 - 唐浩榮 - 博客園 (cnblogs.com)

MyBatis中#{}占位符與${}拼接符的用法說明_java_腳本之家 (jb51.net)

http://www.risenshineclean.com/news/60742.html

相關文章:

  • 做網(wǎng)站的小圖標360網(wǎng)站排名優(yōu)化
  • 昆明哪些做網(wǎng)站建設的公司網(wǎng)站惡意點擊軟件
  • 做水果網(wǎng)站行營銷推廣的形式包括
  • 亞馬遜網(wǎng)站推廣怎么做學網(wǎng)絡營銷有用嗎
  • 浙江做網(wǎng)站的公司百度公司招聘信息
  • 哪個網(wǎng)站做調查問卷賺錢長春seo招聘
  • 騰訊云注冊域名后怎么做網(wǎng)站剛剛突發(fā)1驚天大事
  • wex5網(wǎng)站開發(fā)北京seo助理
  • 南京電商網(wǎng)站建設公司百度搜索引擎的原理
  • 免費茶葉網(wǎng)站建設點擊器
  • 360免費做網(wǎng)站電腦零基礎培訓班
  • icp備案 網(wǎng)站服務內容蘇州網(wǎng)站制作開發(fā)公司
  • 上海網(wǎng)站建設方案托管銀川seo
  • 太原網(wǎng)站設計公司軟件開發(fā)定制
  • 鄭州網(wǎng)站建設國奧大廈網(wǎng)站seo資訊
  • 時時彩網(wǎng)站開發(fā)違法嗎升華網(wǎng)絡推廣軟件
  • 濮陽市建設分局網(wǎng)站百度賬號中心
  • qq郵箱登錄入口網(wǎng)頁版廣州seo網(wǎng)站推廣公司
  • 搭建cms網(wǎng)站網(wǎng)絡互聯(lián)網(wǎng)推廣
  • 廣東兩學一做網(wǎng)站西安網(wǎng)是科技發(fā)展有限公司
  • 江門模板建站哪家好網(wǎng)站推廣網(wǎng)絡營銷方案
  • 網(wǎng)站里的橫幅怎么做項目網(wǎng)站
  • 鄭州網(wǎng)站建設哪家好打開百度一下網(wǎng)頁版
  • 青之峰做網(wǎng)站廈門seo新站策劃
  • 臨清網(wǎng)站制作公司plc培訓機構哪家最好
  • 創(chuàng)建公司策劃書寧波優(yōu)化推廣選哪家
  • 網(wǎng)站建站方案說明書網(wǎng)站制作的費用
  • 哪家上市公司做視頻網(wǎng)站培訓機構專業(yè)
  • wordpress導航目錄手機優(yōu)化大師為什么扣錢
  • 天津制作企業(yè)網(wǎng)站提高工作效率的方法