映射文件
在User.xml来配置添加用户的sql(Statement)
<insert id="insertUser" parameterType="cn.itcast.mybatis.pojo.User">
insert into user(id,username,birthday,sex,address) value(#{id},#{username},#{birthday},#{sex},#{address})
</insert>
程序代码
public void insertUserTest() throws IOException {
//mybatis配置文件
String resource = "SqlMapConfig.xml";
//得到配置文件流
InputStream inputStream = Resources.getResourceAsStream(resource);
//创建会话工厂,传入配置文件信息
SqlSessionFactory sqlSessionFactory =new SqlSessionFactoryBuilder().build(inputStream);
//通过工厂得到SqlSession
SqlSession sqlSession = sqlSessionFactory.openSession();
//通过SqlSession来操作数据库
//第一个参数:就是映射文件中statement的id,等于命名空间+statmentid
//第二个参数:指定和映射文件中所匹配paramenterType类型的参数
//sqlSession.selectOne结果是与你映射文件resultType类型一样
User user = new User();
user.setUsername("王小军");
user.setBirthday(new Date());
user.setSex("1");
user.setAddress("河南郑州");
sqlSession.insert("test.insertUser",user);
//提交事务
sqlSession.commit();
sqlSession.close();
}
自增组件
mysql自增组件,执行insert提交之前,生成一个自增主键
通过函数获取到刚到插入记录的组件
LAST_INSERT_ID{}
在insert之后调用
-->
<!--
将插入数据的主键返回,返回到user对象中
SELECT LAST_INSERT_ID()得到刚insert进去记录的主键值,只适用于自增组件
keyProperty:将查询到的主键值设置到parameterType指定的对象的属性
order是执行顺序,相对于insert语句
-->
<insert id="insertUser" parameterType="cn.itcast.mybatis.pojo.User">
<selectKey keyProperty="id" order="AFTER">
SELECT LAST_INSERT_ID()
</selectKey>
insert into user(username,birthday,sex,address) value(#{username},#{birthday},#{sex},#{address})
</insert>
修改
非自增组件的返回
使用uuid,使用mysql的uuid函数生成主键,需要修改表中id的字段类型为String,长度设置成35位
执行思路,先通过uuid查询到主键,将主键输入到sql语句中
执行uuid语句在insert之前
删除用户
映射文件
package cn.itcast.mybatis.first;
import cn.itcast.mybatis.pojo.User;
import org.apache.ibatis.io.Resources;
import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.session.SqlSessionFactoryBuilder;
import org.junit.Test;
import java.util.Date;
import java.util.List;
import java.io.IOException;
import java.io.InputStream;
public class MybatisFirst{
//根据id查血用户信息,得到一条记录结果
@Test
public void FindUserByIdTest() throws IOException {
//mybatis配置文件
String resource = "SqlMapConfig.xml";
//得到配置文件流
InputStream inputStream = Resources.getResourceAsStream(resource);
//创建会话工厂,传入配置文件信息
SqlSessionFactory sqlSessionFactory =new SqlSessionFactoryBuilder().build(inputStream);
//通过工厂得到SqlSession
SqlSession sqlSession = sqlSessionFactory.openSession();
//通过SqlSession来操作数据库
//第一个参数:就是映射文件中statement的id,等于命名空间+statmentid
//第二个参数:指定和映射文件中所匹配paramenterType类型的参数
//sqlSession.selectOne结果是与你映射文件resultType类型一样
User user = sqlSession.selectOne("test.findUserById",1);
System.out.println("+++++++++++++++++++++++++++++");
System.out.println(user);
//释放支援
sqlSession.close();
}
//根据用户模糊查询用户列表
@Test
public void findUserByName() throws IOException {
//mybatis配置文件
String resource = "SqlMapConfig.xml";
//得到配置文件流
InputStream inputStream = Resources.getResourceAsStream(resource);
//创建会话工厂,传入配置文件信息
SqlSessionFactory sqlSessionFactory =new SqlSessionFactoryBuilder().build(inputStream);
//通过工厂得到SqlSession
SqlSession sqlSession = sqlSessionFactory.openSession();
//通过SqlSession来操作数据库
//第一个参数:就是映射文件中statement的id,等于命名空间+statmentid
//第二个参数:指定和映射文件中所匹配paramenterType类型的参数
//sqlSession.selectOne结果是与你映射文件resultType类型一样
List<User> list = sqlSession.selectList("test.findUserByName","小明");
System.out.println(list);
sqlSession.close();
}
@Test
public void insertUserTest() throws IOException {
//mybatis配置文件
String resource = "SqlMapConfig.xml";
//得到配置文件流
InputStream inputStream = Resources.getResourceAsStream(resource);
//创建会话工厂,传入配置文件信息
SqlSessionFactory sqlSessionFactory =new SqlSessionFactoryBuilder().build(inputStream);
//通过工厂得到SqlSession
SqlSession sqlSession = sqlSessionFactory.openSession();
//通过SqlSession来操作数据库
//第一个参数:就是映射文件中statement的id,等于命名空间+statmentid
//第二个参数:指定和映射文件中所匹配paramenterType类型的参数
//sqlSession.selectOne结果是与你映射文件resultType类型一样
User user = new User();
user.setUsername("马铭泽");
user.setBirthday(new Date());
user.setSex("1");
user.setAddress("河南郑州");
sqlSession.insert("test.insertUser",user);
//提交事务
sqlSession.commit();
sqlSession.close();
}
@Test
public void deleteUserTest() throws IOException {
//mybatis配置文件
String resource = "SqlMapConfig.xml";
//得到配置文件流
InputStream inputStream = Resources.getResourceAsStream(resource);
//创建会话工厂,传入配置文件信息
SqlSessionFactory sqlSessionFactory =new SqlSessionFactoryBuilder().build(inputStream);
//通过工厂得到SqlSession
SqlSession sqlSession = sqlSessionFactory.openSession();
//通过SqlSession来操作数据库
//第一个参数:就是映射文件中statement的id,等于命名空间+statmentid
//第二个参数:指定和映射文件中所匹配paramenterType类型的参数
//sqlSession.selectOne结果是与你映射文件resultType类型一样
sqlSession.delete("test.deleteUser",29);
//提交事务
sqlSession.commit();
sqlSession.close();
}
@Test
public void updateUserTest() throws IOException {
//mybatis配置文件
String resource = "SqlMapConfig.xml";
//得到配置文件流
InputStream inputStream = Resources.getResourceAsStream(resource);
//创建会话工厂,传入配置文件信息
SqlSessionFactory sqlSessionFactory =new SqlSessionFactoryBuilder().build(inputStream);
//通过工厂得到SqlSession
SqlSession sqlSession = sqlSessionFactory.openSession();
//通过SqlSession来操作数据库
//第一个参数:就是映射文件中statement的id,等于命名空间+statmentid
//第二个参数:指定和映射文件中所匹配paramenterType类型的参数
//sqlSession.selectOne结果是与你映射文件resultType类型一样
User user = new User();
user.setId(30);
user.setUsername("马三");
user.setBirthday(new Date());
user.setSex("1");
user.setAddress("河南郑州");
sqlSession.insert("test.updateUser",user);
//提交事务
sqlSession.commit();
sqlSession.close();
}
}