1. 程式人生 > >框架-MyBatis動態sql語句

框架-MyBatis動態sql語句

學習總結:

1.當entity類中的變數名與資料庫表中的欄位名不一致時。

"UserMapper.xml"

新增:

<resultMap type="User" id="userlist">
<result property="uid" column="uid"/>
<result property="uName" column="uName"/>
<result property="uPwd" column="uPwd"/>
<result property="birthday" column="birthday"/>
<result property="iphone" column="phone"/> <!-- 這個不一樣,column代表資料庫的欄位名 -->
<result property="address" column="address"/>
</resultMap>

//查詢

<!-- entity類中的變數與資料庫表中的欄位不一致 -->
<select id="selectUserMap" resultMap="userlist">
select * from user
</select>

<!-- 帶引數 -->
<select id="selectMap" resultMap="userlist" parameterType="map">
select * from user where <!-- uid=#{uid} and uName=#{uName} -->
<if test="uid !=null"> <!-- 資料庫裡面的uid -->
uid=#{uid}
</if>
<if test="uName !=null">
and uName=#{uName}

</if>


</select>


<!-- 多個引數 -->
<!-- <select id="selectMore" resultMap="userlist">
select * from user where
<if test="uid !=null"> 資料庫裡面的uid
uid=#{uid}
</if>
<if test="uName !=null">
and uname=#{uName}

</if>


</select> -->




<!-- 多個引數 -->
 <select id="selectMore" resultMap="userlist">
select * from user 
<where>
<if test="uid !=null"> 資料庫裡面的uid
and uid=#{uid} and不報錯
</if>
<if test="uName !=null">
and uname=#{uName}

</if>
</where>
</select> 


<!-- 更新 -->
 <update id="updateUser"  parameterType="User">
update user 
<set>
<if test="uName !=null">uName=#{uName},</if>
<if test="uPwd !=null">uPwd=#{uPwd}</if>
</set>
where uid=#{uid}

</update> 


<!-- 分頁 -->
<select id="selectPage" resultMap="userlist">
select * from user limit #{from},#{pageSize}
</select>

UserDao

package com.kgc.dao;


import java.util.List;
import java.util.Map;


import org.apache.ibatis.annotations.Param;


import com.kgc.entity.User;


public interface UserDao {
List<User> selectAll();
int deletebyid(int uid);


int update(User user);

List<User> selectByName(String name);


int add(User user);
//entity類的變數與資料庫表的欄位不一樣
List<User> selectUserMap();
//引數
List<User> selectMap(Map<String, String>map);

//多個引數:@Param("uid"):uid,uName為資料庫裡面的欄位
List<User> selectMore(@Param("uid") Integer uid, @Param("uName") String uName);

//set
int updateUser(User user);

//分頁
List<User> selectPage(@Param("from") Integer pageIndex,@Param("pageSize") Integer pageSize);


}

//配置檔案

"MyBatis-config.xml"



<!-- 通過這個配置檔案完成mybatis與資料庫的連線 -->
<configuration>
<!-- 引入 database.properties 檔案-->
<properties resource="database.properties"/>
<!-- 配置mybatis的log實現為LOG4J -->
<settings>
<setting name="logImpl" value="LOG4J" />
</settings>

<!-- 別名,用package後,該包中的別名都可以用各自的類名。
如果是單個設定,則:<typeAlias type="com.kgc.entity.User" alias="User"/>
-->
<typeAliases>
<package name="com.kgc.entity"/>
</typeAliases>
<environments default="development">
<environment id="development">
<!--配置事務管理,採用JDBC的事務管理  -->
<transactionManager type="JDBC"></transactionManager>
<!-- POOLED:mybatis自帶的資料來源,JNDI:基於tomcat的資料來源 -->
<dataSource type="POOLED">
<property name="driver" value="${driver}"/>
<property name="url" value="${url}"/>
<property name="username" value="${user}"/>
<property name="password" value="${password}"/>
</dataSource>
</environment>
</environments>


<!-- 將mapper檔案加入到配置檔案中 -->
<mappers>
<mapper resource="com/kgc/dao/UserMapper.xml"/>
</mappers>

</configuration>

//測試類

package com.kgc.test;


import java.util.HashMap;
import java.util.List;
import java.util.Map;


import org.apache.ibatis.session.SqlSession;


import com.kgc.dao.UserDao;
import com.kgc.entity.User;
import com.kgc.util.SqlSessionUtil;


public class Test {
public static void main(String[] args) {
SqlSession session=SqlSessionUtil.getSession();
//查詢
/*List<User> list=session.getMapper(UserDao.class).selectAll();
for (User user : list) {
System.out.println(user.toString());
}*/

//增加
/*User user=new User();
user.setuName("lisi2");
user.setuPwd("123");
user.setPhone("13625421111");
user.setBirthday("2010-01-01");
user.setAddress("xxxx");
int num=session.getMapper(UserDao.class).add(user);
session.commit();
System.out.println(num);*/
//
/*List<User> list=session.getMapper(UserDao.class).selectUserMap();
for (User user : list) {
System.out.println(user.toString());
}*/

//帶引數
/*Map<String, String> map=new HashMap<String, String>();
map.put("uid", "10");
map.put("uName", "zhangsan1");
List<User> list=session.getMapper(UserDao.class).selectMap(map);
for (User user : list) {
System.out.println(user.toString());

}*/


//多個引數
/*List<User> list=session.getMapper(UserDao.class).selectMore(1, "zhangsan1");
for (User user : list) {
System.out.println(user.toString());

}*/

//修改
/*User user=new User();
user.setUid(1);
user.setuName("wanger");
user.setuPwd("654321");
int count=session.getMapper(UserDao.class).updateUser(user);
System.out.println(count);
session.commit();*/

//分頁
List<User> list=session.getMapper(UserDao.class).selectPage(3, 5);
for (User user : list) {
System.out.println(user.toString());
}
}


}