Java Mybatis实现

mybatis简介

在这里插入图片描述
在这里插入图片描述

mybatis学习网站

mybatis学习网站:https://mybatis.org/mybatis-3/zh/configuration.html

项目结构图

请添加图片描述

mybatis-config.xml

首先需要配置mybatis-config.xml 连接数据库和映射器:

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE configuration
  PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
  "http://mybatis.org/dtd/mybatis-3-config.dtd">
<configuration>
	<!-- <settings>
    	<setting name="" value=""/>
	</settings> -->
	
	<!-- 需要在environments的上方 -->
	<!-- <typeAliases>
		<![CDATA[	第一种取别名方法	 ]]>
	    <typeAlias type="com.test.entity.Student" alias="Student"/> <![CDATA[	可以取别名Student	 ]]>
	     
	     <![CDATA[	第二种取别名方法	 ]]>
	    <package name="com.test.entity"/> <![CDATA[	直接让Mybatis去扫描一个包,并将包下的所有类自动起别名(别名为首字母小写的类名)]]>
	</typeAliases> -->
	<typeAliases>
		<typeAlias type="com.test.entity.Student" alias="Student"/>
		<typeAlias type="com.test.entity.Teacher" alias="Teacher"/>
	</typeAliases>
  <environments default="development">
    <environment id="development">
      <transactionManager type="JDBC"/>
      <dataSource type="POOLED">
        <property name="driver" value="com.mysql.cj.jdbc.Driver"/>
        <property name="url" value="jdbc:mysql://localhost:3306/test"/>
        <property name="username" value="root"/>
        <property name="password" value="1234"/>
      </dataSource>
    </environment>
  </environments>
  <mappers>
  	<package name="com.test.mapper"/>
  </mappers>
</configuration>

更改远程仓库地址

建议配置一下IDEA自带的Maven插件远程仓库地址,我们打开IDEA的安装目录,找到安装根目录/plugins/maven/lib/maven3/conf文件夹,找到settings.xml文件,以记事本打开,找到mirros标签,添加以下内容:

<mirror>
      <id>nexus-aliyun</id>
      <mirrorOf>*</mirrorOf>
      <name>Nexus aliyun</name>
      <url>http://maven.aliyun.com/nexus/content/groups/public</url>
</mirror> 

这样,我们就将默认的远程仓库地址(国外),配置为国内的阿里云仓库地址了(依赖的下载速度就会快起来了)

数据库(test)表student、teacher、teach、users

student:
请添加图片描述
teacher:
请添加图片描述
teach:
请添加图片描述
users:
请添加图片描述

TestMapper.java

package com.test.mapper;

import java.util.List;

import org.apache.ibatis.annotations.Arg;
import org.apache.ibatis.annotations.ConstructorArgs;
import org.apache.ibatis.annotations.Select;

import com.test.entity.Student;

public interface TestMapper {
	List<Student> selectStudent();
	List<Student> selectStudent1(String sid);
	
	
	@ConstructorArgs({
        @Arg(column = "sid", javaType = int.class),              //指定构造方法
        @Arg(column = "name", javaType = String.class)
      })
    @Select("select * from student where sid = #{sid} and sex = #{sex}")
   

	
	@Select("select * from student where sid = #{sid} and sex = #{sex}")
	Student getStudentBySidAndSex(@Param("sid")String sid, @Param("sex")String sex);  //传入多个参数使用@Param

	
//	一对一
//	@Select("select * from teacher inner join teach on teacher.tid=teach.tid where sid=#{sid}")
//	Teacher getTeacherBySid(String sid);
//	
//	@Results({
//		@Result(column = "sid", property = "sid"),
//		@Result(column = "name", property = "name"),
//		@Result(column = "sex", property = "sex"),
//		@Result(column = "sid", property = "teacher", one=
//			@One(select = "getTeacherBySid")
//				),
//	})
//	@Select("select * from student where sid=#{sid}")
//	Student getStudentBySid(String sid);
	
	/*一对多,一个老师对多个学生
	@Select("select * from student inner join teach on student.sid = teach.sid where tid=#{tid}")
	Student getStudentByTid(String tid);
	
	@Results({
		@Result(column = "tid", property = "tid"),
		@Result(column = "name", property = "name"),
		@Result(column = "sex", property = "sex"),
		@Result(column = "tid", property = "studentList", many = 
			@Many(select = "getStudentBySid")
				)
	})
	@Select("select * from teacher where tid=#{tid}")
	Teacher getTeacherByTid(String tid);
	*/
	
//	int addStudent(Student student);
//	
//	int deleteStudent(String sid);
	
	
}

实体类
Student:

package com.test.entity;

import org.apache.ibatis.type.Alias;

import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.Getter;
import lombok.Setter;
import lombok.experimental.Accessors;

@Data
@Accessors(chain = true)
//@Alias("stu")  //可以取别名stu
public class Student {

	private String sid;
    private String name;
    private String sex;
	private Teacher teacher;
	
}

Teacher:

package com.test.entity;

import java.util.List;

import lombok.Data;

@Data
public class Teacher {

	String tid;
	String name;
	String sex;
	List<Student> studentList;
}

MybatisUtil.xml

由于SqlSessionFactory一般只需要创建一次,因此我们可以创建一个工具类来集中创建SqlSession,这样会更加方便一些:

package com.test;

import java.io.FileInputStream;
import java.io.FileNotFoundException;

import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.session.SqlSessionFactoryBuilder;

public class MybatisUtil {

	public MybatisUtil() {
		// TODO Auto-generated constructor stub
	}

	// 在类加载时就进行创建
	private static SqlSessionFactory sqlSessionFactory;
	static {
		try {
			sqlSessionFactory = new SqlSessionFactoryBuilder().build(new FileInputStream("mybatis-config.xml"));//可以加默认环境:build(new FileInputStream(".xml"), "环境..")
		} catch (FileNotFoundException e) {
			e.printStackTrace();
		}
	}

	/**
	 * 获取一个新的会话
	 * 
	 * @param autoCommit 是否开启自动提交(跟JDBC是一样的,如果不自动提交,则会变成事务操作)
	 * @return SqlSession对象
	 */
	public static SqlSession getSession(boolean autoCommit) {
		return sqlSessionFactory.openSession(autoCommit);
	}

}

Main.java

package com.test;

import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.util.List;

import org.apache.ibatis.io.ResolverUtil.Test;
import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.session.SqlSessionFactoryBuilder;

import com.test.entity.Student;
import com.test.mapper.TestMapper;

public class Main {

	public Main() {
		// TODO Auto-generated constructor stub
	}

	public static void main(String[] args) throws FileNotFoundException {
		// TODO Auto-generated method stub
		
		try(SqlSession sqlSession = MybatisUtil.getSession(true)) {
			TestMapper mapper = sqlSession.getMapper(TestMapper.class);
//			mapper.selectStudent1("4").forEach(System.out::println);
			
//			System.out.println(mapper.getTeacherByTid("1"));
			
			
			
//			if (mapper.addStudent(new Student().setSid("1807020122").setName("小绿").setSex("女")) == 1) {
//				System.out.println("插入成功!");
//			} else {
//				System.out.println("插入失败!");
//			}
//			mapper.selectStudent().forEach(System.out::println);
			
//			if (mapper.deleteStudent("1807020111") == 1) {
//				System.out.println("删除成功!");
//			} else {
//				System.out.println("删除失败!");
//			}
//			mapper.selectStudent().forEach(System.out::println);
		}
		

	}

}

使用过的jar包

mysql-connector-java-8.0.28-bin.jar、mybatis-3.5.9.jar、lombok.jar、(junit-4.13.2.jar、hamcrest-core-1.1.jar)

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值