MyBatis实现简单的增删改查

曾经终败给现在 2022-04-17 05:50 446阅读 0赞

第一步:导入mybatis-3.2.3.jar和mysql-connector-java-5.1.25-bin.jar这两个包
第二步:建立好相对应的类,如下图(注:本人的包建立并不规范)
在这里插入图片描述
第三步:编写Config.xml配置文件,代码如下:

  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <!DOCTYPE configuration PUBLIC "mybatis-3-config" "mybatis-3-config.dtd" >
  3. <configuration>
  4. <typeAliases>
  5. <!-- 单个别名定义:
  6. type:类型路径,alias:别名 -->
  7. <typeAlias type="com.zhiyuan.Bean.User" alias="User"/>
  8. <!-- 批量定义别名:
  9. name:指定包名,mybatis自动扫描包中的类,自动定义别名,别名就是类
  10. 名(首字母大小写都可以) -->
  11. <!-- <package name="" /> -->
  12. </typeAliases>
  13. <environments default="development">
  14. <environment id="development">
  15. <transactionManager type="JDBC">
  16. </transactionManager>
  17. <dataSource type="POOLED">
  18. <property name="driver" value=
  19. "com.mysql.jdbc.Driver"/>
  20. <property name="url" value=
  21. "jdbc:mysql://localhost:3306/数据库名"/>
  22. <property name="username" value="用户名"/>
  23. <property name="password" value="密码"/>
  24. </dataSource>
  25. </environment>
  26. </environments>
  27. <mappers>
  28. <!-- 通过resource方法一次加载一个映射文件 -->
  29. <mapper resource="com/zhiyuan/Dao/Mapper.xml"/>
  30. <!-- 通过mapper接口加载单个映射文件
  31. 遵循一些规范:需要将mapper接口类名和mapper.xml映射文件名
  32. 称保持一致,且在同一个目录中
  33. 以上规范的前提是:使用的是mapper代理方法
  34. -->
  35. <!-- <mapper class="com.zhiyuan.Dao.IUslect" /> -->
  36. <!-- 批量加载mapper
  37. 指定mapper接口的包名,mybatis自动扫描包下边所有mapper接
  38. 口进行加载
  39. 遵循一些规范:需要将mapper接口类名和mapper.xml映射文件名
  40. 称保持一致,且在同一个目录中
  41. 以上规范的前提是:使用的是mapper代理方法
  42. -->
  43. <!-- <package name="com.zhiyuan.Dao" /> -->
  44. </mappers>
  45. </configuration>

第四步:编写Mapper.xml配置文件,代码如下:

  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <!DOCTYPE mapper PUBLIC "mybatis-3-mapper" "mybatis-3-mapper.dtd" >
  3. <!--
  4. Mapper代理开发规范:
  5. 1、在Mapper.xml中namespace值等于Mapper接口地址
  6. (这里的IUslect接口就是Mapper接口)
  7. 2、Mapper接口中的方法和Mapper.xml中statement的id一致
  8. 3、Mapper接口中的方法输入参数类型和Mapper.xml中statement的
  9. parameterType指定的类型一致
  10. 4、Mapper接口中的方法返回值类型和Mapper.xml中statement的
  11. resultType指定类型一致
  12. -->
  13. <mapper namespace="com.zhiyuan.Dao.IUslect">
  14. <!-- 增 -->
  15. <insert id="into" parameterType="User">
  16. insert into users (id,name,age) values(#{id},#{name},#{age})
  17. </insert>
  18. <!-- 删 -->
  19. <delete id="desc" parameterType="int">
  20. delete from users where id = #{id}
  21. </delete>
  22. <!-- 改 -->
  23. <update id="gai" parameterType="User">
  24. update users set name = #{name},age = #{age} where id =#{id}
  25. </update>
  26. <!-- 查 -->
  27. <!-- resultType(pojo类型):
  28. 使用resultType进行输出映射,只有查询出来的列名和pojo中的属性名一
  29. 致,改列才可以映射成功
  30. 如果查询出来的列名和pojo中的属性名全部不一致,没有创建pojo对象
  31. 只要查询出来的列名和pojo中的属性名有一个一致,就会创建pojo对象
  32. -->
  33. <select id="select" parameterType="int" resultType="User">
  34. select * from users where id = #{id}
  35. </select>
  36. <!-- 用户综合查询
  37. #{userCustom.name}:取出pojo包装对象中用户的名称
  38. ${userCustom.age}:取出pojo包装对象中年龄的值
  39. -->
  40. <select id="findUserList" parameterType=
  41. "com.zhiyuan.Bean.UserQueryVo"
  42. resultType="com.zhiyuan.Bean.UserCustom">
  43. select * from users where users.name = #{userCustom.name}
  44. and users.age like '%${userCustom.age}%'
  45. </select>
  46. </mapper>

第五步:编写ICslect.java接口类,代码如下

  1. package com.zhiyuan.Dao;
  2. import java.util.List;
  3. import com.zhiyuan.Bean.User;
  4. import com.zhiyuan.Bean.UserCustom;
  5. import com.zhiyuan.Bean.UserQueryVo;
  6. public interface IUslect {
  7. public int into(User user);//增
  8. public int desc(int id);//删
  9. public int gai(User user);//改
  10. public User select(int id);//查
  11. public List<UserCustom> findUserList(UserQueryVo userQueryVo);
  12. }

第六步:编写User.java实体类,代码如下:

  1. package com.zhiyuan.Bean;
  2. public class User {
  3. private int id;
  4. private String name;
  5. private int age;
  6. public int getId() {
  7. return id;
  8. }
  9. public void setId(int id) {
  10. this.id = id;
  11. }
  12. public String getName() {
  13. return name;
  14. }
  15. public void setName(String name) {
  16. this.name = name;
  17. }
  18. public int getAge() {
  19. return age;
  20. }
  21. public void setAge(int age) {
  22. this.age = age;
  23. }
  24. }

第七步:编写UserCustom.java子类,代码如下

  1. package com.zhiyuan.Bean;
  2. public class UserCustom extends User{
  3. //可扩展用户的信息
  4. }

第八步:编写UserQueryVo.java类,代码如下

  1. package com.zhiyuan.Bean;
  2. /**
  3. * 包装类型
  4. * @author Administrator
  5. *
  6. */
  7. public class UserQueryVo {
  8. private UserCustom userCustom;
  9. public UserCustom getUserCustom() {
  10. return userCustom;
  11. }
  12. public void setUserCustom(UserCustom userCustom) {
  13. this.userCustom = userCustom;
  14. }
  15. }

第九步:编写CheShiLei.java测试类,代码如下

  1. package com.zhiyuan.Bean;
  2. import java.io.*;
  3. import java.util.List;
  4. import org.apache.ibatis.io.*;
  5. import org.apache.ibatis.session.*;
  6. import com.zhiyuan.Dao.IUslect;
  7. public class CheShiLei {
  8. public static void main(String[] args) throws IOException {
  9. //得到文件配置流
  10. Reader reader = Resources.getResourceAsReader("Config.xml");
  11. //创建回话工厂,传入mybatis的配置文件信息
  12. SqlSessionFactory sql = new SqlSessionFactoryBuilder().build(reader);
  13. //通过工厂得到SqlSession
  14. SqlSession session = sql.openSession();
  15. IUslect iuslect = session.getMapper(IUslect.class);//MyBatis自动生成Mapper代理对象
  16. // User user = new User();//增
  17. // user.setId(4);
  18. // user.setName("李四");
  19. // user.setAge(18);
  20. // int a = iuslect.into(user);
  21. // session.commit();//提交事务
  22. // session.close();//释放资源
  23. // System.out.println(a);
  24. // int user = iuslect.desc(3);//删
  25. // session.commit();//提交事务
  26. // session.close();//释放资源
  27. // System.out.println(user);
  28. // User user = new User();//改
  29. // user.setName("赵六");
  30. // user.setAge(25);
  31. // user.setId(3);
  32. // int a = iuslect.gai(user);
  33. // session.commit();//提交事务
  34. // session.close();//释放资源
  35. // System.out.println(a);
  36. // User user = iuslect.select(1);//查
  37. // session.close();//释放资源
  38. // System.out.println(user.getId()+user.getName()+user.getAge());
  39. //创建包装对象,设置查询条件
  40. UserQueryVo userQueryVo = new UserQueryVo();
  41. UserCustom userCustom = new UserCustom();
  42. userCustom.setName("李四");
  43. userCustom.setAge(18);
  44. userQueryVo.setUserCustom(userCustom);
  45. //调用iuslect的方法
  46. List<UserCustom> list = iuslect.findUserList(userQueryVo);
  47. System.out.println(list);
  48. }
  49. }

发表评论

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

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

相关阅读

    相关 MyBatis简单增删

    selcet 在我们之前说过的权限系统中,我们需要使用到查询功能来查询用户、角色和权限等数据。在使用纯粹的JDBC时,需要写查询语句,并且对结果集进行手动处理,将结果集映射到