赞
踩
通过mybatis实现增删改功能,依然是通过接口绑定sql映射文件
如有疑问参考之前的文章:https://blog.csdn.net/qq_36949176/article/category/8464528
Employee类
- package com.yorkmass.mybatis.bean;
-
- import org.apache.ibatis.type.Alias;
-
- @Alias("emp")
- public class Employee {
- private Integer id;
- private String lastName;
- private String email;
- private String gender;
- public Employee(){
- super();
- }
-
- public Employee(Integer id, String lastName, String email, String gender) {
- super();
- this.id = id;
- this.lastName = lastName;
- this.email = email;
- this.gender = gender;
- }
-
- public Integer getId() {
- return id;
- }
- public void setId(Integer id) {
- this.id = id;
- }
- public String getLastName() {
- return lastName;
- }
- public void setLastName(String lastName) {
- this.lastName = lastName;
- }
- public String getEmail() {
- return email;
- }
- public void setEmail(String email) {
- this.email = email;
- }
- public String getGender() {
- return gender;
- }
- public void setGender(String gender) {
- this.gender = gender;
- }
- @Override
- public String toString() {
- return "Employee [id=" + id + ", lastName=" + lastName + ", email=" + email + ", gender=" + gender + "]";
- }
-
- }

接口文件
- package com.yorkmass.mybatis.dao;
-
- import com.yorkmass.mybatis.bean.Employee;
-
- public interface EmployeeMapper {
-
- public Employee getEmpById(Integer id);
- public void addEmp(Employee employee);
- //定义返回值类型
- //public Long addEmp(Employee employee);
- public boolean updateEmp(Employee employee);
- // public void updateEmp(Employee employee);
- public void deleteEmpById(Integer id);
- }
sql映射文件
- <?xml version="1.0" encoding="UTF-8" ?>
- <!DOCTYPE mapper
- PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
- "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
- <mapper namespace="com.yorkmass.mybatis.dao.EmployeeMapper">
- <!--
- namespace:名称空间;指定为接口的全类名
- id:唯一标识
- resultType:返回值类型
- #{id}:从传递过来的参数中取出id值
- public Employee getEmpById(Integer id);
- -->
- <!-- 如果有两个同样的方法,不带数据库标识的会被舍弃,默认加载不带标识和带标识的,如果两个不同方法,一个带标识,一个不带标识,则都加载 -->
- <select id="getEmpById" resultType="emp" >
- select * from tbl_employee where id = #{id}
- </select>
- <select id="getEmpById" resultType="emp" databaseId="mysql">
- select * from tbl_employee where id = #{id}
- </select>
- <select id="getEmpById" resultType="emp" databaseId="oracle">
- select * from tbl_employee where id = #{id}
- </select>
- <!-- public void addEmp(Employee employee);-->
- <!-- parameterType:可以省略, -->
- <insert id="addEmp" parameterType="com.yorkmass.mybatis.bean.Employee">
- insert into tbl_employee(last_name,email,gender)
- value(#{lastName},#{email},#{gender})
- </insert>
- <!-- public void updateEmp(Employee employee);-->
- <update id="updateEmp">
- update tbl_employee
- set last_Name=#{lastName},email=#{email},gender=#{gender}
- where id=#{id}
- </update>
- <!-- public void deleteEmpById(Integer id);-->
- <delete id="deleteEmpById">
- delete from tbl_employee where id=#{id}
- </delete>
-
- </mapper>

测试文件
其中test03方法包含增删改
- package com.yorkmass.mybatis.test;
-
- import java.io.IOException;
- import java.io.InputStream;
-
- import org.apache.ibatis.io.Resources;
- import org.apache.ibatis.session.SqlSession;
- import org.apache.ibatis.session.SqlSessionFactory;
- import org.apache.ibatis.session.SqlSessionFactoryBuilder;
- import org.junit.Test;
-
- import com.yorkmass.mybatis.bean.Employee;
- import com.yorkmass.mybatis.dao.EmployeeMapper;
- import com.yorkmass.mybatis.dao.EmployeeMapperAnnotation;
-
- public class MyBatisTest {
-
- public SqlSessionFactory getSqlSessionFactory() throws IOException{
- String resource="mybatis-config.xml";
- InputStream inputStream=Resources.getResourceAsStream(resource);
- return new SqlSessionFactoryBuilder().build(inputStream);
- }
- /**
- * 1、根据xml配置文件(全局配置文件)创建一个SqlSessionFactory对象
- * 有数据源一些运行环境信息
- * 2、sql映射文件;配置了每一个sql,以及sql的封装规则等。
- * 3、将sql映射文件注册在全局配置文件中
- * 4、写代码:
- * 1)、根据全局配置文件得到sqlSessionFatory;
- * 2)、使用sqlSession工厂,获取到sqlSession对象使用他来执行增删改查
- * 一个sqlSession就是代表和数据库的一次会话,用完关闭
- * 3)、使用sql的唯一标识来告诉MyBatis执行哪个sql,sql都是保存在映射文件中的
- * @throws IOException
- */
- // @Test
- // public void test() throws IOException {
- // String resource = "mybatis-config.xml";
- // InputStream inputStream = Resources.getResourceAsStream(resource);
- // SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
- // //获取sqlSession实例,能直接执行已经映射的sql语句
- // //sql的唯一标识:statement Unique identifier matching the statement to use.
- // //执行sql要用的参数:parameter A parameter object to pass to the statement.
- // SqlSession openSession = sqlSessionFactory.openSession();
- // try {
- // Employee employee=openSession.selectOne("com.yorkmass.mybatis.EmployeeMapper.selectEmp", 1);
- // System.out.println(employee);
- // } finally {
- // openSession.close();
- // }
- // }
-
- @Test
- public void test01() throws IOException{
- //1、获取sqlSessionFactory对象
- SqlSessionFactory sqlSessionFactory= getSqlSessionFactory();
-
- //2、获取sqlSession对象
- SqlSession openSession =sqlSessionFactory.openSession();
-
- try{
- //3、获取接口的实现类对象
- //会为接口自动的创建一个代理对象,代理对象去执行增删改查方法
- EmployeeMapper mapper=openSession.getMapper(EmployeeMapper.class);
-
- Employee employee=mapper.getEmpById(2);
- System.out.println(mapper.getClass());
-
- System.out.println(employee);
- }finally {
- openSession.close();
- }
- }
- @Test
- public void test02() throws IOException{
- SqlSessionFactory sqlSessionFactory=getSqlSessionFactory();
- SqlSession openSession=sqlSessionFactory.openSession();
- try {
- EmployeeMapperAnnotation mapper=openSession.getMapper(EmployeeMapperAnnotation.class);
- Employee empById=mapper.getEmpById(1);
- System.out.println(empById);
- }finally{
- openSession.close();
- }
- }
- /**
- * 测试增删改
- * 1、mybatis允许增删改直接定义以下类型的返回值(你如果想返回true or false之类的)
- * Integer、Long(把影响多少行封装成Integer\Long)、Boolean(影响0行以上true,0行false)
- * 2、我们需要手动提交数据openSession.commit();
- * @throws IOException
- */
- @Test
- public void test03() throws IOException{
- SqlSessionFactory sqlSessionFactory=getSqlSessionFactory();
- //获取到的SqlSession不会自动提交数据,还一个带参数的openSession会自动提交数据
- SqlSession openSession=sqlSessionFactory.openSession();
- try{
- EmployeeMapper mapper=openSession.getMapper(EmployeeMapper.class);
- //测试添加
- // Employee employee=new Employee(null,"jerry","15032506306@163.com","1");
- // mapper.addEmp(employee);
- //测试修改、更新
- Employee employee=new Employee(1,"yy","17679169423@163.com","1");
- boolean updateEmp=mapper.updateEmp(employee);
- System.out.println(updateEmp);
- //测试删除
- // mapper.deleteEmpById(2);
- //2.手动提交数据
- openSession.commit();
-
- }finally {
- openSession.close();
- }
- }
- }

运行结果(目前):
- DEBUG 01-25 17:07:23,905 ==> Preparing: select * from tbl_employee where id = ? (BaseJdbcLogger.java:145)
- DEBUG 01-25 17:07:23,939 ==> Parameters: 2(Integer) (BaseJdbcLogger.java:145)
- DEBUG 01-25 17:07:23,950 <== Total: 0 (BaseJdbcLogger.java:145)
- class com.sun.proxy.$Proxy7
- null
- DEBUG 01-25 17:07:23,981 ==> Preparing: select * from tbl_employee where id=? (BaseJdbcLogger.java:145)
- DEBUG 01-25 17:07:23,981 ==> Parameters: 1(Integer) (BaseJdbcLogger.java:145)
- DEBUG 01-25 17:07:23,984 <== Total: 1 (BaseJdbcLogger.java:145)
- Employee [id=1, lastName=yy, email=17679169423@163.com, gender=1]
- DEBUG 01-25 17:07:24,021 ==> Preparing: update tbl_employee set last_Name=?,email=?,gender=? where id=? (BaseJdbcLogger.java:145)
- DEBUG 01-25 17:07:24,022 ==> Parameters: yy(String), 17679169423@163.com(String), 1(String), 1(Integer) (BaseJdbcLogger.java:145)
- DEBUG 01-25 17:07:24,022 <== Updates: 1 (BaseJdbcLogger.java:145)
- true
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。