MyBatis增删查改实战

迷南。 2021-07-24 17:22 632阅读 0赞

一 配置文件

1 db.properties

  1. driver=com.mysql.jdbc.Driver
  2. url=jdbc:mysql://127.0.0.1:3306/mybatis
  3. username=root
  4. password=123456

2 mybatis-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. <!-- XML 配置文件包含对 MyBatis 系统的核心设置 -->
  6. <configuration>
  7. <!-- 引入properties资源文件 -->
  8. <properties resource="db.properties"/>
  9. <!-- 指定 MyBatis 所用日志的具体实现 -->
  10. <settings>
  11. <setting name="logImpl" value="LOG4J"/>
  12. </settings>
  13. <!-- 设置别名 -->
  14. <typeAliases>
  15. <typeAlias alias="user" type="org.fkit.domain.User"/>
  16. </typeAliases>
  17. <!-- 环境配置,即连接的数据库。 -->
  18. <environments default="mysql">
  19. <environment id="mysql">
  20. <!-- 指定事务管理类型,type="JDBC"指直接简单使用了JDBC的提交和回滚设置 -->
  21. <transactionManager type="JDBC"/>
  22. <!-- dataSource指数据源配置,POOLED是JDBC连接对象的数据源连接池的实现。 -->
  23. <dataSource type="POOLED">
  24. <property name="driver" value="${driver}"/>
  25. <property name="url" value="${url}"/>
  26. <property name="username" value="${username}"/>
  27. <property name="password" value="${password}"/>
  28. </dataSource>
  29. </environment>
  30. </environments>
  31. <!-- mappers告诉了MyBatis去哪里找持久化类的映射文件 -->
  32. <mappers>
  33. <mapper resource="org/fkit/mapper/UserMapper.xml"/>
  34. </mappers>
  35. </configuration>

3 log4j.xml

  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <!DOCTYPE log4j:configuration SYSTEM "log4j.dtd">
  3. <log4j:configuration xmlns:log4j="http://jakarta.apache.org/log4j/">
  4. <appender name="STDOUT" class="org.apache.log4j.ConsoleAppender">
  5. <layout class="org.apache.log4j.PatternLayout">
  6. <param name="ConversionPattern" value="%5p [%t] %m%n" />
  7. </layout>
  8. </appender>
  9. <logger name="org.fkit.mapper.UserMapper">
  10. <level value="DEBUG" />
  11. </logger>
  12. <root>
  13. <level value="ERROR" />
  14. <appender-ref ref="STDOUT" />
  15. </root>
  16. </log4j:configuration>

二 领域模型

  1. package org.fkit.domain;
  2. import java.io.Serializable;
  3. /**
  4. *
  5. * CREATE TABLE `tb_user` (
  6. `id` INT(11) NOT NULL AUTO_INCREMENT,
  7. `name` VARCHAR(18) DEFAULT NULL,
  8. `sex` CHAR(2) DEFAULT NULL,
  9. `age` INT(11) DEFAULT NULL,
  10. PRIMARY KEY (`id`)
  11. )
  12. */
  13. public class User implements Serializable{
  14. private static final long serialVersionUID = 1L;
  15. private Integer id;
  16. private String name;
  17. private String sex;
  18. private Integer age;
  19. public User() {
  20. super();
  21. // TODO Auto-generated constructor stub
  22. }
  23. public User( String name, String sex, Integer age) {
  24. super();
  25. this.name = name;
  26. this.sex = sex;
  27. this.age = age;
  28. }
  29. public Integer getId() {
  30. return id;
  31. }
  32. public void setId(Integer id) {
  33. this.id = id;
  34. }
  35. public String getName() {
  36. return name;
  37. }
  38. public void setName(String name) {
  39. this.name = name;
  40. }
  41. public String getSex() {
  42. return sex;
  43. }
  44. public void setSex(String sex) {
  45. this.sex = sex;
  46. }
  47. public Integer getAge() {
  48. return age;
  49. }
  50. public void setAge(Integer age) {
  51. this.age = age;
  52. }
  53. @Override
  54. public String toString() {
  55. return "User [id=" + id + ", name=" + name + ", sex=" + sex + ", age="
  56. + age + "]";
  57. }
  58. }

三 构造会话工厂

  1. package org.fkit.factory;
  2. import java.io.InputStream;
  3. import org.apache.ibatis.io.Resources;
  4. import org.apache.ibatis.session.SqlSession;
  5. import org.apache.ibatis.session.SqlSessionFactory;
  6. import org.apache.ibatis.session.SqlSessionFactoryBuilder;
  7. public class FKSqlSessionFactory {
  8. private static SqlSessionFactory sqlSessionFactory = null;
  9. // 初始化创建SqlSessionFactory对象
  10. static{
  11. try (// 读取mybatis-config.xml文件
  12. InputStream is = Resources.getResourceAsStream("mybatis-config.xml");
  13. ){
  14. sqlSessionFactory = new SqlSessionFactoryBuilder()
  15. .build(is);
  16. } catch (Exception e) {
  17. e.printStackTrace();
  18. }
  19. }
  20. // 获取SqlSession对象的静态方法
  21. public static SqlSession getSqlSession(){
  22. return sqlSessionFactory.openSession();
  23. }
  24. // 获取SqlSessionFactory的静态方法
  25. public static SqlSessionFactory getSqlSessionFactory() {
  26. return sqlSessionFactory;
  27. }
  28. }

四 mapper文件

  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
  3. "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
  4. <!-- namespace指用户自定义的命名空间。 -->
  5. <mapper namespace="org.fkit.mapper.UserMapper">
  6. <!-- insert操,
  7. parameterType="user"表示该插入语句需要一个user对象作为参数
  8. useGeneratedKeys="true"表示使用自动增长的主键 -->
  9. <insert id="saveUser" parameterType="user"
  10. useGeneratedKeys="true" keyProperty="id">
  11. INSERT INTO TB_USER(name,sex,age)
  12. VALUES(#{name},#{sex},#{age})
  13. </insert>
  14. <!-- select操作
  15. parameterType="int"表示该查询语句需要一个int类型的参数
  16. resultType="user"表示返回的是一个user对象 -->
  17. <select id="selectUser" parameterType="int" resultType="user">
  18. SELECT * FROM TB_USER WHERE id = #{id}
  19. </select>
  20. <!-- update操作
  21. parameterType="user"表示该更新语句需要一个user对象作为参数-->
  22. <update id="modifyUser" parameterType="user">
  23. UPDATE TB_USER
  24. SET name = #{name},sex = #{sex},age = #{age}
  25. WHERE id = #{id}
  26. </update>
  27. <!-- delete操作 parameterType="int"表示该查询语句需要一个int类型的参数-->
  28. <delete id="removeUser" parameterType="int">
  29. DELETE FROM TB_USER WHERE id = #{id}
  30. </delete>
  31. </mapper>

五 测试

1 增

  1. package org.fkit.test;
  2. import org.apache.ibatis.session.SqlSession;
  3. import org.fkit.domain.User;
  4. import org.fkit.factory.FKSqlSessionFactory;
  5. public class InsertTest {
  6. public static void main(String[] args) {
  7. // 定义SqlSession变量
  8. SqlSession sqlSession = null;
  9. try {
  10. // 创建SqlSession实例
  11. sqlSession = FKSqlSessionFactory.getSqlSession();
  12. // 创建User对象
  13. User user = new User("jack", "男", 22);
  14. // 插入数据
  15. sqlSession.insert("org.fkit.mapper.UserMapper.saveUser", user);
  16. // 提交事务
  17. sqlSession.commit();
  18. } catch (Exception e) {
  19. // 回滚事务
  20. sqlSession.rollback();
  21. e.printStackTrace();
  22. }finally {
  23. // 关闭SqlSession
  24. if(sqlSession != null)
  25. sqlSession.close();
  26. }
  27. }
  28. }

2 查

  1. package org.fkit.test;
  2. import org.apache.ibatis.session.SqlSession;
  3. import org.fkit.domain.User;
  4. import org.fkit.factory.FKSqlSessionFactory;
  5. public class SelectTest {
  6. public static void main(String[] args) {
  7. // 定义SqlSession变量
  8. SqlSession sqlSession = null;
  9. try {
  10. // 创建SqlSession实例
  11. sqlSession = FKSqlSessionFactory.getSqlSession();
  12. // 根据id查询User对象
  13. User user = sqlSession.selectOne("org.fkit.mapper.UserMapper.selectUser",1);
  14. System.out.println(user);
  15. // 提交事务
  16. sqlSession.commit();
  17. } catch (Exception e) {
  18. // 回滚事务
  19. sqlSession.rollback();
  20. e.printStackTrace();
  21. }finally {
  22. // 关闭SqlSession
  23. if(sqlSession != null)
  24. sqlSession.close();
  25. }
  26. }
  27. }

3 改

  1. package org.fkit.test;
  2. import org.apache.ibatis.session.SqlSession;
  3. import org.fkit.domain.User;
  4. import org.fkit.factory.FKSqlSessionFactory;
  5. public class UpadeTest {
  6. public static void main(String[] args) {
  7. // 定义SqlSession变量
  8. SqlSession sqlSession = null;
  9. try {
  10. // 创建SqlSession实例
  11. sqlSession = FKSqlSessionFactory.getSqlSession();
  12. // 根据id查询User对象
  13. User user = sqlSession.selectOne("org.fkit.mapper.UserMapper.selectUser",1);
  14. // 修改User对象的属性值
  15. user.setName("tom");
  16. user.setAge(25);
  17. // 修改User对象
  18. sqlSession.update("org.fkit.mapper.UserMapper.modifyUser", user);
  19. // 提交事务
  20. sqlSession.commit();
  21. } catch (Exception e) {
  22. // 回滚事务
  23. sqlSession.rollback();
  24. e.printStackTrace();
  25. }finally {
  26. // 关闭SqlSession
  27. if(sqlSession != null)
  28. sqlSession.close();
  29. }
  30. }
  31. }

4 删

  1. package org.fkit.test;
  2. import org.apache.ibatis.session.SqlSession;
  3. import org.fkit.factory.FKSqlSessionFactory;
  4. public class DeleteTest {
  5. public static void main(String[] args) {
  6. // 定义SqlSession变量
  7. SqlSession sqlSession = null;
  8. try {
  9. // 创建SqlSession实例
  10. sqlSession = FKSqlSessionFactory.getSqlSession();
  11. // 删除id为1的User对象
  12. sqlSession.delete("org.fkit.mapper.UserMapper.removeUser", 1);
  13. // 提交事务
  14. sqlSession.commit();
  15. } catch (Exception e) {
  16. // 回滚事务
  17. sqlSession.rollback();
  18. e.printStackTrace();
  19. }finally {
  20. // 关闭SqlSession
  21. if(sqlSession != null)
  22. sqlSession.close();
  23. }
  24. }
  25. }

六 测试

1 增

watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2NoZW5ncWl1bWluZw_size_16_color_FFFFFF_t_70

2 查

watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2NoZW5ncWl1bWluZw_size_16_color_FFFFFF_t_70 1

3 改

watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2NoZW5ncWl1bWluZw_size_16_color_FFFFFF_t_70 2

4 删

watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2NoZW5ncWl1bWluZw_size_16_color_FFFFFF_t_70 3

发表评论

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

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

相关阅读

    相关 SQL增删——实战

            这次在机房重构中,配合SQLHelper,SQL语句中的增删改查都用到了。翻看第一次机房时候的代码,发现,当时用到的语句只有一个查询,增删改的功能就是用查询语句