MyBatis 基于Mapper的增删改查示例(Spring IOC注入)
代码:
#数据模型层
package com.sunline.entity;
import java.io.Serializable;
public class User implements Serializable{
private Integer user_id;
private String user_name;
private String user_password;
private String user_kind;
private Double user_balance;
private String user_status;
public Integer getUser_id() {
return user_id;
}
public void setUser_id(Integer user_id) {
this.user_id = user_id;
}
public String getUser_name() {
return user_name;
}
public void setUser_name(String user_name) {
this.user_name = user_name;
}
public String getUser_password() {
return user_password;
}
public void setUser_password(String user_password) {
this.user_password = user_password;
}
public String getUser_kind() {
return user_kind;
}
public void setUser_kind(String user_kind) {
this.user_kind = user_kind;
}
public Double getUser_balance() {
return user_balance;
}
public void setUser_balance(Double user_balance) {
this.user_balance = user_balance;
}
public String getUser_status() {
return user_status;
}
public void setUser_status(String user_status) {
this.user_status = user_status;
}
@Override
public String toString() {
return "User [user_id=" + user_id + ", user_name=" + user_name + ", user_password=" + user_password + ", user_kind="
+ user_kind + ", user_balance=" + user_balance + ", user_status=" + user_status + "]";
}
}
#数据访问层
@数据操作Mapper映射文件
<?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指用户自定义的命名空间。 -->
<mapper namespace="com.sunline.dao.UserMapper">
<resultMap id="userResultMap" type="com.sunline.entity.User">
<id property="id" column="user_id" />
<result property="user_name" column="user_name"/>
<result property="user_password" column="user_password"/>
<result property="user_kind" column="user_kind"/>
<result property="user_balance" column="user_balance"/>
<result property="user_status" column="user_status"/>
</resultMap>
<!-- insert操作,parameterType="user"表示该插入语句需要一个user对象作为参数,useGeneratedKeys="true"表示使用自动增长的主键 -->
<insert id="saveUser" parameterType="com.sunline.entity.User" useGeneratedKeys="true" keyProperty="user_id">
insert into user(user_name,user_password,user_kind,user_balance,user_status)
values(#{user_name},#{user_password},#{user_kind},#{user_balance},#{user_status})
</insert>
<!-- delete操作 parameterType="int"表示该查询语句需要一个int类型的参数-->
<delete id="DeleteUser" parameterType="int">
delete from user where user_id = #{user_id}
</delete>
<!-- update操作 ,parameterType="user"表示该更新语句需要一个user对象作为参数-->
<update id="UpdateUser" parameterType="com.sunline.entity.User">
update user set user_name = #{user_name},user_kind = #{user_kind} where user_id = #{user_id}
</update>
<!-- select操作,parameterType="int"表示该查询语句需要一个int类型的参数,resultType="user"表示返回的是一个user对象 -->
<select id="selectUser" parameterType="int" resultType="com.sunline.entity.User">
select * from user where user_id = #{user_id}
</select>
<!-- select操作 ,resultType="map"表示返回的是一个Map对象,使用列名做key,值做value -->
<select id="findAll" resultType="com.sunline.entity.User">
select * from user
</select>
<select id="selectByIdLike" resultType="com.sunline.entity.User">
select * from user where user_status = '正常'
<!-- 可选条件,如果传进来的参数有user_id属性,则加上user_id查询条件 -->
<if test="user_id != null">
and user_id = #{user_id}
</if>
</select>
<select id="selectUserLikeName" resultType="com.sunline.entity.User">
<bind name="pattern" value="'%' + _parameter.getUser_name() + '%'" />
select * from user where user_name like #{pattern}
</select>
<!-- set -->
<update id="updateUser" parameterType="com.sunline.entity.User">
update user
<set>
<if test="user_name != null">user_name=#{user_name},</if>
<if test="user_password != null">user_password=#{user_password},</if>
<if test="user_kind != null">user_kind=#{user_kind},</if>
<if test="user_balance != null">user_balance=#{user_balance},</if>
<if test="user_status != null">user_status=#{user_status},</if>
</set>
where user_id=#{user_id}
</update>
<!-- foreach -->
<select id="selectUserIn" resultType="com.sunline.entity.User">
select * from user where user_id in
<!-- 下面的格式是固定的 -->
<foreach item="item" index="index" collection="list" open="(" separator="," close=")">
#{item}
</foreach>
</select>
<!-- choose(when、otherwise) -->
<select id="SelectUserChoose" parameterType="hashmap" resultType="com.sunline.entity.User">
select * from user where user_status = '正常'
<!-- 如果传入了user_id,就根据id查询,没有传入id就根据loginname和password查询,否则查询sex等于男的数据 -->
<choose>
<when test="user_id != null">
and user_id = #{user_id}
</when>
<when test="user_name != null and user_password != null">
and user_name = #{user_name} and user_password = #{user_password}
</when>
<otherwise>
and user_kind = '客户'
</otherwise>
</choose>
</select>
</mapper>
@动态SQL生产接口
package com.sunline.dao;
import java.util.HashMap;
import java.util.List;
import com.sunline.entity.User;
public interface UserMapper {
//注意这里的接口命名必须和UserMapper.xml中的id定义完全一致
List<User> selectByIdLike(HashMap<String, Object> params);
List<User> selectUserLikeName(User user);
void updateUser(User user);
List<User> selectUserIn(List<Integer> id);//根据传入的id查询员工
List<User> SelectUserChoose(HashMap<String, Object> param);
}
@数据访问类
package com.sunline.dao;
import java.util.HashMap;
import java.util.List;
import javax.annotation.Resource;
import org.mybatis.spring.SqlSessionTemplate;
import org.springframework.stereotype.Repository;
import com.sunline.entity.User;
@Repository(value="userDao")
public class UserDao {
/*
* 基于注解实现
*/
@Resource
public SqlSessionTemplate session;
public void setSqlSession(SqlSessionTemplate sqlSession) {
this.session = sqlSession;
}
/*
* 添加用户
*/
public void SaveUser(User user){
session.insert("com.sunline.dao.UserMapper.saveUser",user);
}
/*
* 删除指定id的用户
*/
public void DeleteUser(int user_id){
session.delete("com.sunline.dao.UserMapper.DeleteUser", user_id);
}
/*
* 修改用户的某些字段
*/
public void ModifyUser(User user){
session.update("com.sunline.dao.UserMapper.UpdateUser", user);
}
/*
* 查询指定id的用户
*/
public User findById(int user_id){
return session.selectOne("com.sunline.dao.UserMapper.selectUser", user_id);
}
/*
* 查询所有用户
*/
public List<User> findAll(){
return session.selectList("com.sunline.dao.UserMapper.findAll");
}
/*
* 动态SQL条件查询一
*/
public List<User> findByIdLike(HashMap<String, Object> param){
UserMapper um = session.getMapper(UserMapper.class);
List<User> list=um.selectByIdLike(param);
return list;
}
/*
* 动态SQL条件查询二:根据传入的参数进行模糊查询
*/
public List<User> selectUserLikeName(User user){
UserMapper um = session.getMapper(UserMapper.class);
List<User> list=um.selectUserLikeName(user);
return list;
}
/*
* 动态SQL条件查询三:动态更新员工
*/
public void UpdateUser(User user){
UserMapper um = session.getMapper(UserMapper.class);
um.updateUser(user);
}
/*
* 动态SQL条件查询四:foreach集合遍历查询
*/
public List<User> SelectUserIn(List<Integer> ids){
UserMapper um = session.getMapper(UserMapper.class);
List<User> list = um.selectUserIn(ids);
return list;
}
/*
* 动态SQL条件查询五:choose条件查询
*/
public List<User> SelectUserChoose(HashMap<String, Object> param){
UserMapper um = session.getMapper(UserMapper.class);
List<User> list = um.SelectUserChoose(param);
return list;
}
}
#业务逻辑层
package com.sunline.biz;
import java.util.HashMap;
import java.util.List;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.stereotype.Service;
import com.sunline.dao.UserDao;
import com.sunline.entity.User;
@Service(value="userBiz")
public class UserBiz {
@Autowired
@Qualifier("userDao") //使用@Qualifier注解来说明使用哪一个实现类
UserDao userDao;
/*
* 添加用户
*/
public void SaveUser(User user){
userDao.SaveUser(user);
}
/*
* 删除指定id的用户
*/
public void DeleteUser(int user_id){
userDao.DeleteUser(user_id);
}
/*
* 修改用户的某些字段
*/
public void ModifyUser(User user){
userDao.ModifyUser(user);
}
/*
* 查询指定id的用户
*/
public User findById(int user_id){
return userDao.findById(user_id);
}
/*
* 查询所有用户
*/
public List<User> findAll(){
return userDao.findAll();
}
/*
* 动态SQL条件查询一
*/
public List<User> findByIdLike(HashMap<String, Object> param){
return userDao.findByIdLike(param);
}
/*
* 动态SQL条件查询二:根据传入的参数进行模糊查询
*/
public List<User> selectUserLikeName(User user){
return userDao.selectUserLikeName(user);
}
/*
* 动态SQL条件查询三:动态更新员工
*/
public void UpdateUser(User user){
userDao.UpdateUser(user);
}
/*
* 动态SQL条件查询四:foreach集合遍历查询
*/
public List<User> SelectUserIn(List<Integer> ids){
return userDao.SelectUserIn(ids);
}
/*
* 动态SQL条件查询五:choose条件查询
*/
public List<User> SelectUserChoose(HashMap<String, Object> param){
return userDao.SelectUserChoose(param);
}
}
#测试类
package com.sunline.test;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
import com.sunline.biz.UserBiz;
import com.sunline.entity.User;
public class Test {
public static void main(String[] args) {
// TODO Auto-generated method stub
ApplicationContext ctx = new ClassPathXmlApplicationContext("applicationContext.xml");
UserBiz userBiz = (UserBiz) ctx.getBean("userBiz");
/*
* 1.添加用户
*/
User user = new User();
user.setUser_name("张宇");
user.setUser_password("123456");
user.setUser_kind("客户");
user.setUser_status("正常");
user.setUser_balance(6500.0);
userBiz.SaveUser(user);
/*
* 2.删除指定id的用户
*/
userBiz.DeleteUser(11);
/*
* 3.修改用户的某些字段
*/
User user = new User();
user.setUser_id(10);
user.setUser_name("张恒宇");
user.setUser_kind("客户");
userBiz.ModifyUser(user);
/*
* 4.查询指定id的用户
*/
User user = userBiz.findById(10);
System.out.println("用户信息为: "+user.getUser_name()+" "+user.getUser_password()
+" "+user.getUser_status()+" "+user.getUser_kind()+" "+user.getUser_balance());
/*
* 5.查询所有用户
*/
List<User> list = userBiz.findAll();
for(User user : list){
System.out.println("用户信息为: "+user.getUser_name()+" "+user.getUser_password()
+" "+user.getUser_status()+" "+user.getUser_kind()+" "+user.getUser_balance());
}
/*
* 6.动态SQL条件查询一
*/
HashMap<String, Object> params=new HashMap<String,Object>(); // 创建一个HashMap存储参数
params.put("user_id", 10);
List<User> list = userBiz.findByIdLike(params);
for(User user : list){
System.out.println("用户信息为: "+user.getUser_name()+" "+user.getUser_password()
+" "+user.getUser_status()+" "+user.getUser_kind()+" "+user.getUser_balance());
}
/*
* 7.动态SQL条件查询二:根据传入的参数进行模糊查询
*/
User user = new User();
user.setUser_name("张");
List<User> list = userBiz.selectUserLikeName(user);
for(User us : list){
System.out.println("用户信息为: "+us.getUser_name()+" "+us.getUser_password()
+" "+us.getUser_status()+" "+us.getUser_kind()+" "+us.getUser_balance());
}
/*
* 8.修改用户信息
*/
User user = new User();
user.setUser_id(10);
user.setUser_name("张丰宇");
user.setUser_balance(12000.0);
userBiz.UpdateUser(user);
/*
* 9.foreach集合遍历查询
*/
List<Integer> ids = new ArrayList<Integer>();
ids.add(8);
ids.add(9);
List<User> list = userBiz.SelectUserIn(ids);
for(User us : list){
System.out.println("用户信息为: "+us.getUser_name()+" "+us.getUser_password()
+" "+us.getUser_status()+" "+us.getUser_kind()+" "+us.getUser_balance());
}
/*
* 10.choose条件查询
*/
HashMap<String, Object> param = new HashMap<String, Object>();
param.put("user_id", 8);
param.put("user_name", "张宇");
param.put("user_password", "123456");
List<User> list = userBiz.SelectUserChoose(param);
for(User us : list){
System.out.println("用户信息为: "+us.getUser_name()+" "+us.getUser_password()
+" "+us.getUser_status()+" "+us.getUser_kind()+" "+us.getUser_balance());
}
}
}
还没有评论,来说两句吧...