MyBatis入门,配置环境与实现增删改查

为了以后考研复试能拿出点东西,抓紧看框架了,今天重操旧业看java

MyBatis:

可以简化jdbc操作,实现数据的持久化。
ORM
实现对象与表之间的映射关系。
操作对象一般操作数据库

步骤:
1.配置mybatis
conf.xml:配置数据库信息和需要加载的映射文件
表-类
映射文件 xxMapper.xml:增删改查的标签
测试类:
session.selectOne(“需要查询的namespace.id”,"SQL的参数值 ");
MyBatis规定,在mapper.xml文件中只允许有一个输入parameterType和一个输出resultType
parameterType:
如果参数是简单类型(八个基本类型+String)则可以使用任何一个占位符。eg:#{sdfas}
如果是对象,则必须是对象的属性
resultType:
如果返回值是一个对象,则无论返回一个还是多个,resultType都写成类.

每一个mybatis项目都需要如下步骤

多翻翻Mybatis的PDF文件

1.配置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">
  <!-- 上述两个的意思就是能在xml文件中提示各个参数,如果没有联网从project的properies中配置 -->
<configuration>
	<environments default="development"><!-- 用来选择在那个环境使用 -->
	<!-- 自己主机 -->
		<environment id="development">
			<transactionManager type="JDBC" />
			<!-- 
			事务提交方式:
			JDBC:手工方式:commit,rollback close
			MANAGED:将事务交给其他组件去托管(string),默认会关闭连接
			 -->
			<dataSource type="POOLED">
			<!--数据源类型:
			UNPOOLED:不适用数据连接池,使用jdbc
			POOLED:使用数据库连接池(第三方)
			JNDI:从tomcat中获取一个内置的数据库连接池(数据库连接池-数据源)
			连接池:是java代码与sql的一个连接集合,通过连接可以并发与去除打开或者关闭数据库的步骤
			 
			 -->
			
			
			<!-- 配置数据库信息 -->
				<property name="driver" value="com.mysql.cj.jdbc.Driver" />
				<property name="url" value="jdbc:mysql://localhost:3300/new?serverTimezone=UTC" />
				<property name="username" value="root" />
				<property name="password" value="123456" />
			</dataSource>
		</environment>
		
		<environment id="shishi">
		<!-- 布置主机 -->
			<transactionManager type="JDBC" />
			<dataSource type="POOLED">
			<!-- 配置数据库信息 -->
				<property name="driver" value="com.mysql.cj.jdbc.Driver" />
				<property name="url" value="jdbc:mysql://localhost:3300/new?serverTimezone=UTC" />
				<property name="username" value="root" />
				<property name="password" value="123456" />
			</dataSource>
		</environment>
		<environment id="test">
		<!-- 測試主机 -->
			<transactionManager type="JDBC" />
			<dataSource type="POOLED">
			<!-- 配置数据库信息 -->
				<property name="driver" value="com.mysql.cj.jdbc.Driver" />
				<property name="url" value="jdbc:mysql://localhost:3300/new?serverTimezone=UTC" />
				<property name="username" value="root" />
				<property name="password" value="123456" />
			</dataSource>
		</environment>
		
	</environments>
	<mappers>
	<!-- 加载映射文件 -->
		<mapper resource="org/qgm/entity/studentMapper.xml" />
	</mappers>
</configuration>
  • 2.完成类与表的建立,一一对应关系
  • 3完成mapper.mxl文件
<?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">
<!-- namespace:该Mapper.xml文件的唯一标识符 -->
<mapper namespace="org.qgm.entity.studentMapper">
	<!-- id是用来唯一定位sql语句,parameterType是where后面要查找的类型,resulttype是*的返回值,*返回时类全部。 -->
	<select id="queryStudentBystuno" parameterType="int"
		resultType="org.qgm.entity.Student">
		select * from student where stuNo=#{stuNo}

	</select>
	<insert id="addStudent" parameterType="org.qgm.entity.Student">
		insert into
		student(stuNo,stuName,stuAge,graName)
		values(#{stuNo},#{stuName},#{stuAge},#{graName})

	</insert>

	<delete id="deleteStudentByStuno" parameterType="int">
		delete from student where stuNo=#{stuNo}
	</delete>

	<update id="updataStudentByStuno" parameterType="org.qgm.entity.Student">
		update student set stuName=#{stuName},stuAge=#{stuAge},graName=#{stuAge} where stuNo=#{stuNo}

	</update>

	<select id="queryAllStudent" resultType="org.qgm.entity.Student">
	select * from student 

	</select>




</mapper>

最后书写java实现类

package org.qgm.entity;

import java.io.IOException;
import java.io.Reader;
import java.util.List;

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

public class Test {
	// 查询单个
	public static void queryStudentByStuno() throws IOException {

		// 将一个文件读入reader流中,变成一个对象
		Reader reader = Resources.getResourceAsReader("conf.xml");
		// 将reader对象变成sqlsession对象
		SqlSessionFactory sqlsessionfactory = new SqlSessionFactoryBuilder().build(reader, "development");// 强制修改default的参数
		// 从工厂中取出
		SqlSession Session = sqlsessionfactory.openSession();
		String statement = "org.qgm.entity.studentMapper.queryStudentBystuno";
		// 由于之前在mapper中设置过了返回值对象,所以object对象即为student
		Student student = Session.selectOne(statement, 1);
		System.out.println(student);
		Session.close();

	}

	// 查询全部学生
	public static void queryAllStudentBystuno() throws IOException {
		// 将一个文件读入reader流中,变成一个对象
		Reader reader = Resources.getResourceAsReader("conf.xml");
		// 将reader对象变成sqlsession对象
		SqlSessionFactory sqlsessionfactory = new SqlSessionFactoryBuilder().build(reader, "development");// 强制修改default的参数
		// 从工厂中取出
		SqlSession Session = sqlsessionfactory.openSession();
		
		String statement = "org.qgm.entity.studentMapper.queryAllStudent";
		// 由于之前在mapper中设置过了返回值对象,所以object对象即为student
		List<Student> student = Session.selectList(statement);
		System.out.println(student);
		Session.close();

	}
	//增加学生
	public static void addStudent() throws IOException {
		// 将一个文件读入reader流中,变成一个对象
		Reader reader = Resources.getResourceAsReader("conf.xml");
		// 将reader对象变成sqlsession对象
		SqlSessionFactory sqlsessionfactory = new SqlSessionFactoryBuilder().build(reader, "development");// 强制修改default的参数
		// 从工厂中取出
		SqlSession Session = sqlsessionfactory.openSession();
		
		String statement = "org.qgm.entity.studentMapper.addStudent";
		// 由于之前在mapper中设置过了返回值对象,所以object对象即为student
		Student student =new Student(5,"dqwsadd",8,"dadwddw");
		int count =Session.insert(statement,student);//statement指定执行的sql,student:sql中需要的参数
		// Mysql 不用 Session.commit();
		System.out.println("增加"+count+"个学生");
		Session.close();

	}
	//删除学生
	public static void deleteStudentBystuNo() throws IOException {

		// 将一个文件读入reader流中,变成一个对象
		Reader reader = Resources.getResourceAsReader("conf.xml");
		// 将reader对象变成sqlsession对象
		SqlSessionFactory sqlsessionfactory = new SqlSessionFactoryBuilder().build(reader, "development");// 强制修改default的参数
		// 从工厂中取出
		SqlSession Session = sqlsessionfactory.openSession();
		String statement = "org.qgm.entity.studentMapper.deleteStudentByStuno";
		// 由于之前在mapper中设置过了返回值对象,所以object对象即为student
		int count=Session.delete(statement,3);
		
		System.out.println("删除第"+count+"人");
		Session.close();

	}

	//修改
	public static void updateStudentBystuNo() throws IOException {

		// 将一个文件读入reader流中,变成一个对象
		Reader reader = Resources.getResourceAsReader("conf.xml");
		// 将reader对象变成sqlsession对象
		SqlSessionFactory sqlsessionfactory = new SqlSessionFactoryBuilder().build(reader, "development");// 强制修改default的参数
		// 从工厂中取出
		SqlSession Session = sqlsessionfactory.openSession();
		String statement = "org.qgm.entity.studentMapper.updataStudentByStuno";
		// 由于之前在mapper中设置过了返回值对象,所以object对象即为student
		Student student=new Student();
		//修改谁
		student.setStuNo(2);
		//改成啥
		student.setStuName("dassadd");
		student.setStuAge(2318);
		student.setGraName("dasdwddqw");
		int count=Session.update(statement,student);
		
		
		System.out.println("更新第"+count+"人");
		Session.close();

	}

	public static void main(String[] args) throws IOException {
		queryAllStudentBystuno();
		updateStudentBystuNo();
		//addStudent();
		queryAllStudentBystuno();
	}
}

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值