mybatis映射文件mapper.xml的具體寫法
Mapper映射文件是一個xml格式文件,必須遵循相應的dtd文件規(guī)范
在學習mybatis的時候我們通常會在映射文件這樣寫:
<?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的實現(xiàn)在寫一個類,來實現(xiàn)dao的接口。但是這樣在實現(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"> <!-- 定義緩存 一般是一級緩存,如果用同一個sqlsession 那么相同查詢直接會從緩存中查找 <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的實現(xiàn)在service中就能掉用 mybatis默認會把mapper.xml映射為dao的實現(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的實現(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不能寫錯,spring會按照name進行注入
到此這篇關(guān)于mybatis映射文件mapper.xml的具體寫法的文章就介紹到這了,更多相關(guān)mybatis映射文件mapper.xml內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
關(guān)于dubbo的RPC和RESTful性能及對比
這篇文章主要介紹了關(guān)于dubbo的RPC和RESTful性能及對比,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2022-12-12Java實現(xiàn)監(jiān)控多個線程狀態(tài)的簡單實例
下面小編就為大家?guī)硪黄狫ava實現(xiàn)監(jiān)控多個線程狀態(tài)的簡單實例。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2017-03-03Spring Boot 2 整合 QuartJob 實現(xiàn)定時器實時管理功能
Quartz是一個完全由java編寫的開源作業(yè)調(diào)度框架,形式簡易,功能強大。接下來通過本文給大家分享Spring Boot 2 整合 QuartJob 實現(xiàn)定時器實時管理功能,感興趣的朋友一起看看吧2019-11-11Java線程中synchronized和volatile關(guān)鍵字的區(qū)別詳解
這篇文章主要介紹了Java線程中synchronized和volatile關(guān)鍵字的區(qū)別詳解,synchronzied既能夠保障可見性,又能保證原子性,而volatile只能保證可見性,無法保證原子性,volatile不需要加鎖,比synchronized更輕量級,不會阻塞線程,需要的朋友可以參考下2024-01-01Java利用openoffice將doc、docx轉(zhuǎn)為pdf實例代碼
這篇文章主要介紹了Java利用openoffice將doc、docx轉(zhuǎn)為pdf實例代碼,分享了相關(guān)代碼示例,小編覺得還是挺不錯的,具有一定借鑒價值,需要的朋友可以參考下2018-01-01