mybatis映射文件mapper.xml的具體寫法
Mapper映射文件是一個xml格式文件,必須遵循相應(yīng)的dtd文件規(guī)范
在學(xué)習(xí)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默認(rèn)會把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-12
Java實現(xiàn)監(jiān)控多個線程狀態(tài)的簡單實例
下面小編就為大家?guī)硪黄狫ava實現(xiàn)監(jiān)控多個線程狀態(tài)的簡單實例。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2017-03-03
Spring Boot 2 整合 QuartJob 實現(xiàn)定時器實時管理功能
Quartz是一個完全由java編寫的開源作業(yè)調(diào)度框架,形式簡易,功能強大。接下來通過本文給大家分享Spring Boot 2 整合 QuartJob 實現(xiàn)定時器實時管理功能,感興趣的朋友一起看看吧2019-11-11
Java線程中synchronized和volatile關(guān)鍵字的區(qū)別詳解
這篇文章主要介紹了Java線程中synchronized和volatile關(guān)鍵字的區(qū)別詳解,synchronzied既能夠保障可見性,又能保證原子性,而volatile只能保證可見性,無法保證原子性,volatile不需要加鎖,比synchronized更輕量級,不會阻塞線程,需要的朋友可以參考下2024-01-01
Java利用openoffice將doc、docx轉(zhuǎn)為pdf實例代碼
這篇文章主要介紹了Java利用openoffice將doc、docx轉(zhuǎn)為pdf實例代碼,分享了相關(guān)代碼示例,小編覺得還是挺不錯的,具有一定借鑒價值,需要的朋友可以參考下2018-01-01

