mapper代理开发-实现增删改查

接口和局部配置文件要放在一起并且名字要相同
在这里插入图片描述
jar包
在这里插入图片描述
配置cofig和map
在这里插入图片描述

package com.dao;
//IuserDao
import java.util.List;

import com.model.User;

public interface IuserDao {
	//查找全部
List<User> selectAll();

//入参要与方法名里面的类型相匹配
//根据id查找
User selectById(int id);

//删除记录
int delete(int id);

//更新记录
void update(User u);

//插入记录
void insertObj(User u);
}

//IuserDao.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对象类型 -->
<!--1.mapper代理,namespace写成接口的类路径  -->
<mapper namespace="com.dao.IuserDao">
<!--查找全部  -->
<select id="selectAll" resultType="com.model.User">
select * from student
</select>

<!-- 根据id查找 -->
<!--2. i对应接口里面的方法名,传入参数的类型必须与接口方法(int)数据类型相匹配 
		返回值也必须向匹配
		局部配置文件的名称要与接口一致并且要与接口放在同一个包里
 -->
<!-- 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>

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.dao.IuserDao;
import com.model.User;

public class TestFirst {
	private SqlSessionFactory sf;//全局变量,依赖注入
		//1.加载全局配置文件得到stream
		//2.sessionfactory
		//3.session	
	public SqlSessionFactory getSf() {
			InputStream stream = null;
			try {
				 stream = Resources.getResourceAsStream("SqlMapper.xml");
			} catch (IOException e) {
				// TODO 自动生成的 catch 块
				e.printStackTrace();
			}	
			return new SqlSessionFactoryBuilder().build(stream);
		}
	@Test
	public void test() {
		SqlSessionFactory sf = new TestFirst().getSf();
		SqlSession session = sf.openSession();
		// 得到代理对象,获取接口的类路径
		IuserDao userdao = session.getMapper(IuserDao.class);
		
		//查找全部
//		List<User> selectAll = userdao.selectAll();
//		for (User user : selectAll) {
//			System.out.println(user);
//		}
		
		//根据id查找
//		User u = userdao.selectById(1);
//		System.out.println(u);

		
		//删除记录
//		if(userdao.delete(15)==1)
//		System.out.println("删除成功!");
//		session.commit();
//		session.close();
		
		//更新
//		User u = new User();
//		u.setsID(1);
//		User selectById = userdao.selectById(1);
//		selectById.setSage(3);
//		userdao.update(selectById);
//		session.commit();
//		System.out.println(u);
//		session.close();
		
		//插入
//		User u = new User();
//		u.setsName("张三");
//		u.setSsex("男");
//		u.setSage(48);
//		userdao.insertObj(u);
//		session.commit();
//		session.close();
		
	}


	
	
}

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>
	<!-- 扫描包 -->
	<package name="com.dao"/>
		</mappers>
</configuration>
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值