MyBatis 实现 增删改查

我不是女神ヾ 2023-06-16 07:59 92阅读 0赞

今天来实现 mybatis 最基本的增删改查操作:

依旧是 三步:1.config.xml 配置文件 2. mapper.xml 映射配置文件 3.测试

首先1.config.xml 配置文件

  1. <?xml version="1.0" encoding="UTF-8" ?>
  2. <!DOCTYPE configuration
  3. PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
  4. "http://mybatis.org/dtd/mybatis-3-config.dtd">
  5. <configuration>
  6. <!--开发环境 (自己的计算机) -->
  7. <environments default="development">
  8. <environment id="development">
  9. <transactionManager type="JDBC" />
  10. <!--POOLED:使用连接池 避免打开和关闭数据库的耗时 -->
  11. <dataSource type="POOLED">
  12. <!-- 配置数据库信息 -->
  13. <property name="driver" value="oracle.jdbc.OracleDriver" />
  14. <property name="url" value="jdbc:oracle:thin:@localhost:1521:orcl" />
  15. <property name="username" value="sys as sysdba" />
  16. <property name="password" value="123456" />
  17. </dataSource>
  18. </environment>
  19. </environments>
  20. <mappers>
  21. <!-- 加载映射 文件 -->
  22. <mapper resource="org/cjr/entity/PersonMapper.xml" />
  23. </mappers>
  24. </configuration>

这个配置文件是固定写法,大部分Mybatis的配置都是这样的。

接下来写映射文件:

  1. <?xml version="1.0" encoding="UTF-8" ?>
  2. <!DOCTYPE mapper
  3. PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
  4. "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
  5. <mapper namespace="org.cjr.entity.PersonMapper">
  6. <select id="queryPersonById" resultType="org.cjr.entity.Person" parameterType="int">
  7. select * from Person where id = #{id}
  8. </select>
  9. <select id="queryAll" resultType="org.cjr.entity.Person">
  10. select * from Person
  11. </select>
  12. <insert id="addPerson" parameterType="org.cjr.entity.Person">
  13. insert into person values(#{id},#{name},#{age})
  14. </insert>
  15. <delete id="deletePerson" parameterType="int">
  16. delete from person where id= #{id}
  17. </delete>
  18. <update id="updatePerson" parameterType="org.cjr.entity.Person">
  19. update person set name=#{name},age=#{age} where id=#{id}
  20. </update>
  21. </mapper>

该映射文件 存放了Sql语句 以及 返回值类型等 信息。

最后我们写测试类

  1. package org.cjr.entity;
  2. import java.io.IOException;
  3. import java.io.Reader;
  4. import java.util.List;
  5. import org.apache.ibatis.io.Resources;
  6. import org.apache.ibatis.session.SqlSession;
  7. import org.apache.ibatis.session.SqlSessionFactory;
  8. import org.apache.ibatis.session.SqlSessionFactoryBuilder;
  9. public class testMyBatis {
  10. public static void queryStudentBySno() throws IOException {
  11. //加载配置文件
  12. Reader reader = Resources.getResourceAsReader("config.xml");
  13. //qlSessionFactory
  14. SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(reader);
  15. //session- 相当于connection
  16. SqlSession session = sqlSessionFactory.openSession();
  17. //映射文件中的namespace + id
  18. Person person = session.selectOne("org.cjr.entity.PersonMapper.queryPersonById",1);
  19. // Person person = (Person) session.selectOne("org.cjr.entity.PersonMapper.queryAll");
  20. System.err.println(person);
  21. session.close();
  22. }
  23. //查询
  24. public static void queryAllStudent() throws IOException {
  25. //加载配置文件
  26. Reader reader = Resources.getResourceAsReader("config.xml");
  27. //qlSessionFactory
  28. SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(reader);
  29. //session- 相当于connection
  30. SqlSession session = sqlSessionFactory.openSession();
  31. //映射文件中的namespace + id
  32. List<Person> persons = session.selectList("org.cjr.entity.PersonMapper.queryAll");
  33. System.err.println(persons);
  34. session.close();
  35. }
  36. //增加
  37. public static void addStudent() throws IOException {
  38. //加载配置文件
  39. Reader reader = Resources.getResourceAsReader("config.xml");
  40. //qlSessionFactory
  41. SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(reader);
  42. //session- 相当于connection
  43. SqlSession session = sqlSessionFactory.openSession();
  44. //映射文件中的namespace + id
  45. Person person = new Person(3,"ww",30);
  46. int count = session.insert("org.cjr.entity.PersonMapper.addPerson",person);
  47. session.commit();//提交事务
  48. System.out.println("增加"+count+"个学生");
  49. session.close();
  50. }
  51. //删除
  52. public static void deleteStudent() throws IOException {
  53. //加载配置文件
  54. Reader reader = Resources.getResourceAsReader("config.xml");
  55. //qlSessionFactory
  56. SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(reader);
  57. //session- 相当于connection
  58. SqlSession session = sqlSessionFactory.openSession();
  59. //映射文件中的namespace + id
  60. int count = session.delete("org.cjr.entity.PersonMapper.deletePerson",3);
  61. session.commit();//提交事务
  62. System.out.println("删除"+count+"个学生");
  63. session.close();
  64. }
  65. //改
  66. public static void updateStudent() throws IOException {
  67. //加载配置文件
  68. Reader reader = Resources.getResourceAsReader("config.xml");
  69. //qlSessionFactory
  70. SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(reader);
  71. //session- 相当于connection
  72. SqlSession session = sqlSessionFactory.openSession();
  73. //映射文件中的namespace + id
  74. Person person = new Person();
  75. person.setId(2);
  76. person.setName("zzz");
  77. person.setAge(99);
  78. int count = session.update("org.cjr.entity.PersonMapper.updatePerson",person);
  79. session.commit();//提交事务
  80. System.out.println("修改"+count+"个学生");
  81. session.close();
  82. }
  83. public static void main(String[] args) throws IOException {
  84. //deleteStudent();
  85. //updateStudent();
  86. //addStudent();
  87. queryAllStudent();
  88. }
  89. }

这些方法中 都是通过session对象来 调用 增删改查的方法,相比较 传统的Jdbc方式,mybatis解决了 Sql与代码之间的耦合问题。

发表评论

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

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

相关阅读