欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

Mybatis学习总结(二)---dao层开发

程序员文章站 2022-07-12 22:34:53
...

mybatis和hibernate本质区别和应用场景

hibernate:标准ORM框架(对象关系映射),不需要程序写sql,sql语句自动生成了。

应用场景:适用于需求变化不多的中小型项目,比如后台管理系统erp、orm、oa…

mybatis:专注sql本身,需要程序员自己编写sql语句,sql修改、优化比较方便。mybatis是一个不完全的ORM框架,虽然程序员自己写sql,mybatis也可以实现映射(输入、输出映射)。

应用场景:适用于需求变化较多的项目,比如:互联网项目。

企业进行技术选型,以低成本,高回报作为技术选型的。

Mybatis学习总结(二)---dao层开发

Mybatis学习总结(二)---dao层开发

Mybatis学习总结(二)---dao层开发

 

Mybatis学习总结(二)---dao层开发

 

 

在dao层中创建UserMapper接口

Mybatis学习总结(二)---dao层开发

 

package cn.mybatis.dao;

import cn.mybatis.model.User;

public interface UserMapper {
 
	public User findUserById(int id)throws Exception;
	
	public void insertUser(User user)throws Exception;
	
	public void deleteUser(int id)throws Exception;
	
	public void updateUser(User user)throws Exception;
}

接口中方法名和UserMapper.xml中statement id一致

接口中传入参数类型和和UserMapper.xml中statement的parameterType一致

接口中方法返回值和和UserMapper.xml中statement的resultType一致

 

以下是UserMapper.xml代码

其中namespace等于UserMapper接口地址

<?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="cn.mybatis.dao.UserMapper" >
 
  
  <!-- 在mapper中配置很多sql语句 -->
  <!-- id:标志映射文件中的sql
     将sql语句封装到mappedStatement对象中,所以id称为statement的id -->
  <!-- parameterType绑定输入参数类型,这里指定int型 -->
  <!-- #{}表示占位符 -->
  <!-- #{id}其中id表示接收输入的参数,参数名称就是id,如果输入参数为简单类型,#{}中参数名可以任意,可以是value或其他 -->
  <!-- resultType指定sql的输出结果所映射的java对象类型,select指定resultType表示单条记录映射成的java对象 -->
  
  <select id="findUserById" parameterType="int" resultType="User">
  	select * from user where id = #{value}
  </select>
  
  <!--   根据用户名模糊查询用户信息,可能返回多条 -->
  <!-- resultType:指定单条记录映射成的java对象类型 -->
  <!-- ${}表示拼接sql串,将接收到的参数内容不加任何修饰,拼接在sql中 -->
  <!-- 使用${}拼接sql,容易引起sql注入,不安全 -->
  <!-- ${value}:接收输入参数的内容,如果传入类型是简单类型,${}中只能使用value -->
  <select id="findUserByName" parameterType="java.lang.String" resultType="cn.mybatis.model.User">
		select * from user where username like '%${value}%'
  </select>
  
 <!--  添加用户
  parameterType:指定输入参数类型是pojo
  #{}中指定pojo属性名,接收到pojo的属性值,mybatis通过OGNL获得对象的属性值 -->
  <insert id="insertUser" parameterType="cn.mybatis.model.User">
  
  <!-- 将插入数据的主键返回,返回到user对象中
  		SELECT LAST_INSERT_ID:得到刚insert进去记录的主键值,只适用于自增主键
   		keyProperty:将查询到的主键值设置到parameterType指定对象的哪个属性
   		order:SELECT LAST_INSERT_ID()执行顺序,相对于insert语句来说它的执行顺序
   		resultType:指定SELECT LAST_INSERT_ID()的结果类型
   -->
  <selectKey keyProperty="id" order="AFTER" resultType="java.lang.Integer">
  	SELECT LAST_INSERT_ID()
  </selectKey>
  	insert into user(id,username,password,age) value(#{id},#{username},#{password},#{age})
  </insert>
  
  
  <!--  删除用户 -->
   <delete id="deleteUser" parameterType="java.lang.Integer">
   	delete from user where id = #{id}
   </delete>
   
 <!--   更新用户
 	需要传入用户的id
 	需要传入用户的更新信息
 	parameterType指定对象必须包含id否则更新全表
 	#{id}:从输入的user对象中获得id属性
  -->
   <update id="updateUser" parameterType="cn.mybatis.model.User">
   	update user set username = #{username},password = #{password},age = #{age}
   	where id = #{id}
   </update>
  
</mapper>

 

创建数据库链接属性文件db.properties

jdbc.driver=com.mysql.jdbc.Driver
jdbc.url=jdbc:mysql://localhost:3306/ssm?useSSL=false
jdbc.username=root
jdbc.password=888888

在SqlMapConfig.xml中引入db.properties,并读取其中的属性值

<?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>

	<!-- 加载属性文件 -->
	<properties resource="db.properties">
		<!-- 在properties标签中还可以配置一些属性名和属性值 -->
	</properties>

	<!-- 定义别名 -->
	<typeAliases>
		<!-- 批量定义别名,指定报名,mybatis自动扫描该包,别名就是类名(首字母大写或小写均可) -->
		<package name="cn.mybatis.model"/>
	</typeAliases>

	<!-- 和spring整合后enviroment配置将废除 -->
	<environments default="development">
		<environment id="development">
			<!-- 使用JDBC事务管理,事务控制由mybatis -->
			<transactionManager type="JDBC"/>
			<!-- 数据库连接池 ,由mybatis管理-->
			<dataSource type="POOLED">
				<property name="driver" value="${jdbc.driver}"/>
				<property name="url" value="${jdbc.url}"/>
				<property name="username" value="${jdbc.username}"/>
				<property name="password" value="${jdbc.password}"/>
			</dataSource>
		</environment>
	</environments>
	
	<!-- 加载映射文件 -->
	<mappers>
		<mapper resource="mapper/UserMapper.xml"/>
	</mappers>
	
	

</configuration>

Mybatis学习总结(二)---dao层开发

下一篇一对一映射:https://blog.csdn.net/aKuang_JH/article/details/82765030