Mybatis核心配置文件、默認類型別名、Mybatis獲取參數值的兩種方式(實例代碼)
一、核心配置文件詳解
核心配置文件中的標簽必須按照固定的順序(有的標簽可以不寫,但順序一定不能亂):
properties、settings、typeAliases、typeHandlers、objectFactory、objectWrapperFactory、reflectorFactory、plugins、environments、databaseIdProvider、mappers
<?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文件,此時就可以${屬性名}的方式訪問屬性值--> <properties resource="jdbc.properties"></properties> <settings> <!--將表中字段的下劃線自動轉換為駝峰--> <setting name="mapUnderscoreToCamelCase" value="true"/> <!--開啟延遲加載--> <setting name="lazyLoadingEnabled" value="true"/> </settings> <typeAliases> <!-- typeAlias:設置某個具體的類型的別名 屬性: type:需要設置別名的類型的全類名 alias:設置此類型的別名,且別名不區(qū)分大小寫。若不設置此屬性,該類型擁有默認的別名,即類名 --> <!--<typeAlias type="com.atguigu.mybatis.bean.User"></typeAlias>--> <!--<typeAlias type="com.atguigu.mybatis.bean.User" alias="user"> </typeAlias>--> <!--以包為單位,設置改包下所有的類型都擁有默認的別名,即類名且不區(qū)分大小寫--> <package name="com.atguigu.mybatis.bean"/> </typeAliases> <!-- environments:設置多個連接數據庫的環(huán)境 屬性: default:設置默認使用的環(huán)境的id --> <environments default="mysql_test"> <!-- environment:設置具體的連接數據庫的環(huán)境信息 屬性: id:設置環(huán)境的唯一標識,可通過environments標簽中的default設置某一個環(huán)境的id,表示默認使用的環(huán)境 --> <environment id="mysql_test"> <!-- transactionManager:設置事務管理方式 屬性: type:設置事務管理方式,type="JDBC|MANAGED" type="JDBC":設置當前環(huán)境的事務管理都必須手動處理 type="MANAGED":設置事務被管理,例如spring中的AOP --> <transactionManager type="JDBC"/> <!-- dataSource:設置數據源 屬性: type:設置數據源的類型,type="POOLED|UNPOOLED|JNDI" type="POOLED":使用數據庫連接池,即會將創(chuàng)建的連接進行緩存,下次使用可以從緩存中直接獲取,不需要重新創(chuàng)建 type="UNPOOLED":不使用數據庫連接池,即每次使用連接都需要重新創(chuàng)建 type="JNDI":調用上下文中的數據源 --> <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="UserMapper.xml"/> --> <!-- 以包為單位,將包下所有的映射文件引入核心配置文件 注意: 1. 此方式必須保證mapper接口和mapper映射文件必須在相同的包下 2. mapper接口要和mapper映射文件的名字一致 --> <package name="com.atguigu.mybatis.mapper"/> </mappers> </configuration>
二、默認的類型別名
三、MyBatis的增刪改查
添加
<!--int insertUser();--> <insert id="insertUser"> insert into t_user values(null,'admin','123456',23,'男','12345@qq.com') </insert>
刪除
<!--int deleteUser();--> <delete id="deleteUser"> delete from t_user where id = 6 </delete>
修改
<!--int updateUser();--> <update id="updateUser"> update t_user set username = '張三' where id = 5 </update>
查詢一個實體類對象
<!--User getUserById();--> <select id="getUserById" resultType="com.atguigu.mybatis.bean.User"> select * from t_user where id = 2 </select>
查詢集合
<!--List<User> getUserList();--> <select id="getUserList" resultType="com.atguigu.mybatis.bean.User"> select * from t_user </select>
注意:
- 查詢的標簽select必須設置屬性resultType或resultMap,用于設置實體類和數據庫表的映射關系
- resultType:自動映射,用于屬性名和表中字段名一致的情況
- resultMap:自定義映射,用于一對多或多對一或字段名和屬性名不一致的情況
- 當查詢的數據為多條時,不能使用實體類作為返回值,只能使用集合,否則會拋出異常TooManyResultsException;但是若查詢的數據只有一條,可以使用實體類或集合作為返回值
四、MyBatis獲取參數值的兩種方式
- MyBatis獲取參數值的兩種方式:${}和#{}
- ${}的本質就是字符串拼接,#{}的本質就是占位符賦值
- ${}使用字符串拼接的方式拼接sql,若為字符串類型或日期類型的字段進行賦值時,需要手動加單引號;但是#{}使用占位符賦值的方式拼接sql,此時為字符串類型或日期類型的字段進行賦值時,可以自動添加單引號
1、單個字面量類型的參數
若mapper接口中的方法參數為單個的字面量類型,此時可以使用${}和#{}以任意的名稱(最好見名識意)獲取參數的值,注意${}需要手動加單引號
<!--User getUserByUsername(String username);--> <select id="getUserByUsername" resultType="User"> select * from t_user where username = #{username} </select>
<!--User getUserByUsername(String username);--> <select id="getUserByUsername" resultType="User"> select * from t_user where username = '${username}' </select>
2、多個字面量類型的參數
- 若mapper接口中的方法參數為多個時,此時MyBatis會自動將這些參數放在一個map集合中
以arg0,arg1…為鍵,以參數為值;
以param1,param2…為鍵,以參數為值;
- 因此只需要通過${}和#{}訪問map集合的鍵就可以獲取相對應的值,注意${}需要手動加單引號。
- 使用arg或者param都行,要注意的是,arg是從arg0開始的,param是從param1開始的
<!--User checkLogin(String username,String password);--> <select id="checkLogin" resultType="User"> select * from t_user where username = #{arg0} and password = #{arg1} </select>
<!--User checkLogin(String username,String password);--> <select id="checkLogin" resultType="User"> select * from t_user where username = '${param1}' and password = '${param2}' </select>
3、map集合類型的參數
若mapper接口中的方法需要的參數為多個時,此時可以手動創(chuàng)建map集合,將這些數據放在map中只需要通過${}和#{}訪問map集合的鍵就可以獲取相對應的值,注意${}需要手動加單引號
<!--User checkLoginByMap(Map<String,Object> map);--> <select id="checkLoginByMap" resultType="User"> select * from t_user where username = #{username} and password = #{password} </select>
@Test public void checkLoginByMap() { SqlSession sqlSession = SqlSessionUtils.getSqlSession(); ParameterMapper mapper = sqlSession.getMapper(ParameterMapper.class); Map<String,Object> map = new HashMap<>(); map.put("usermane","admin"); map.put("password","123456"); User user = mapper.checkLoginByMap(map); System.out.println(user); }
4、實體類類型的參數
若mapper接口中的方法參數為實體類對象時此時可以使用${}和#{},通過訪問實體類對象中的屬性名獲取屬性值,注意${}需要手動加單引號
<!--int insertUser(User user);--> <insert id="insertUser"> insert into t_user values(null,#{username},#{password},#{age},#{sex},#{email}) </insert>
@Test public void insertUser() { SqlSession sqlSession = SqlSessionUtils.getSqlSession(); ParameterMapper mapper = sqlSession.getMapper(ParameterMapper.class); User user = new User(null,"Tom","123456",12,"男","123@321.com"); mapper.insertUser(user); }
5、使用@Param標識參數
- 可以通過@Param注解標識mapper接口中的方法參數,此時,會將這些參數放在map集合中
- 以@Param注解的value屬性值為鍵,以參數為值;
- 以param1,param2…為鍵,以參數為值;
- 只需要通過${}和#{}訪問map集合的鍵就可以獲取相對應的值,注意${}需要手動加單引號
<!--User CheckLoginByParam(@Param("username") String username, @Param("password") String password);--> <select id="CheckLoginByParam" resultType="User"> select * from t_user where username = #{username} and password = #{password} </select>
@Test public void checkLoginByParam() { SqlSession sqlSession = SqlSessionUtils.getSqlSession(); ParameterMapper mapper = sqlSession.getMapper(ParameterMapper.class); mapper.CheckLoginByParam("admin","123456"); }
建議分成兩種情況進行處理
- 實體類類型的參數
- 使用@Param標識參數
總結
以上就是Mybatis之核心配置文件詳解、默認類型別名、Mybatis獲取參數值的兩種方式的相關知識點,希望對你有所幫助。
到此這篇關于Mybatis核心配置文件、默認類型別名、Mybatis獲取參數值的兩種方式的文章就介紹到這了,更多相關Mybatis獲取參數值內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!
相關文章
IDEA創(chuàng)建Servlet并配置web.xml的實現(xiàn)
這篇文章主要介紹了IDEA創(chuàng)建Servlet并配置web.xml的實現(xiàn),文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧2020-10-10Java數據結構與算法之雙向鏈表、環(huán)形鏈表及約瑟夫問題深入理解
這篇文章主要介紹了Java數據結構與算法之雙向鏈表、環(huán)形鏈表及約瑟夫問題深入理解,本文給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下2021-09-09java ArrayList集合中的某個對象屬性進行排序的實現(xiàn)代碼
這篇文章主要介紹了java ArrayList集合中的某個對象屬性進行排序的實現(xiàn)代碼,需要的朋友可以參考下2016-07-07