MyBatis 基于Mapper的增删改查示例(Spring IOC注入)

红太狼 2022-06-06 03:29 162阅读 0赞

代码:

#数据模型层

  1. package com.sunline.entity;
  2. import java.io.Serializable;
  3. public class User implements Serializable{
  4. private Integer user_id;
  5. private String user_name;
  6. private String user_password;
  7. private String user_kind;
  8. private Double user_balance;
  9. private String user_status;
  10. public Integer getUser_id() {
  11. return user_id;
  12. }
  13. public void setUser_id(Integer user_id) {
  14. this.user_id = user_id;
  15. }
  16. public String getUser_name() {
  17. return user_name;
  18. }
  19. public void setUser_name(String user_name) {
  20. this.user_name = user_name;
  21. }
  22. public String getUser_password() {
  23. return user_password;
  24. }
  25. public void setUser_password(String user_password) {
  26. this.user_password = user_password;
  27. }
  28. public String getUser_kind() {
  29. return user_kind;
  30. }
  31. public void setUser_kind(String user_kind) {
  32. this.user_kind = user_kind;
  33. }
  34. public Double getUser_balance() {
  35. return user_balance;
  36. }
  37. public void setUser_balance(Double user_balance) {
  38. this.user_balance = user_balance;
  39. }
  40. public String getUser_status() {
  41. return user_status;
  42. }
  43. public void setUser_status(String user_status) {
  44. this.user_status = user_status;
  45. }
  46. @Override
  47. public String toString() {
  48. return "User [user_id=" + user_id + ", user_name=" + user_name + ", user_password=" + user_password + ", user_kind="
  49. + user_kind + ", user_balance=" + user_balance + ", user_status=" + user_status + "]";
  50. }
  51. }

#数据访问层

@数据操作Mapper映射文件

  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
  3. <!-- namespace指用户自定义的命名空间。 -->
  4. <mapper namespace="com.sunline.dao.UserMapper">
  5. <resultMap id="userResultMap" type="com.sunline.entity.User">
  6. <id property="id" column="user_id" />
  7. <result property="user_name" column="user_name"/>
  8. <result property="user_password" column="user_password"/>
  9. <result property="user_kind" column="user_kind"/>
  10. <result property="user_balance" column="user_balance"/>
  11. <result property="user_status" column="user_status"/>
  12. </resultMap>
  13. <!-- insert操作,parameterType="user"表示该插入语句需要一个user对象作为参数,useGeneratedKeys="true"表示使用自动增长的主键 -->
  14. <insert id="saveUser" parameterType="com.sunline.entity.User" useGeneratedKeys="true" keyProperty="user_id">
  15. insert into user(user_name,user_password,user_kind,user_balance,user_status)
  16. values(#{user_name},#{user_password},#{user_kind},#{user_balance},#{user_status})
  17. </insert>
  18. <!-- delete操作 parameterType="int"表示该查询语句需要一个int类型的参数-->
  19. <delete id="DeleteUser" parameterType="int">
  20. delete from user where user_id = #{user_id}
  21. </delete>
  22. <!-- update操作 ,parameterType="user"表示该更新语句需要一个user对象作为参数-->
  23. <update id="UpdateUser" parameterType="com.sunline.entity.User">
  24. update user set user_name = #{user_name},user_kind = #{user_kind} where user_id = #{user_id}
  25. </update>
  26. <!-- select操作,parameterType="int"表示该查询语句需要一个int类型的参数,resultType="user"表示返回的是一个user对象 -->
  27. <select id="selectUser" parameterType="int" resultType="com.sunline.entity.User">
  28. select * from user where user_id = #{user_id}
  29. </select>
  30. <!-- select操作 ,resultType="map"表示返回的是一个Map对象,使用列名做key,值做value -->
  31. <select id="findAll" resultType="com.sunline.entity.User">
  32. select * from user
  33. </select>
  34. <select id="selectByIdLike" resultType="com.sunline.entity.User">
  35. select * from user where user_status = '正常'
  36. <!-- 可选条件,如果传进来的参数有user_id属性,则加上user_id查询条件 -->
  37. <if test="user_id != null">
  38. and user_id = #{user_id}
  39. </if>
  40. </select>
  41. <select id="selectUserLikeName" resultType="com.sunline.entity.User">
  42. <bind name="pattern" value="'%' + _parameter.getUser_name() + '%'" />
  43. select * from user where user_name like #{pattern}
  44. </select>
  45. <!-- set -->
  46. <update id="updateUser" parameterType="com.sunline.entity.User">
  47. update user
  48. <set>
  49. <if test="user_name != null">user_name=#{user_name},</if>
  50. <if test="user_password != null">user_password=#{user_password},</if>
  51. <if test="user_kind != null">user_kind=#{user_kind},</if>
  52. <if test="user_balance != null">user_balance=#{user_balance},</if>
  53. <if test="user_status != null">user_status=#{user_status},</if>
  54. </set>
  55. where user_id=#{user_id}
  56. </update>
  57. <!-- foreach -->
  58. <select id="selectUserIn" resultType="com.sunline.entity.User">
  59. select * from user where user_id in
  60. <!-- 下面的格式是固定的 -->
  61. <foreach item="item" index="index" collection="list" open="(" separator="," close=")">
  62. #{item}
  63. </foreach>
  64. </select>
  65. <!-- choose(when、otherwise) -->
  66. <select id="SelectUserChoose" parameterType="hashmap" resultType="com.sunline.entity.User">
  67. select * from user where user_status = '正常'
  68. <!-- 如果传入了user_id,就根据id查询,没有传入id就根据loginname和password查询,否则查询sex等于男的数据 -->
  69. <choose>
  70. <when test="user_id != null">
  71. and user_id = #{user_id}
  72. </when>
  73. <when test="user_name != null and user_password != null">
  74. and user_name = #{user_name} and user_password = #{user_password}
  75. </when>
  76. <otherwise>
  77. and user_kind = '客户'
  78. </otherwise>
  79. </choose>
  80. </select>
  81. </mapper>

@动态SQL生产接口

  1. package com.sunline.dao;
  2. import java.util.HashMap;
  3. import java.util.List;
  4. import com.sunline.entity.User;
  5. public interface UserMapper {
  6. //注意这里的接口命名必须和UserMapper.xml中的id定义完全一致
  7. List<User> selectByIdLike(HashMap<String, Object> params);
  8. List<User> selectUserLikeName(User user);
  9. void updateUser(User user);
  10. List<User> selectUserIn(List<Integer> id);//根据传入的id查询员工
  11. List<User> SelectUserChoose(HashMap<String, Object> param);
  12. }

@数据访问类

  1. package com.sunline.dao;
  2. import java.util.HashMap;
  3. import java.util.List;
  4. import javax.annotation.Resource;
  5. import org.mybatis.spring.SqlSessionTemplate;
  6. import org.springframework.stereotype.Repository;
  7. import com.sunline.entity.User;
  8. @Repository(value="userDao")
  9. public class UserDao {
  10. /*
  11. * 基于注解实现
  12. */
  13. @Resource
  14. public SqlSessionTemplate session;
  15. public void setSqlSession(SqlSessionTemplate sqlSession) {
  16. this.session = sqlSession;
  17. }
  18. /*
  19. * 添加用户
  20. */
  21. public void SaveUser(User user){
  22. session.insert("com.sunline.dao.UserMapper.saveUser",user);
  23. }
  24. /*
  25. * 删除指定id的用户
  26. */
  27. public void DeleteUser(int user_id){
  28. session.delete("com.sunline.dao.UserMapper.DeleteUser", user_id);
  29. }
  30. /*
  31. * 修改用户的某些字段
  32. */
  33. public void ModifyUser(User user){
  34. session.update("com.sunline.dao.UserMapper.UpdateUser", user);
  35. }
  36. /*
  37. * 查询指定id的用户
  38. */
  39. public User findById(int user_id){
  40. return session.selectOne("com.sunline.dao.UserMapper.selectUser", user_id);
  41. }
  42. /*
  43. * 查询所有用户
  44. */
  45. public List<User> findAll(){
  46. return session.selectList("com.sunline.dao.UserMapper.findAll");
  47. }
  48. /*
  49. * 动态SQL条件查询一
  50. */
  51. public List<User> findByIdLike(HashMap<String, Object> param){
  52. UserMapper um = session.getMapper(UserMapper.class);
  53. List<User> list=um.selectByIdLike(param);
  54. return list;
  55. }
  56. /*
  57. * 动态SQL条件查询二:根据传入的参数进行模糊查询
  58. */
  59. public List<User> selectUserLikeName(User user){
  60. UserMapper um = session.getMapper(UserMapper.class);
  61. List<User> list=um.selectUserLikeName(user);
  62. return list;
  63. }
  64. /*
  65. * 动态SQL条件查询三:动态更新员工
  66. */
  67. public void UpdateUser(User user){
  68. UserMapper um = session.getMapper(UserMapper.class);
  69. um.updateUser(user);
  70. }
  71. /*
  72. * 动态SQL条件查询四:foreach集合遍历查询
  73. */
  74. public List<User> SelectUserIn(List<Integer> ids){
  75. UserMapper um = session.getMapper(UserMapper.class);
  76. List<User> list = um.selectUserIn(ids);
  77. return list;
  78. }
  79. /*
  80. * 动态SQL条件查询五:choose条件查询
  81. */
  82. public List<User> SelectUserChoose(HashMap<String, Object> param){
  83. UserMapper um = session.getMapper(UserMapper.class);
  84. List<User> list = um.SelectUserChoose(param);
  85. return list;
  86. }
  87. }

#业务逻辑层

  1. package com.sunline.biz;
  2. import java.util.HashMap;
  3. import java.util.List;
  4. import org.springframework.beans.factory.annotation.Autowired;
  5. import org.springframework.beans.factory.annotation.Qualifier;
  6. import org.springframework.stereotype.Service;
  7. import com.sunline.dao.UserDao;
  8. import com.sunline.entity.User;
  9. @Service(value="userBiz")
  10. public class UserBiz {
  11. @Autowired
  12. @Qualifier("userDao") //使用@Qualifier注解来说明使用哪一个实现类
  13. UserDao userDao;
  14. /*
  15. * 添加用户
  16. */
  17. public void SaveUser(User user){
  18. userDao.SaveUser(user);
  19. }
  20. /*
  21. * 删除指定id的用户
  22. */
  23. public void DeleteUser(int user_id){
  24. userDao.DeleteUser(user_id);
  25. }
  26. /*
  27. * 修改用户的某些字段
  28. */
  29. public void ModifyUser(User user){
  30. userDao.ModifyUser(user);
  31. }
  32. /*
  33. * 查询指定id的用户
  34. */
  35. public User findById(int user_id){
  36. return userDao.findById(user_id);
  37. }
  38. /*
  39. * 查询所有用户
  40. */
  41. public List<User> findAll(){
  42. return userDao.findAll();
  43. }
  44. /*
  45. * 动态SQL条件查询一
  46. */
  47. public List<User> findByIdLike(HashMap<String, Object> param){
  48. return userDao.findByIdLike(param);
  49. }
  50. /*
  51. * 动态SQL条件查询二:根据传入的参数进行模糊查询
  52. */
  53. public List<User> selectUserLikeName(User user){
  54. return userDao.selectUserLikeName(user);
  55. }
  56. /*
  57. * 动态SQL条件查询三:动态更新员工
  58. */
  59. public void UpdateUser(User user){
  60. userDao.UpdateUser(user);
  61. }
  62. /*
  63. * 动态SQL条件查询四:foreach集合遍历查询
  64. */
  65. public List<User> SelectUserIn(List<Integer> ids){
  66. return userDao.SelectUserIn(ids);
  67. }
  68. /*
  69. * 动态SQL条件查询五:choose条件查询
  70. */
  71. public List<User> SelectUserChoose(HashMap<String, Object> param){
  72. return userDao.SelectUserChoose(param);
  73. }
  74. }

#测试类

  1. package com.sunline.test;
  2. import java.util.ArrayList;
  3. import java.util.HashMap;
  4. import java.util.List;
  5. import org.springframework.context.ApplicationContext;
  6. import org.springframework.context.support.ClassPathXmlApplicationContext;
  7. import com.sunline.biz.UserBiz;
  8. import com.sunline.entity.User;
  9. public class Test {
  10. public static void main(String[] args) {
  11. // TODO Auto-generated method stub
  12. ApplicationContext ctx = new ClassPathXmlApplicationContext("applicationContext.xml");
  13. UserBiz userBiz = (UserBiz) ctx.getBean("userBiz");
  14. /*
  15. * 1.添加用户
  16. */
  17. User user = new User();
  18. user.setUser_name("张宇");
  19. user.setUser_password("123456");
  20. user.setUser_kind("客户");
  21. user.setUser_status("正常");
  22. user.setUser_balance(6500.0);
  23. userBiz.SaveUser(user);
  24. /*
  25. * 2.删除指定id的用户
  26. */
  27. userBiz.DeleteUser(11);
  28. /*
  29. * 3.修改用户的某些字段
  30. */
  31. User user = new User();
  32. user.setUser_id(10);
  33. user.setUser_name("张恒宇");
  34. user.setUser_kind("客户");
  35. userBiz.ModifyUser(user);
  36. /*
  37. * 4.查询指定id的用户
  38. */
  39. User user = userBiz.findById(10);
  40. System.out.println("用户信息为: "+user.getUser_name()+" "+user.getUser_password()
  41. +" "+user.getUser_status()+" "+user.getUser_kind()+" "+user.getUser_balance());
  42. /*
  43. * 5.查询所有用户
  44. */
  45. List<User> list = userBiz.findAll();
  46. for(User user : list){
  47. System.out.println("用户信息为: "+user.getUser_name()+" "+user.getUser_password()
  48. +" "+user.getUser_status()+" "+user.getUser_kind()+" "+user.getUser_balance());
  49. }
  50. /*
  51. * 6.动态SQL条件查询一
  52. */
  53. HashMap<String, Object> params=new HashMap<String,Object>(); // 创建一个HashMap存储参数
  54. params.put("user_id", 10);
  55. List<User> list = userBiz.findByIdLike(params);
  56. for(User user : list){
  57. System.out.println("用户信息为: "+user.getUser_name()+" "+user.getUser_password()
  58. +" "+user.getUser_status()+" "+user.getUser_kind()+" "+user.getUser_balance());
  59. }
  60. /*
  61. * 7.动态SQL条件查询二:根据传入的参数进行模糊查询
  62. */
  63. User user = new User();
  64. user.setUser_name("张");
  65. List<User> list = userBiz.selectUserLikeName(user);
  66. for(User us : list){
  67. System.out.println("用户信息为: "+us.getUser_name()+" "+us.getUser_password()
  68. +" "+us.getUser_status()+" "+us.getUser_kind()+" "+us.getUser_balance());
  69. }
  70. /*
  71. * 8.修改用户信息
  72. */
  73. User user = new User();
  74. user.setUser_id(10);
  75. user.setUser_name("张丰宇");
  76. user.setUser_balance(12000.0);
  77. userBiz.UpdateUser(user);
  78. /*
  79. * 9.foreach集合遍历查询
  80. */
  81. List<Integer> ids = new ArrayList<Integer>();
  82. ids.add(8);
  83. ids.add(9);
  84. List<User> list = userBiz.SelectUserIn(ids);
  85. for(User us : list){
  86. System.out.println("用户信息为: "+us.getUser_name()+" "+us.getUser_password()
  87. +" "+us.getUser_status()+" "+us.getUser_kind()+" "+us.getUser_balance());
  88. }
  89. /*
  90. * 10.choose条件查询
  91. */
  92. HashMap<String, Object> param = new HashMap<String, Object>();
  93. param.put("user_id", 8);
  94. param.put("user_name", "张宇");
  95. param.put("user_password", "123456");
  96. List<User> list = userBiz.SelectUserChoose(param);
  97. for(User us : list){
  98. System.out.println("用户信息为: "+us.getUser_name()+" "+us.getUser_password()
  99. +" "+us.getUser_status()+" "+us.getUser_kind()+" "+us.getUser_balance());
  100. }
  101. }
  102. }

发表评论

表情:
评论列表 (有 0 条评论,162人围观)

还没有评论,来说两句吧...

相关阅读