映射文件:
在User.xml 中添加
parameterType:定义输入到sql 中的参数类型,#{id} 表示使用 preparedStatement 设置占位符并将输入变量 id传到sql 中。
resultType:定义结果映射类型
测试程序:
@Test
public void testFindUserById() throws Exception {
// 核心配置文件名
String resource = "SqlMapConfig.xml";
// 通过流将核心配置文件读取进来
InputStream inputStream = Resources.getResourceAsStream(resource);
// 通过核心配置文件输入流来创建会话工厂
SqlSessionFactory factory = new SqlSessionFactoryBuilder().build(inputStream);
// 通过会话工厂创建会话
SqlSession openSession = factory.openSession();
// 第一个参数: 所调用的sql语句 = namespace + . + sql的id
// 第二个参数: 是传入参数的值
User user = openSession.selectOne("test.findUserById", 1);
System.out.println(user);
// 关闭资源
openSession.close();
}
映射文件:
在 User.xml 中添加,
测试程序:
@Test
public void testFindUserByUserName() throws Exception {
// 核心配置文件名
String resource = "SqlMapConfig.xml";
// 通过流将核心配置文件读取进来
InputStream inputStream = Resources.getResourceAsStream(resource);
// 通过核心配置文件输入流来创建会话工厂
SqlSessionFactory factory = new SqlSessionFactoryBuilder().build(inputStream);
// 通过会话工厂创建会话
SqlSession openSession = factory.openSession();
// 第一个参数: 所调用的sql语句 = namespace + . + sql的id
// 第二个参数: 是传入参数的值
List list = openSession.selectList("test.findUserByUserName", "王");
System.out.println(list);
// 关闭资源
openSession.close();
}
映射文件:
select LAST_INSERT_ID()
insert into user(username, birthday, sex, address)
values(#{username}, #{birthday}, #{sex}, #{address})
测试程序:
@Test
public void testInsertUser() throws Exception {
// 核心配置文件名
String resource = "SqlMapConfig.xml";
// 通过流将核心配置文件读取进来
InputStream inputStream = Resources.getResourceAsStream(resource);
// 通过核心配置文件输入流来创建会话工厂
SqlSessionFactory factory = new SqlSessionFactoryBuilder().build(inputStream);
// 通过会话工厂创建会话
SqlSession openSession = factory.openSession();
User user = new User();
user.setUsername("小明");
user.setBirthday(new Date());
user.setSex("1");
user.setAddress("福建平潭");
openSession.insert("test.insertUser", user);
// 提交事务(mybatis会自动开启事务,但是不知道何时提交,所以需要手动提交事务)
openSession.commit();
System.out.println(user.getId()); // 获取添加时的id值
}
也可以使用uuid实现主键,需要增加通过select uuid()得到uuid值
select uuid()
insertinto user(id,username,birthday,sex,address)
values(#{id},#{username},#{birthday},#{sex},#{address})
注意:这里使用的order是“BEFORE”
映射文件:
delete from user where id = #{id}
测试程序:
@Test
public void testDeleteUserById() throws Exception {
// 核心配置文件名
String resource = "SqlMapConfig.xml";
// 通过流将核心配置文件读取进来
InputStream inputStream = Resources.getResourceAsStream(resource);
// 通过核心配置文件输入流来创建会话工厂
SqlSessionFactory factory = new SqlSessionFactoryBuilder().build(inputStream);
// 通过会话工厂创建会话
SqlSession openSession = factory.openSession();
openSession.delete("test.deleteUserById", 32);
// 提交事务(mybatis会自动开启事务,但是不知道何时提交,所以需要手动提交事务)
openSession.commit();
}
映射文件:
update user set username = #{username} where id = #{id}
测试程序:
@Test
public void testUpdateUser() throws Exception {
// 核心配置文件名
String resource = "SqlMapConfig.xml";
// 通过流将核心配置文件读取进来
InputStream inputStream = Resources.getResourceAsStream(resource);
// 通过核心配置文件输入流来创建会话工厂
SqlSessionFactory factory = new SqlSessionFactoryBuilder().build(inputStream);
// 通过会话工厂创建会话
SqlSession openSession = factory.openSession();
User user = new User();
user.setId(35);
user.setUsername("小红");
openSession.update("test.updateUser", user);
// 提交事务(mybatis会自动开启事务,但是不知道何时提交,所以需要手动提交事务)
openSession.commit();
}
#{} 占位符:占位
如果传入的是基本数据类型,那么#{}中的变量名称可以随意写
如果传入的参数是pojo类型,那么#{}中的变量名称必须是pojo中的属性.属性.属性...
${}拼接符:字符串原样拼接
如果传入的是基本数据类型,那么${}中的变量名必须是value
如果传入的参数是pojo类型,那么${}中的变量名必须是pojo中的属性.属性.属性...
注意:使用拼接符可能造成sql注入,在页面输入的时候可以加入校验,不可输入sql关键字,不可输入空格
parameterType:传入参数类型通过parameterType属性指定
resultType:返回结果集类型通过resultType属性指定
下一篇:原生Dao开发方法