mybatis映射文件mapper.xml的具體寫法
Mapper映射文件是一個(gè)xml格式文件,必須遵循相應(yīng)的dtd文件規(guī)范
在學(xué)習(xí)mybatis的時(shí)候我們通常會(huì)在映射文件這樣寫:
<?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.qbd.mapper.StudentMappers"> <select id="findbyid" parameterType="Integer" resultMap="StudentResult"> select *from student where id=#{id} </select> <select id="findbygradeid" parameterType="Integer" resultMap="StudentResult"> select *from student where gid=#{gid} </select> <resultMap type="Student" id="StudentResult"> <id property="id" column="id"/> <result property="name" column="name"/> <result property="age" column="age"/> <association property="address" column="addid" select="com.qbd.mapper.AddressMappers.findbyid"> </association> <association property="grade" column="gid" select="com.qbd.mapper.GradeMappers.findbyid"> </association> </resultMap> </mapper>
然后再寫dao的實(shí)現(xiàn)在寫一個(gè)類,來實(shí)現(xiàn)dao的接口。但是這樣在實(shí)現(xiàn)中需要這樣寫:
package com.qbd.service; import org.apache.ibatis.session.SqlSession; import org.apache.log4j.Logger; import com.qbd.mapper.StudentMappers; import com.qbd.model.Student; import com.qbd.util.SqlSessionFactoryUtil; public class StudentService { private static Logger logge=Logger.getLogger(StudentService.class); public static void main(String[] args) { SqlSession sqlSession=SqlSessionFactoryUtil.getSqlSession(); StudentMappers studentMappers=(StudentMappers)sqlSession.getMapper(StudentMappers.class); Student student=new Student(); student.setName("22"); student.setAge(2); int s=studentMappers.add(student); sqlSession.commit(); if(s>0){ logge.info("success"); System.out.println("success"); } } }
來讀取配置文件
另一種方法就是:
直接在mapper.xml中的這一部分寫成dao<mapper namespace="com.qbd.mapper.StudentMappers">如下
<?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.qbd.ssm.dao.UserDao"> <!-- 定義緩存 一般是一級(jí)緩存,如果用同一個(gè)sqlsession 那么相同查詢直接會(huì)從緩存中查找 <cache size="1024" flushInterval="60000" eviction="LRU" readOnly="false"></cache> --> <!-- 查找所有 --> <select id="find" parameterType="Map" resultMap="StudentResult"> select * from user <where> <if test="uname!=null and uname!='' "> and uname like #{uname} </if> </where> <if test="start!=null and size!=null"> limit #{start},#{size} </if> </select> <select id="getTotal" parameterType="Map" resultType="Long"> select count(*) from user <where> <if test="uname!=null and uname!='' "> and uname like #{uname} </if> </where> </select> <!-- 按照用戶名和密碼查找 --> <select id="getUser" resultMap="StudentResult" parameterType="Map"> select *from user where uname=#{uname} and upassword=#{upassword} </select> <!-- 刪除 --> <delete id="delete" parameterType="Map"> delete from user where uid=#{uid} </delete> <!-- 修改 --> <update id="update" parameterType="User"> update user <set> <if test="uname!=null"> uname=#{uname}, </if> <if test="upassword!=null"> upassword=#{upassword}, </if> <if test="upower!=null"> upower=#{upower}, </if> </set> where uid=#{uid} </update> <!-- 增加 --> <insert id="add" parameterType="User"> insert into user values(null,#{uname},#{upassword},#{upower}) </insert> <resultMap type="User" id="StudentResult"> <id property="uid" column="uid"/> <result property="uname" column="uname"/> <result property="upassword" column="upassword"/> </resultMap> </mapper>
那么就不用寫dao的實(shí)現(xiàn)在service中就能掉用 mybatis默認(rèn)會(huì)把mapper.xml映射為dao的實(shí)現(xiàn)
那么下面dao就能這樣寫:
package com.qbd.ssm.dao; import java.util.List; import java.util.Map; import org.apache.ibatis.annotations.Delete; import com.qbd.ssm.model.User; public interface UserDao { public List<User> getAll(); public User getUser(User user); public int delete(User user); public int update(User user); public int add(User user); public List<User> find(Map<String,Object> map); public Long getTotal(Map<String,Object> map); }
service這樣寫
package com.qbd.ssm.service; import java.util.List; import java.util.Map; import com.qbd.ssm.model.User; public interface UserService { public List<User> getAll(); public User getUser(User user); public int delete(User user); public int update(User user); public int add(User user); public List<User> find(Map<String,Object> map); public Long getTotal(Map<String,Object> map); }
service的實(shí)現(xiàn):
package com.qbd.ssm.serviceimpl; import java.util.List; import java.util.Map; import javax.annotation.Resource; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import com.qbd.ssm.dao.UserDao; import com.qbd.ssm.model.User; import com.qbd.ssm.service.UserService; @Service("userService") public class UserServiceImpl implements UserService { private UserDao userDao; public UserDao getUserDao() { return userDao; } @Resource public void setUserDao(UserDao userDao) { this.userDao = userDao; } public List<User> getAll() { // TODO Auto-generated method stub return userDao.getAll(); } public User getUser(User user) { // TODO Auto-generated method stub return userDao.getUser(user); } public int delete(User user) { // TODO Auto-generated method stub return userDao.delete(user); } public int update(User user) { // TODO Auto-generated method stub return userDao.update(user); } public int add(User user) { // TODO Auto-generated method stub return userDao.add(user); } public List<User> find(Map<String, Object> map) { // TODO Auto-generated method stub return userDao.find(map); } public Long getTotal(Map<String, Object> map) { // TODO Auto-generated method stub return userDao.getTotal(map); } }
在這里面userDao不能寫錯(cuò),spring會(huì)按照name進(jìn)行注入
到此這篇關(guān)于mybatis映射文件mapper.xml的具體寫法的文章就介紹到這了,更多相關(guān)mybatis映射文件mapper.xml內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
- Mybatis映射文件詳解之mapper.xml文件
- Java?Mybatis的初始化之Mapper.xml映射文件的詳解
- 解決Mybatis映射文件mapper.xml中的注釋問題
- mybatis中映射文件(mapper)中的使用規(guī)則
- mybatis整合spring實(shí)現(xiàn)開啟mapper.xml映射文件掃描
- myBatis的mapper映射文件之批量處理方式
- 解決Mybatis在IDEA中找不到mapper映射文件的問題
- Mybatis中Mapper映射文件使用詳解
- 詳解mybatis通過mapper接口加載映射文件
- MyBatis Mapper映射文件配置的實(shí)現(xiàn)
相關(guān)文章
關(guān)于dubbo的RPC和RESTful性能及對(duì)比
這篇文章主要介紹了關(guān)于dubbo的RPC和RESTful性能及對(duì)比,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2022-12-12java Aop實(shí)現(xiàn)自動(dòng)填充字段值示例
這篇文章主要為大家介紹了Aop實(shí)現(xiàn)自動(dòng)填充字段值示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-08-08Java實(shí)現(xiàn)監(jiān)控多個(gè)線程狀態(tài)的簡單實(shí)例
下面小編就為大家?guī)硪黄狫ava實(shí)現(xiàn)監(jiān)控多個(gè)線程狀態(tài)的簡單實(shí)例。小編覺得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧2017-03-03Spring Boot 2 整合 QuartJob 實(shí)現(xiàn)定時(shí)器實(shí)時(shí)管理功能
Quartz是一個(gè)完全由java編寫的開源作業(yè)調(diào)度框架,形式簡易,功能強(qiáng)大。接下來通過本文給大家分享Spring Boot 2 整合 QuartJob 實(shí)現(xiàn)定時(shí)器實(shí)時(shí)管理功能,感興趣的朋友一起看看吧2019-11-11Java線程中synchronized和volatile關(guān)鍵字的區(qū)別詳解
這篇文章主要介紹了Java線程中synchronized和volatile關(guān)鍵字的區(qū)別詳解,synchronzied既能夠保障可見性,又能保證原子性,而volatile只能保證可見性,無法保證原子性,volatile不需要加鎖,比synchronized更輕量級(jí),不會(huì)阻塞線程,需要的朋友可以參考下2024-01-01Java利用openoffice將doc、docx轉(zhuǎn)為pdf實(shí)例代碼
這篇文章主要介紹了Java利用openoffice將doc、docx轉(zhuǎn)為pdf實(shí)例代碼,分享了相關(guān)代碼示例,小編覺得還是挺不錯(cuò)的,具有一定借鑒價(jià)值,需要的朋友可以參考下2018-01-01java計(jì)算值所占的百分比,結(jié)果為100%問題
這篇文章主要介紹了java計(jì)算值所占的百分比,結(jié)果為100%問題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2022-11-11