当前位置:   article > 正文

MyBatis笔记:增删改功能_tblemployeedao tblemployeedao = new tblemployeedao

tblemployeedao tblemployeedao = new tblemployeedao();有错

MyBatis实现增删改

通过mybatis实现增删改功能,依然是通过接口绑定sql映射文件

如有疑问参考之前的文章:https://blog.csdn.net/qq_36949176/article/category/8464528

Employee类

  1. package com.yorkmass.mybatis.bean;
  2. import org.apache.ibatis.type.Alias;
  3. @Alias("emp")
  4. public class Employee {
  5. private Integer id;
  6. private String lastName;
  7. private String email;
  8. private String gender;
  9. public Employee(){
  10. super();
  11. }
  12. public Employee(Integer id, String lastName, String email, String gender) {
  13. super();
  14. this.id = id;
  15. this.lastName = lastName;
  16. this.email = email;
  17. this.gender = gender;
  18. }
  19. public Integer getId() {
  20. return id;
  21. }
  22. public void setId(Integer id) {
  23. this.id = id;
  24. }
  25. public String getLastName() {
  26. return lastName;
  27. }
  28. public void setLastName(String lastName) {
  29. this.lastName = lastName;
  30. }
  31. public String getEmail() {
  32. return email;
  33. }
  34. public void setEmail(String email) {
  35. this.email = email;
  36. }
  37. public String getGender() {
  38. return gender;
  39. }
  40. public void setGender(String gender) {
  41. this.gender = gender;
  42. }
  43. @Override
  44. public String toString() {
  45. return "Employee [id=" + id + ", lastName=" + lastName + ", email=" + email + ", gender=" + gender + "]";
  46. }
  47. }

接口文件

  1. package com.yorkmass.mybatis.dao;
  2. import com.yorkmass.mybatis.bean.Employee;
  3. public interface EmployeeMapper {
  4. public Employee getEmpById(Integer id);
  5. public void addEmp(Employee employee);
  6. //定义返回值类型
  7. //public Long addEmp(Employee employee);
  8. public boolean updateEmp(Employee employee);
  9. // public void updateEmp(Employee employee);
  10. public void deleteEmpById(Integer id);
  11. }

sql映射文件

  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="com.yorkmass.mybatis.dao.EmployeeMapper">
  6. <!--
  7. namespace:名称空间;指定为接口的全类名
  8. id:唯一标识
  9. resultType:返回值类型
  10. #{id}:从传递过来的参数中取出id值
  11. public Employee getEmpById(Integer id);
  12. -->
  13. <!-- 如果有两个同样的方法,不带数据库标识的会被舍弃,默认加载不带标识和带标识的,如果两个不同方法,一个带标识,一个不带标识,则都加载 -->
  14. <select id="getEmpById" resultType="emp" >
  15. select * from tbl_employee where id = #{id}
  16. </select>
  17. <select id="getEmpById" resultType="emp" databaseId="mysql">
  18. select * from tbl_employee where id = #{id}
  19. </select>
  20. <select id="getEmpById" resultType="emp" databaseId="oracle">
  21. select * from tbl_employee where id = #{id}
  22. </select>
  23. <!-- public void addEmp(Employee employee);-->
  24. <!-- parameterType:可以省略, -->
  25. <insert id="addEmp" parameterType="com.yorkmass.mybatis.bean.Employee">
  26. insert into tbl_employee(last_name,email,gender)
  27. value(#{lastName},#{email},#{gender})
  28. </insert>
  29. <!-- public void updateEmp(Employee employee);-->
  30. <update id="updateEmp">
  31. update tbl_employee
  32. set last_Name=#{lastName},email=#{email},gender=#{gender}
  33. where id=#{id}
  34. </update>
  35. <!-- public void deleteEmpById(Integer id);-->
  36. <delete id="deleteEmpById">
  37. delete from tbl_employee where id=#{id}
  38. </delete>
  39. </mapper>

测试文件

其中test03方法包含增删改

  1. package com.yorkmass.mybatis.test;
  2. import java.io.IOException;
  3. import java.io.InputStream;
  4. import org.apache.ibatis.io.Resources;
  5. import org.apache.ibatis.session.SqlSession;
  6. import org.apache.ibatis.session.SqlSessionFactory;
  7. import org.apache.ibatis.session.SqlSessionFactoryBuilder;
  8. import org.junit.Test;
  9. import com.yorkmass.mybatis.bean.Employee;
  10. import com.yorkmass.mybatis.dao.EmployeeMapper;
  11. import com.yorkmass.mybatis.dao.EmployeeMapperAnnotation;
  12. public class MyBatisTest {
  13. public SqlSessionFactory getSqlSessionFactory() throws IOException{
  14. String resource="mybatis-config.xml";
  15. InputStream inputStream=Resources.getResourceAsStream(resource);
  16. return new SqlSessionFactoryBuilder().build(inputStream);
  17. }
  18. /**
  19. * 1、根据xml配置文件(全局配置文件)创建一个SqlSessionFactory对象
  20. * 有数据源一些运行环境信息
  21. * 2、sql映射文件;配置了每一个sql,以及sql的封装规则等。
  22. * 3、将sql映射文件注册在全局配置文件中
  23. * 4、写代码:
  24. * 1)、根据全局配置文件得到sqlSessionFatory;
  25. * 2)、使用sqlSession工厂,获取到sqlSession对象使用他来执行增删改查
  26. * 一个sqlSession就是代表和数据库的一次会话,用完关闭
  27. * 3)、使用sql的唯一标识来告诉MyBatis执行哪个sql,sql都是保存在映射文件中的
  28. * @throws IOException
  29. */
  30. // @Test
  31. // public void test() throws IOException {
  32. // String resource = "mybatis-config.xml";
  33. // InputStream inputStream = Resources.getResourceAsStream(resource);
  34. // SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
  35. // //获取sqlSession实例,能直接执行已经映射的sql语句
  36. // //sql的唯一标识:statement Unique identifier matching the statement to use.
  37. // //执行sql要用的参数:parameter A parameter object to pass to the statement.
  38. // SqlSession openSession = sqlSessionFactory.openSession();
  39. // try {
  40. // Employee employee=openSession.selectOne("com.yorkmass.mybatis.EmployeeMapper.selectEmp", 1);
  41. // System.out.println(employee);
  42. // } finally {
  43. // openSession.close();
  44. // }
  45. // }
  46. @Test
  47. public void test01() throws IOException{
  48. //1、获取sqlSessionFactory对象
  49. SqlSessionFactory sqlSessionFactory= getSqlSessionFactory();
  50. //2、获取sqlSession对象
  51. SqlSession openSession =sqlSessionFactory.openSession();
  52. try{
  53. //3、获取接口的实现类对象
  54. //会为接口自动的创建一个代理对象,代理对象去执行增删改查方法
  55. EmployeeMapper mapper=openSession.getMapper(EmployeeMapper.class);
  56. Employee employee=mapper.getEmpById(2);
  57. System.out.println(mapper.getClass());
  58. System.out.println(employee);
  59. }finally {
  60. openSession.close();
  61. }
  62. }
  63. @Test
  64. public void test02() throws IOException{
  65. SqlSessionFactory sqlSessionFactory=getSqlSessionFactory();
  66. SqlSession openSession=sqlSessionFactory.openSession();
  67. try {
  68. EmployeeMapperAnnotation mapper=openSession.getMapper(EmployeeMapperAnnotation.class);
  69. Employee empById=mapper.getEmpById(1);
  70. System.out.println(empById);
  71. }finally{
  72. openSession.close();
  73. }
  74. }
  75. /**
  76. * 测试增删改
  77. * 1、mybatis允许增删改直接定义以下类型的返回值(你如果想返回true or false之类的)
  78. * Integer、Long(把影响多少行封装成Integer\Long)、Boolean(影响0行以上true,0行false)
  79. * 2、我们需要手动提交数据openSession.commit();
  80. * @throws IOException
  81. */
  82. @Test
  83. public void test03() throws IOException{
  84. SqlSessionFactory sqlSessionFactory=getSqlSessionFactory();
  85. //获取到的SqlSession不会自动提交数据,还一个带参数的openSession会自动提交数据
  86. SqlSession openSession=sqlSessionFactory.openSession();
  87. try{
  88. EmployeeMapper mapper=openSession.getMapper(EmployeeMapper.class);
  89. //测试添加
  90. // Employee employee=new Employee(null,"jerry","15032506306@163.com","1");
  91. // mapper.addEmp(employee);
  92. //测试修改、更新
  93. Employee employee=new Employee(1,"yy","17679169423@163.com","1");
  94. boolean updateEmp=mapper.updateEmp(employee);
  95. System.out.println(updateEmp);
  96. //测试删除
  97. // mapper.deleteEmpById(2);
  98. //2.手动提交数据
  99. openSession.commit();
  100. }finally {
  101. openSession.close();
  102. }
  103. }
  104. }

运行结果(目前):

  1. DEBUG 01-25 17:07:23,905 ==> Preparing: select * from tbl_employee where id = ? (BaseJdbcLogger.java:145)
  2. DEBUG 01-25 17:07:23,939 ==> Parameters: 2(Integer) (BaseJdbcLogger.java:145)
  3. DEBUG 01-25 17:07:23,950 <== Total: 0 (BaseJdbcLogger.java:145)
  4. class com.sun.proxy.$Proxy7
  5. null
  6. DEBUG 01-25 17:07:23,981 ==> Preparing: select * from tbl_employee where id=? (BaseJdbcLogger.java:145)
  7. DEBUG 01-25 17:07:23,981 ==> Parameters: 1(Integer) (BaseJdbcLogger.java:145)
  8. DEBUG 01-25 17:07:23,984 <== Total: 1 (BaseJdbcLogger.java:145)
  9. Employee [id=1, lastName=yy, email=17679169423@163.com, gender=1]
  10. DEBUG 01-25 17:07:24,021 ==> Preparing: update tbl_employee set last_Name=?,email=?,gender=? where id=? (BaseJdbcLogger.java:145)
  11. DEBUG 01-25 17:07:24,022 ==> Parameters: yy(String), 17679169423@163.com(String), 1(String), 1(Integer) (BaseJdbcLogger.java:145)
  12. DEBUG 01-25 17:07:24,022 <== Updates: 1 (BaseJdbcLogger.java:145)
  13. true

 

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/运维做开发/article/detail/949380
推荐阅读
相关标签
  

闽ICP备14008679号