注意的几点:
1.main 函数中 session 最后要进行 提交(commit)和关闭(close),否则在插入数据的时候,会自动插入数据并且删除数据,使得数据库中看不到插入的数据
2.注意 java.util.Date 和 java.sql.Date 之间有区别区分好时间的数据类型
3.传多个参数的时候用 Map 类型传参,注意标签中的参数类型 是否为对象 或者 数据类型
一、查询用户
查询所有元组
// 查询所有值
public static void getUsers() {
List<Users> users = session.selectList("getUsers");
for (Users user : users) {
System.out.println("姓名:" + user.getName());
System.out.println("性别:" + user.getGender());
System.out.println("生日:" + user.getBirthday());
System.out.println("所在地:" + user.getProvince() + user.getCity());
}
}
//查询所有元组
getUsers();
运行结果:
模糊查询
// 模糊查询
public static List<Users> getUsers(String value) {
Map<String, Object> paramsMap = new HashMap<>();
paramsMap.put("value", value);
List<Users> users = session.selectList("getUsers", paramsMap);
for (Users user : users) {
System.out.println("姓名:" + user.getName());
System.out.println("性别:" + user.getGender());
System.out.println("生日:" + user.getBirthday());
System.out.println("所在地:" + user.getProvince() + user.getCity());
}
return users;
}
// 查询名字中含有 ‘丽’ 的元组
getUsers("丽");
运行结果:
配置代码(用if标签来配置)
<!--查询(if) 如果 name 为空,则查询所有,如果不为空, 则进行模糊查询-->
<select id="getUsers" resultType="Users">
select * from users
<if test="value!=null">
where username like '%${value}%'
</if>
</select>
查询某一个元组
// 查询某一个值
public static void getUser(int id) {
Users user = session.selectOne("getUser", id);
System.out.println("姓名:" + user.getName());
System.out.println("性别:" + user.getGender());
SimpleDateFormat stDateFormat = new SimpleDateFormat("yyyy-MM-dd");
System.out.println("生日:" + stDateFormat.format(user.getBirthday()));
System.out.println("所在地:" + user.getProvince() + user.getCity());
}
// 查询 id 为 3 的元组
getUser(3);
运行结果:
配置代码
<!--查询数据(某一行)-->
<select id="getUser" parameterType="_int" resultType="Users">
select * from users where id= #{id}
</select>
where 标签查询
// where 标签查询
public static void whereGet(int id, String value) {
Map<String, Object> paramsMap = new HashMap<>();
paramsMap.put("userName", value);
paramsMap.put("id", id);
List<Users> users = session.selectList("whereGet", paramsMap);
for (Users user : users) {
System.out.println("姓名:" + user.getName());
System.out.println("性别:" + user.getGender());
SimpleDateFormat stDateFormat = new SimpleDateFormat("yyyy-MM-dd");
System.out.println("生日:" + stDateFormat.format(user.getBirthday()));
System.out.println("所在地:" + user.getProvince() + user.getCity());
}
}
// 查询姓名中含有 ‘丽’或者id>1的用户
whereGet(1, "丽");
运行结果:
配置代码:
<select id="whereGet" resultType="Users">
select * from users
<where>
<if test="userName!=null">
and username like concat('%',#{userName},'%')
</if>
<if test="id!=null">
and id > #{id}
</if>
</where>
</select>
或者 trim 标签
<!--trim 标签查询-->
<select id="whereGet" resultType="Users">
select * from users
<trim prefix="WHERE" prefixOverrides="AND |OR ">
<if test="userName!=null">
and username like concat('%',#{userName},'%')
</if>
<if test="id!=null ">
and id> #{id}
</if>
</trim>
</select>
二、增加用户
// 增加用户
public static void insertUser(String userName, String password, String gender, String email, String province,
String city, String birthday) throws ParseException {
SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd");
Users user = new Users(userName, password, gender, email, province, city);
user.setBirthday(simpleDateFormat.parse(birthday));
session.insert("insertUser", user);
}
// 增加一个用户:姓名:王五,密码:555,性别:男,电子邮件:5555@qq.com,省份:湖北省,城市:武汉市,出生日期:1995-05-05
insertUser("王五", "555", "男", "5555@qq.com", "湖北省", "武汉市", "1995-05-05");
运行结果:
配置代码:
<!--增加用户 -->
<insert id="insertUser" parameterType="Users" >
insert into users values (null,#{userName},#{password},#{gender},#{email},#{province},#{city},#{birthday,jdbcType=DATE})
</insert>
三、删除用户
// 删除用户
public static void deleteUser(int id) {
session.delete("deleteUser", id);
}
// 删除 id 为14的用户
deleteUser(14);
运行结果:
![](https://i-blog.csdnimg.cn/blog_migrate/363216a7d34fccb85c6925e5b30c12c6.png)
配置代码:
<!--删除用户-->
<delete id="deleteUser" parameterType="_int" >
delete from users where id= #{id}
</delete>
四、修改用户信息
// 修改用户信息
public static void updateUser(Users user) {
session.update("updateUser", user);
}
// 将 id 为 16的用户姓名改为 ’关二‘
Users user = new Users();
user.setId(16);
user.setName("关二");
updateUser(user);
运行结果:
配置代码:
<!--修改数据-->
<update id="updateUser" parameterType="Users" >
update users
<set>
<if test="userName != null">username=#{userName},</if>
<if test="password != null">password=#{password}</if>
</set>
where id=#{id}
</update>
五、测试文件完整代码
package com.mr.test;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import org.apache.ibatis.session.SqlSession;
import com.mr.datasource.DataConnection;
import com.mr.entity.Users;
public class UserTest {
// 设置 session 全局变量
public static SqlSession session;
public static void main(String[] args) throws Exception {
session = new DataConnection().getSqlSession();
// 查询所有元组
// getUsers();
// 查询名字中含有 ‘丽’ 的元组
// getUsers("丽");
// 查询 id 为 3 的元组
// getUser(3);
// 增加一个用户:姓名:王五,密码:555,性别:男,电子邮件:5555@qq.com,省份:湖北省,城市:武汉市,出生日期:1995-05-05
// insertUser("王五", "555", "男", "5555@qq.com", "湖北省", "武汉市", "1995-05-05");
// 删除 id 为14的用户
// deleteUser(14);
// 将 id 为 16的用户姓名改为 ’关二‘
// Users user = new Users();
// user.setId(16);
// user.setName("关二");
// updateUser(user);
// 查询姓名中含有 ‘丽’或者id>1的用户
whereGet(1, "丽");
session.commit();
session.close();
}
// 查询所有值
public static void getUsers() {
List<Users> users = session.selectList("getUsers");
for (Users user : users) {
System.out.println("姓名:" + user.getName());
System.out.println("性别:" + user.getGender());
SimpleDateFormat stDateFormat = new SimpleDateFormat("yyyy-MM-dd");
System.out.println("生日:" + stDateFormat.format(user.getBirthday()));
System.out.println("所在地:" + user.getProvince() + user.getCity());
}
}
// 模糊查询
public static List<Users> getUsers(String value) {
Map<String, Object> paramsMap = new HashMap<>();
paramsMap.put("value", value);
List<Users> users = session.selectList("getUsers", paramsMap);
for (Users user : users) {
System.out.println("姓名:" + user.getName());
System.out.println("性别:" + user.getGender());
SimpleDateFormat stDateFormat = new SimpleDateFormat("yyyy-MM-dd");
System.out.println("生日:" + stDateFormat.format(user.getBirthday()));
System.out.println("所在地:" + user.getProvince() + user.getCity());
}
return users;
}
// 查询某一个值
public static void getUser(int id) {
Users user = session.selectOne("getUser", id);
System.out.println("姓名:" + user.getName());
System.out.println("性别:" + user.getGender());
SimpleDateFormat stDateFormat = new SimpleDateFormat("yyyy-MM-dd");
System.out.println("生日:" + stDateFormat.format(user.getBirthday()));
System.out.println("所在地:" + user.getProvince() + user.getCity());
}
// where 标签查询
public static void whereGet(int id, String value) {
Map<String, Object> paramsMap = new HashMap<>();
paramsMap.put("userName", value);
paramsMap.put("id", id);
List<Users> users = session.selectList("whereGet", paramsMap);
for (Users user : users) {
System.out.println("姓名:" + user.getName());
System.out.println("性别:" + user.getGender());
SimpleDateFormat stDateFormat = new SimpleDateFormat("yyyy-MM-dd");
System.out.println("生日:" + stDateFormat.format(user.getBirthday()));
System.out.println("所在地:" + user.getProvince() + user.getCity());
}
}
// 增加用户
public static void insertUser(String userName, String password, String gender, String email, String province,
String city, String birthday) throws ParseException {
SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd");
Users user = new Users(userName, password, gender, email, province, city);
user.setBirthday(simpleDateFormat.parse(birthday));
session.insert("insertUser", user);
}
// 删除用户
public static void deleteUser(int id) {
session.delete("deleteUser", id);
}
// 修改用户信息
public static void updateUser(Users user) {
session.update("updateUser", user);
}
}