一、Mybaitis入门示例(动态代理)

一、环境配置:
添加jar包:
mybatis-3.5.4.jar;
mysql-connector-java-8.0.19.jar;

二、
实体类A;
映射文件Amapper.xml;
接口interface A;

四、
配置文件conf.xml;

示例:

src
	com.entity
		 Student.java
	com.mapper
		Studentmapper.java//接口
		studentmapper.xml
	com.test
		Test.java
	conf.xml

//实体类Student
package com.entity;

public class Student {
	private int age;
	private int id;
	private String name;
	public Student() {
	}


	public Student(int age, int id, String name) {
		
		this.age = age;
		this.id = id;
		this.name = name;
	}

	public int getAge() {
		return age;
	}


	public void setAge(int age) {
		this.age = age;
	}
	public int getId() {
		return id;
	}
	public void setId(int id) {
		this.id = id;
	}
	public String getName() {
		return name;
	}
	public void setName(String name) {
		this.name = name;
	}
	@Override
	public String toString() {
		return this.name+" "+this.id+" "+this.age;
	}
}
//映射文件StudentMapper.xml
<?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.mapper.StudentMapper">//实体类相应接口
	 <select id="queryStudentById" parameterType="int" resultType="Student" >//parameterType输入值类型,#{}; resultType返回值类型,查询结果
	 	select * from Student where id = #{id}//表中字段=#{输入值}
	 </select>
	  
	 <select id="queryALLstudent"  resultType="com.entity.Student" >//全类名
	 	select * from Student 
	 </select>
	 
	 <insert id="addStudent" parameterType="com.entity.Student">
	 	insert into Student(id,name,age) values(#{id},#{name},#{age})
	 </insert>
	 
	 <delete id="deleteStudent" parameterType="int">
	 	delete from Student where id=#{id}
	 </delete>
	 
	 <update id=
	 "updateStudent" parameterType="com.entity.Student">
	 	update Student set id=#{id},name=#{name},age=#{age}
	 </update>
	 
</mapper>
//接口StudentMapper
package com.mapper;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import com.entity.Student;
public interface StudentMapper {
	public Student queryStudentById(int id);//返回类型对应ResultType; 方法名对应id; 形参类型对应ParameterType
	public List<Student> queryALLstudent();
	public void addStudent(Student student);
	public void deleteStudent(int id);
	public void updateStudent(Student student);
//配置文件conf.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>

	<environments default="development">//通过environments的default值 和  environment的 id 来指定 MyBatis运行时的数据库环境
		<environment id="development">//开发环境(自己的计算机)
			<transactionManager type="JDBC"/>//事务提交方式:JDBC:利用JDBC方式处理事务(commit  rollback  close);;;MANAGED:将事务交由 其他组件去托管(spring ,jobss),默认 会关闭连接。
			<dataSource type="POOLED">//数据源类型:UNPOOLED:传统的JDBC模式(每次访问数据库,均需要 打开、关闭等数据库操作,但是 打开、关闭数据库是比较消耗性能的);;;POOLED:使用数据库连接池;;;JNDI:从tomcat中获取一个内置的数据库连接池 (数据库连接池-数据源  )
				<property name="driver" value="com.mysql.cj.jdbc.Driver"/>
				<property name="url" value="jdbc:mysql://localhost:3306/a?serverTimezone=UTC"/>
				<property name="username" value="root"/>
				<property name="password" value="admin"/>
			</dataSource>
		</environment>
	</environments>
	 
	<mappers>
		<mapper resource="com/entity/personMapper.xml"/>
	</mappers>
	
</configuration>
//测试类Test
package com.test;
import java.io.IOException;
import java.io.Reader;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
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 com.entity.Student;
import com.mapper.StudentMapper;
public class Test {
	public static void queryStudentById() throws IOException {
		Reader reader=Resources.getResourceAsReader("conf.xml");
		SqlSessionFactory sessionFactory=new SqlSessionFactoryBuilder().build(reader,"development");//指定本地环境类型
		SqlSession session =sessionFactory.openSession();
		StudentMapper studentmapper=session.getMapper(StudentMapper.class);
		//以上四步
		
		Student student=studentmapper.queryStudentById(3);//Test-->接口中的方法-->mapper.xml中的sql语句-->db
		System.out.println(student);
		session.close();
	}
	
	public static void queryAllstudent() throws IOException {
		Reader reader = Resources.getResourceAsReader("conf.xml") ;
		SqlSessionFactory sessionFacotry = new SqlSessionFactoryBuilder().build(reader,"development") ;
		SqlSession session = sessionFacotry.openSession() ;
		StudentMapper studentmapper=session.getMapper(StudentMapper.class);


		List<Student>students=studentmapper.queryALLstudent();
		session.commit();
		System.out.println("查询所有学生");
		for(Student s:students) {
			System.out.println(s);
		}
		session.close();
	}
	public static void addStudent() throws IOException
	{
		Reader reader = Resources.getResourceAsReader("conf.xml") ;
		SqlSessionFactory sessionFacotry = new SqlSessionFactoryBuilder().build(reader,"development") ;
		SqlSession session = sessionFacotry.openSession() ;
		StudentMapper stumap=session.getMapper(StudentMapper.class);


		Student student=new Student(30,4,"wyf",true);
		stumap.addStudent(student);
		session.commit();
		System.out.println("增加:"+student);
		queryAllstudent();
		session.close();
	}
	public static void deleteStudent() throws IOException
	{
		Reader reader = Resources.getResourceAsReader("conf.xml") ;
		SqlSessionFactory sessionFacotry = new SqlSessionFactoryBuilder().build(reader,"development") ;
		SqlSession session = sessionFacotry.openSession() ;
		StudentMapper stumap=session.getMapper(StudentMapper.class);


		stumap.deleteStudent(4);
		session.commit();
		System.out.println("删除:4号");
		queryAllstudent();
		session.close();
	}
	public static void updateStudent() throws IOException
	{
		Reader reader = Resources.getResourceAsReader("conf.xml") ;
		SqlSessionFactory sessionFacotry = new SqlSessionFactoryBuilder().build(reader,"development") ;
		SqlSession session = sessionFacotry.openSession() ;
		StudentMapper stumap=session.getMapper(StudentMapper.class);


		Student student =new Student(24,1,"czj",true);
		stumap.updateStudent(student);
		session.commit();
		System.out.println("更新:"+student);
		queryAllstudent();
		session.close();
	}
	
	public static void main(String args[]) throws IOException {
		
		System.out.println("一:");
		queryStudentById();
		System.out.println("二:");
		addStudent();
		System.out.println("三:");
		deleteStudent();
		System.out.println("四:");
		updateStudent() ;
	}
}

mybatis约定:
输入参数parameterType 和 输出参数resultType ,在形式上都只能有一个

如果输入参数 :是简单类型(8个基本类型+String) 是可以使用任何占位符,#{xxxx}
如果是对象类型,则必须是对象的属性 #{属性名}

输出参数: 如果返回值类型是一个 对象(如Student),则无论返回一个、还是多个,
再resultType都写成com.entity.Student

发布了16 篇原创文章 · 获赞 0 · 访问量 234

猜你喜欢

转载自blog.csdn.net/BTLA_2020/article/details/105171672