Mybatis1.1——使用mapper代理開發dao
Javaweb框架學習文章索引點這裡
由於在dao介面實現類方法中呼叫運算元據庫的方法中存在大量冗餘程式碼,並且在呼叫方法的時候傳入了部分硬編碼引數等問題。引入mapper代理的方式可以解決這些問題,並提高效率。
下面是一個簡單的mapper代理開發的示例:
1,編寫javabean,以及對應的資料庫表。User(id, name, age,tel)
2,編寫UserMapper.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填的是javabean的全限定類名-->
<mapper namespace="com.hhh.mapper.UserMapper">
<select id="findUserById" parameterType="int" resultType="com.hhh.dao.User">
select * from user where id = #{id}
</select>
<select id="findUserByName" parameterType="java.lang.String" resultType="com.hhh.dao.User">
select * from user where name like '%${value}%'
</select>
<insert id="insertInfoToUser" parameterType="com.hhh.dao.User">
insert into user(name, age, tel) values(#{name},#{age},#{tel})
<selectKey keyProperty="id" order="AFTER" resultType="java.lang.Integer">
select last_insert_id();
</selectKey>
</insert>
<delete id="deleteById" parameterType="java.lang.Integer">
delete from user where id = #{id}
</delete>
<update id="updateUser" parameterType="com.hhh.dao.User">
update user set name = #{name} where id = #{id}
</update>
</mapper>
以上配置的sql語句主要是常見的增刪改查
3,在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>
<environments default="development">
<environment id="development">
<!-- 使用jdbc事務管理 -->
<transactionManager type="JDBC"/>
<!-- 配置資料庫連線池 -->
<dataSource type="POOLED">
<property name="driver" value="com.mysql.jdbc.Driver"/>
<property name="url" value="jdbc:mysql://localhost:3306/test"/>
<property name="username" value="root"/>
<property name="password" value="123456"/>
</dataSource>
</environment>
</environments>
<!-- 載入對映檔案 -->
<mappers>
<mapper resource="mapper/UserMapper.xml"/>
</mappers>
</configuration>
4,編寫UserMapper介面
package com.hhh.mapper;
import java.util.List;
import com.hhh.dao.User;
public interface UserMapper {
/*
* 這裡的方法名需要和xml中配置的名稱相對應
* 輸入引數型別和返回值型別也是要和xml中配置的相同
* */
public User findUserById(int id) throws Exception;
/*
* 雖然在xml中配置的返回值型別為User,但是由於返回值為多項內容,所以這裡需要設定為List
* */
public List<User> findUserByName(String name) throws Exception;
public void deleteUserById(int id) throws Exception;
public void updateUser(User user) throws Exception;
public void insertInfoToUser(User user) throws Exception;
}
5,編寫測試:
@Test
public void test2() throws Exception{
//1,獲取sqlsession
InputStream in = Resources.getResourceAsStream("SqlMapConfig.xml");
SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(in);
SqlSession sqlSession = sqlSessionFactory.openSession();
//獲取由mybatis生成的mapper實現類
UserMapper mapper = sqlSession.getMapper(UserMapper.class);
//測試單項查詢
/* User user= mapper.findUserById(1);
System.out.println(user);*/
//測試多項查詢
/* List<User> list = mapper.findUserByName("張三");
System.out.println(list);*/
//測試插入
/* User user = new User("張三3",23,"12344");
mapper.insertInfoToUser(user);
sqlSession.commit();*/
//測試更新
/* User user = new User("張三5",23,"12344");
user.setId(23);//設定更新id為23的資料內容
mapper.updateUser(user);
sqlSession.commit();*/
//測試刪除
mapper.deleteUserById(23);
sqlSession.commit();
}
相關文章
- MyBatis 原始dao與mapper代理MyBatisAPP
- mybatis入門基礎(二)----原始dao的開發和mapper代理開發MyBatisAPP
- JAVA開發之簡化Dao層、提高開發效率Java
- 整個小東西,在IDEA中自動生成PO、DAO、MapperIdeaAPP
- JAVA開發之簡化Dao層、提高開發效率(二)Java
- JAVA開發之簡化Dao層、提高開發效率(三)Java
- go web開發(gin&gorm) 之DB配置及DAO的基本使用GoWebORM
- 開發一個MyBatis通用Mapper的輪子MyBatisAPP
- Webpack Proxy 代理使用更好的方式提升開發效率Web
- @Mapper註解的使用APP
- CeresDAO系統開發丨DAO智慧合約丨DAO借貸協議丨Defi丨NFT協議
- 關於DAO社群治理系統開發詳細教程
- Spring整合Mybatis時Mapper代理報錯BindingExceptionSpringMyBatisAPPException
- DAO流動性質押挖礦分紅系統開發(開發案例)丨DAO流動性質押挖礦分紅原始碼原始碼
- MyBatis外掛使用–通用MapperMyBatisAPP
- mybatis中@Mapper使用介紹MyBatisAPP
- MyBatis進階--介面代理方式實現Dao 和動態SQLMyBatisSQL
- 關於DAO社群治理dapp系統開發部署教程APP
- DAO的起源與發展前景
- 求大佬幫助我!!!IDEA中Mybatis的mapper.xml和dao.xml出現問題!!!IdeaMyBatisAPPXML
- DAO迴圈矩陣互助公排系統開發模式功能矩陣模式
- 大資料開發之Mapper Reduce序列化案例實操大資料APP
- 常用開發工具的代理設定
- DAO質押挖礦模式dapp開發(功能邏輯詳情)模式APP
- DAO智慧生態鏈專案系統開發技術介紹
- iOS開發中,whistle的安裝使用及模擬器代理配置iOS
- mybatis-plus原始碼解析(三)----Mapper介面動態代理呼叫過程MyBatis原始碼APP
- DAO社群治理模式系統開發需求梳理及所使用原始碼語言(Python)實現示例模式原始碼Python
- DAO公排互助開發/佛薩奇智慧合約系統開發/公排互助模式詳情模式
- dao代幣質押流動性挖礦開發正式版丨dao代幣質押流動性挖礦系統開發案例詳細及原始碼原始碼
- 後端開發基礎概念 Entity,DAO,DO,DTO,VO, Service,Controller後端Controller
- 奈米一號代理分銷商城開發
- 蜜都代理商軟體開發
- vue-cli開發環境代理配置Vue開發環境
- 使用 Nginx Proxy Manager反向代理開啟SSLNginx
- DAO去中心化流動性質押挖礦分紅系統開發(開發案例)丨技術分析中心化
- DAO質押分紅智慧合約流動性挖礦系統開發
- DAPP/DAO/IDO智慧合約挖礦系統開發技術搭建APP