MyBatis的xml配置
1.xml的SQL
1.配置mapper的路径
# 配置mybatis
mybatis:
mapper-locations: classpath:mappers/*xml
configuration:
log-impl: org.apache.ibatis.logging.stdout.StdOutImpl
2.设置dao
@Mapper
public interface UserMapper {
// 查看所有的用户信息
// @Select("select * from user")
List<User> findAll();
// 插入用户信息
// @Insert("insert into user(username,password,nickname,email,phone,address ) values(#{username},#{password},#{nickname},#{email},#{phone},#{address})")
int insert(User user);
// 更新用户信息
// @Update("update user set username=#{username},password=#{password},nickname=#{nickname},email=#{email},phone=#{phone},address=#{address} where id=#{id}")
int update(User user);
// 删除用户信息
// @Delete("delete from user where id=#{id}")
int delete(int uid);
// 根据id查询用户的信息
User getUserById(int uid);
// 根据用户名进行模糊查询
List<User> selectVague(String uname);
}
3.设置dao的映射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标签开始,由/mapper结束,可以把它想成一个空间,是映射文件
属性namespace:空间名,主要在代理中使用。这个namespace是唯一的。
这里把mapper标签和接口联系在一起了,namespace=写接口路径,映射文件要和接口在同一目录下
-->
<mapper namespace="com.lxz.vuedemo01.mapper.UserMapper">
<!-- =============映射关系标签=============
属性type:写实体类的包名类名,由于之前定义了po类的别名,这里就写这个别名
属性id:是这个映射标签的唯一标识
id标签是查询结果集中的唯一标识
属性column:查询出来的列名
属性property:是po类里所指定的列名
通常会在原列名后面加下划线,这是固定的,这里就是id后面_
-->
<resultMap type="com.lxz.vuedemo01.entity.User" id="userinfoMap">
<result column="id" property="id"/>
<result column="username" property="username"/>
<result column="password" property="password"/>
<result column="nickname" property="username"/>
<result column="email" property="email"/>
<result column="phone" property="phone"/>
<result column="address" property="address"/>
</resultMap>
<!-- ==================定义sql片段==============
公用的sql
sql:是sql片段标签属性id是该片段的唯一标识 -->
<sql id="zd">
id
,username,password,nickname,email,phone,address
</sql>
<!-- 增删改查标签里的id:一定要和接口里对应的方法名一致,
resultMap输出类型里写映射标签里的id
parameterType:输入类型,规范输入数据类型,指明查询时使用的参数类型
#{uid}是 方法 User getUserById(int uid);的参数
-->
<!-- 获取指定id的信息 -->
<select id="getUserById" resultMap="userinfoMap" parameterType="java.lang.Integer">
<!-- 用include标签引入sql片段,refid写定义sql片段的id,where标签不要写在片段里 -->
select
<include refid="zd"/>
from user
<where>
id=#{uid}
</where>
</select>
<!-- 查询用户列表 -->
<!--id对应的UserMapper.java中的接口的方法-->
<select id="findAll" resultMap="userinfoMap" resultType="java.util.List">
<!-- 用include标签引入sql片段,refid写定义sql片段的id,where标签不要写在片段里 -->
select
<include refid="zd"/>
from user
</select>
<!-- 修改用户信息 -->
<update id="update" parameterType="com.lxz.vuedemo01.entity.User">
update user
set username=#{username},
password=#{password},
nickname=#{nickname},
email=#{email},
phone=#{phone},
address=#{address}
where id = #{id}
</update>
<!-- 添加用户信息 -->
<insert id="insert" parameterType="com.lxz.vuedemo01.entity.User">
insert into user(username, password, nickname, email, phone, address)
values (#{username}, #{password}, #{nickname}, #{email}, #{phone}, #{address})
</insert>
<!-- 增删改查标签里的id:一定要和接口里对应的方法名一致 -->
<delete id="delete" parameterType="int">
delete
from user
where id = #{uid}
</delete>
<!-- 根据用户名模糊查询,根据权限查询 -->
<select id="selectVague" resultMap="userinfoMap" parameterType="java.lang.String">
<!-- 用include标签引入sql片段,refid写定义sql片段的id,where标签不要写在片段里 -->
select
<include refid="zd"/>
from user
where username like #{username}
</select>
</mapper>