SSM--MyBatis对数据库进行增删改查

r囧r小猫 2022-02-01 13:27 385阅读 0赞

一、先附上项目层级目录:

watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3pfeGluZG9uZw_size_16_color_FFFFFF_t_70

二、主配置文件:sqlMapConfig.xml

配置mapper时一定要搞清它和你的mapper.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. <!-- 在集成spring 是不用 -->
  7. <environments default="development">
  8. <environment id="development">
  9. <!-- 使用jdbc的事务 -->
  10. <transactionManager type="JDBC"/>
  11. <!-- 使用连接池 连接数据库 -->
  12. <dataSource type="POOLED">
  13. <property name="driver" value="com.mysql.jdbc.Driver"/>
  14. <property name="url" value="jdbc:mysql://localhost:3306/skh?characterEncoding=utf-8"/>
  15. <property name="username" value="root"/>
  16. <property name="password" value="usbw"/>
  17. </dataSource>
  18. </environment>
  19. </environments>
  20. <mappers>
  21. <mapper resource="mapper/UserMapper.xml"/>
  22. </mappers>
  23. </configuration>

三、UserMapper.xml

  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="UserMapper"><!-- 可能会有多个mapper配置文件 相当于给mapper配置文件另起一个名字 -->
  6. <!-- parameterType 为sql语句中的参数类型
  7. resultType 查询结果返回类型
  8. -->
  9. <select id="selectById" parameterType="int" resultType="cn.skh.bean.User">
  10. select * from qwe where id = #{id}
  11. </select>
  12. <select id="selectUserByName" parameterType="String" resultType="cn.skh.bean.User">
  13. <!-- 根据名字模糊查询用户 -->
  14. <!-- #{} 占位符 尽量选用#{}来解决问题 占位符接收的传值会自动加上双引号 所以不需要在另外加引号-->
  15. <!-- ${} 字符串拼接 or 1=1 王 -->
  16. <!-- 字符串拼接写法select * from qwe where name like '%${value}%' -->
  17. select * from qwe where name like "%"#{name}"%"
  18. <!-- 等价于select * from qwe where name like '%王%' 不过参数 王 不需要另加引号 只需给%加即可 -->
  19. </select>
  20. <insert id="insertUser" parameterType="cn.skh.bean.User">
  21. <!-- 占位符#{}中的内容要更具实体类中的变量名来写 #{id}等价于cn.skh.bean.User.id-->
  22. insert into qwe values(#{id},#{name},#{password},#{sex})
  23. </insert>
  24. <update id="updateUser" parameterType="cn.skh.bean.User">
  25. update qwe set name = #{name} where id = #{id}
  26. </update>
  27. <delete id="deleteUserById" parameterType="int">
  28. delete from qwe where id = #{id}
  29. </delete>
  30. </mapper>

三、JavaBean以及数据库表结构

  1. package cn.skh.bean;
  2. /**
  3. * 需要注意的地方 bean中的属性名称要和数据库中的属性名称相对性
  4. * 属性和数据库中字段的名称要一样 不能这个是name 那个是username
  5. * @author SKH
  6. *
  7. */
  8. public class User {
  9. private int id;
  10. private String name;
  11. private String password;
  12. private String sex;
  13. public int getId() {
  14. return id;
  15. }
  16. public void setId(int id) {
  17. this.id = id;
  18. }
  19. public String getName() {
  20. return name;
  21. }
  22. public void setName(String name) {
  23. this.name = name;
  24. }
  25. public String getPassword() {
  26. return password;
  27. }
  28. public void setPassword(String password) {
  29. this.password = password;
  30. }
  31. public String getSex() {
  32. return sex;
  33. }
  34. public void setSex(String sex) {
  35. this.sex = sex;
  36. }
  37. @Override
  38. public String toString() {
  39. return "User [id=" + id + ", username=" + name + ", password=" + password + ", sex=" + sex + "]";
  40. }
  41. }
  42. id int 11
  43. name varchar 255
  44. password varchar 255
  45. sex varchar 255

四、测试类

  1. package cn.skh.test;
  2. import java.io.IOException;
  3. import java.io.InputStream;
  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. import org.junit.Test;
  10. import cn.skh.bean.User;
  11. public class HelloMyBatis {
  12. //测试入门程序 通过id查询用户
  13. private static void test() throws IOException {
  14. //读取配置文件
  15. String resource = "sqlMapConfig.xml";
  16. InputStream in = Resources.getResourceAsStream(resource);
  17. //建造一个建造工厂的东东
  18. SqlSessionFactoryBuilder ssfb = new SqlSessionFactoryBuilder();
  19. //通过配置文件建造工厂
  20. SqlSessionFactory ssf = ssfb.build(in);
  21. //通过工厂生产商品
  22. SqlSession session = ssf.openSession();
  23. //使用商品 即操作数据库
  24. //参数1:要操作的sql语句 参数2:sql语句的参数
  25. //UserMapper.selectById . 之前为UserMapper配置文件的命名空间 之后为select的id属性值
  26. User u = session.selectOne("UserMapper.selectById",1);
  27. System.out.println(u);
  28. }
  29. //模糊查询
  30. private static void test2() throws IOException {
  31. //读取配置文件
  32. String resource = "sqlMapConfig.xml";
  33. InputStream in = Resources.getResourceAsStream(resource);
  34. //建造一个建造工厂的东东
  35. SqlSessionFactoryBuilder ssfb = new SqlSessionFactoryBuilder();
  36. //通过配置文件建造工厂
  37. SqlSessionFactory ssf = ssfb.build(in);
  38. //通过工厂生产商品
  39. SqlSession session = ssf.openSession();
  40. //使用商品 即操作数据库
  41. List<User> us = session.selectList("UserMapper.selectUserByName","逯");
  42. for(User u:us) {
  43. System.out.println(u);
  44. }
  45. }
  46. private static void test3() throws IOException {
  47. //读取配置文件
  48. String resource = "sqlMapConfig.xml";
  49. InputStream in = Resources.getResourceAsStream(resource);
  50. //建造一个建造工厂的东东
  51. SqlSessionFactoryBuilder ssfb = new SqlSessionFactoryBuilder();
  52. //通过配置文件建造工厂
  53. SqlSessionFactory ssf = ssfb.build(in);
  54. //通过工厂生产商品
  55. SqlSession session = ssf.openSession();
  56. //使用商品 即操作数据库
  57. User u = new User();
  58. u.setId(7);
  59. u.setName("mlk");
  60. u.setPassword("123456");
  61. u.setSex("女");
  62. session.insert("UserMapper.insertUser", u);
  63. session.commit();//提交事务才会生效
  64. }
  65. private static void test4() throws IOException {
  66. //读取配置文件
  67. String resource = "sqlMapConfig.xml";
  68. InputStream in = Resources.getResourceAsStream(resource);
  69. //建造一个建造工厂的东东
  70. SqlSessionFactoryBuilder ssfb = new SqlSessionFactoryBuilder();
  71. //通过配置文件建造工厂
  72. SqlSessionFactory ssf = ssfb.build(in);
  73. //通过工厂生产商品
  74. SqlSession session = ssf.openSession();
  75. //使用商品 即操作数据库
  76. User u = new User();
  77. u.setId(0);
  78. u.setName("zxx&SKh");
  79. session.update("UserMapper.updateUser", u);
  80. session.commit();//提交事务才会生效
  81. }
  82. private static void test5() throws IOException {
  83. //读取配置文件
  84. String resource = "sqlMapConfig.xml";
  85. InputStream in = Resources.getResourceAsStream(resource);
  86. //建造一个建造工厂的东东
  87. SqlSessionFactoryBuilder ssfb = new SqlSessionFactoryBuilder();
  88. //通过配置文件建造工厂
  89. SqlSessionFactory ssf = ssfb.build(in);
  90. //通过工厂生产商品
  91. SqlSession session = ssf.openSession();
  92. //使用商品 即操作数据库
  93. session.delete("UserMapper.deleteUserById", 7);
  94. session.commit();//提交事务才会生效
  95. }
  96. public static void main(String[] args) throws IOException {
  97. //test();//查询
  98. //test2();//查询
  99. //test3();//添加
  100. //test4();//修改
  101. //test5();//删除
  102. }
  103. }

五、最后附上一日志文件(不一定必须要放在你的项目里)

要注意此日志文件要与你的sqlConfig.xml处于同一及目录

  1. # Global logging configuration
  2. log4j.rootLogger=DEBUG, stdout
  3. # Console output...
  4. log4j.appender.stdout=org.apache.log4j.ConsoleAppender
  5. log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
  6. log4j.appender.stdout.layout.ConversionPattern=%5p [%t] - %m%n

发表评论

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

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

相关阅读