myBatis入门(增删改查、模糊查找、mysql获取主键的两种方法)

简介

Mybatis半自动化的orm框架,工作在持久层,与dao层相关
SSH和SSM之间有什么异同?(面试官会问)
 Mybatis是半自动的,程序员可以操作sql语句。在持久层框架而言,优化数据库放方便
 Hibernate是全自动的
在这里插入图片描述

入门程序

① 导入jar包
在这里插入图片描述
② 设置全局配置文件(xml文件)
 解决configuration没有提示

  1. 复制路径
    在这里插入图片描述

在这里插入图片描述
3.
在这里插入图片描述
4.
在这里插入图片描述
5.添加
在这里插入图片描述
 全局配置文件SqlMapper.xml
 局部配置文件UserMapper.xml
在这里插入图片描述
Test

package com.mb.test;
import java.io.IOException;
import java.io.InputStream;
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;
import org.junit.Test;

import com.model.User;

public class TestFirst {
	@Test
public void test() {
	InputStream stream = null;
	//1.加载全局配置文件
	try {
		 stream = Resources.getResourceAsStream("SqlMapper.xml");
	} catch (IOException e) {
		// TODO 自动生成的 catch 块
		e.printStackTrace();
	}
	//生成SqlSessionFactory工厂
	SqlSessionFactory sf = new SqlSessionFactoryBuilder().build(stream);
	//生成session对象
	SqlSession session = sf.openSession();

//查找全部	
//	List<User> selectList = session.selectList("userMapper.selectAll");
//	for(User user:selectList) {
//		System.out.println(user);
//	}
	
//根据id查找
//	User user = session.selectOne("userMapper.selectById",1);
//	System.out.println(user);

	
//插入测试
//		User user = new User();
//		user.setsName("man");
//		user.setSsex("男");
//		user.setSage(18);
//		session.insert("userMapper.insert",user);		
//		session.commit();
//		System.out.println(user);
//		session.close();
		
//删除测试
//	User user = session.selectOne("userMapper.delete", 16);
//	session.commit();
//	System.out.println(user);
//	session.close();
	
//更新测试
//	User user = session.selectOne("userMapper.selectById",1);
//	user.setSage(2);
//	session.update("userMapper.update",user);
//	session.commit();
//	System.out.println(user);
//	session.close();	
	//模糊查询
	//#{}相当于占位符
	//${}连接符 根据某列排序
//	List<User> userList=session.selectList("userMapper.selectLike", "红");
//	for(User user:userList) {
//		System.out.println(user);
//	}
//	session.commit();
//	session.close();	
	
	//插入
//	User user = new User();
//	user.setsName("man");
//	user.setSsex("男");
//	user.setSage(18);
//	int insert = session.insert("userMapper.insertObj",user);
//	session.commit();
//	System.out.println(user.getsId());
//	session.close();
}

	
	
}

User

package com.model;

public class User {
	public  int sId;
	public String sName;
	public String sSex;
	public int sAge;
	public int getsId() {
		return sId;
	}
	public void setsID(int sID) {
		this.sId = sID;
	}
	public String getsName() {
		return sName;
	}
	public void setsName(String sName) {
		this.sName = sName;
	}
	public String getSsex() {
		return sSex;
	}
	public void setSsex(String ssex) {
		this.sSex = ssex;
	}
	public int getSage() {
		return sAge;
	}
	public void setSage(int sage) {
		this.sAge = sage;
	}
	@Override
	public String toString() {
		return "User [sID=" + sId + ", sName=" + sName + ", ssex=" + sSex + ", sage=" + sAge + "]";
	}
}

SqlMapper.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">
		<environment id="development">
			<!--配置JDBC事务控制,由mybatis进行管理 -->
			<transactionManager type="JDBC"></transactionManager>
			<!--配置数据源,采用mybatis连接池 -->
			<dataSource type="POOLED">
				<property name="driver" value="com.mysql.jdbc.Driver" />
				<property name="url" value="jdbc:mysql://localhost:3306/test" />
				<property name="username" value="root" />
				<property name="password" value="root" />
			</dataSource>
		</environment>
	</environments>
	<mappers>
	<mapper resource="UserMapper.xml"></mapper>
		</mappers>
</configuration>

UserMapper.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">

<!--resultType:指定sql输出结果的所映射的java对象类型 -->
<mapper namespace="userMapper">
<!--查找全部  -->
<select id="selectAll" resultType="com.model.User">
select * from student
</select>

<!-- 根据id查找 -->
<!-- parameterType="int" 待传入的参数类型 -->
<select id="selectById" parameterType="int" resultType="com.model.User">
select * from student where sId =#{id}
</select>

<!--插入  -->
<!--占位符由#{}代替?;
传入的是简单类型#{}里面的名称可以任意;
传入的对象类型#{}里的名称必定是javabean里的属性
-->
<insert id="insert" parameterType="com.model.User" keyProperty="sId" useGeneratedKeys="true">
insert into student(sName,sSex,sAge)values(#{sName},#{sSex},#{sAge});
</insert>

<!-- 更新 -->
<update id="update" parameterType="com.model.User">
update student set sAge = #{sAge} where sId = #{sId}
</update>

<!-- 删除 -->
<delete id="delete" parameterType="int" >
delete from student where sId=#{id}
</delete>


<!-- 模糊查询 -->
<!-- '%${value}'用#{}也可以,但是test里面要加上% -->
<!--#{}?占位符
	${} 连接符 模糊查询 用到的方面:排序
	缺点:慎用,sql注入存在隐患
  -->
<select id="selectLike" resultType="com.model.User" parameterType="string">
select * from student where sName LIKE '%${value}'
</select>

<!--MYSQL获得主键:两种方法  -->
 <!-- keyProperty="sId" 生成主键的字段
	  resultType代表返回主键的数据类型
	  order、mysql选的是after Oracle选的是before
	  Oracle 产生主键策略是序列seq;mysql用select LAST_INSERT_ID()函数得到
	  以上配置全部写在<selectKey>里面 -->

<!-- <insert id="insertObj" parameterType="com.model.User" >
<selectKey keyProperty="sId" resultType="int" order="AFTER">
 select LAST_INSERT_ID()
</selectKey>
insert into student(sName,sSex,sAge)values(#{sName},#{sSex},#{sAge});
</insert> -->

<!-- 2.另外一种写法 -->
<insert id="insertObj" parameterType="com.model.User" keyProperty="sId" useGeneratedKeys="true">
insert into student(sName,sSex,sAge)values(#{sName},#{sSex},#{sAge});
</insert>
</mapper>

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值