xml
查找所有
持久层(xxx.java)
List<User> findAll();
xxx.xml
<select id="findAll" resultType="com.ssm.domain.User">
select * from user
</select>
增加用户
持久层(xxx.java)
void saveUser(User user);
xxx.xml
<insert id="saveUser" parameterType="com.ssm.domain.User">
insert into user(username,birthday,sex,address) values (#{username},#{birthday},#{sex},#{address});
</insert>
删除用户
持久层(xxx.java)
void deleteUser(Integer userId);
xxx.xml
<delete id="deleteUser" parameterType="Integer">
delete from user where id=#{uid}
</delete>
根据id查询
持久层(xxx.java)
User findById(Integer userId);
xxx.xml
<select id="findById" parameterType="int" resultType="com.ssm.domain.User">
select * from user where id=#{uid}
</select>
根据名字的模糊查询
持久层(xxx.java)
List<User> findByName(String userName);
xxx.xml
<select id="findByName" parameterType="String" resultType="com.ssm.domain.User">
<!--select * from user where username like #{name}; -->
select * from user where username like '%${value}%'
</select>
更新用户
持久层(xxx.java)
void updateUser(User user);
xxx.xml
<update id="updateUser" parameterType="com.ssm.domain.User">
update user set username=#{username},birthday=#{birthday},sex=#{sex},address=#{address} where id=#{id}
</update>
每个参数的意义
resultType 属性:用于指定结果集的类型。
parameterType 属性:用于指定传入参数的类型。
sql 语句中使用#{}字符:它代表占位符,相当于原来 jdbc 部分所学的?,都是用于执行语句时替换实际的数据。具体的数据是由#{}里面的内容决定的。
{}中内容的写法:由于数据类型是基本类型,所以此处可以随意写。
注解
查找所有
@Select("select * from user")
根据名字的模糊查询
JdbcConfig.xml
jdbc.driver=com.mysql.jdbc.Driver
jdbc.url=jdbc:mysql://localhost:3306/mybatis_heima
jdbc.username=root
jdbc.password=123456
SqlMapConfig
<?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="jdbcConfig.properties"></properties>
<!-- 配置别名 -->
<typeAliases>
<package name="com.ssm.domain"/>
</typeAliases>
<!-- 配置环境 -->
<environments default="mysql">
<environment id="mysql">
<transactionManager type="JDBC"></transactionManager>
<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>
<!-- 引入带有注解的dao接口所在位置 -->
<mappers>
<package name="com.ssm.dao"/>
</mappers>
</configuration>
@Results(id="accountMap",value = {
@Result(id=true,column = "id",property = "id"),
@Result(column = "uid",property = "uid"),
@Result(column = "money",property = "money"),
@Result(property = "user",column = "uid",one=@One(select="com.ssm.dao.UserDao.findById",fetchType= FetchType.EAGER ))
})