MyBatis例题
模糊查找
User.xml
<!-- 根据用户名称模糊查询用户列表 -->
<!-- ${}:表示一个sql的连接符 -->
<!-- ${value}:里面的value表示输入参数的参数名称,如果该参数是简单类型,那么${}里面的参数名称必须是value -->
<!-- ${}这种写法存在sql注入的风险,所以要慎用!!但是在一些场景下,必须使用${},比如排序时,动态传入排序的列名,${}会原样输出,不加解释 -->
<select id="findUsersByName" parameterType="java.lang.String"
resultType="test.User">
SELECT * FROM USER WHERE username LIKE '%${value}%'
</select>
@Test
public void findUserByNameTest() throws Exception{
//读取配置文件
//全局配置文件的路径
String resource = "SqlMapConfig.xml";
InputStream inputStream = Resources.getResourceAsStream(resource);
//创建SqlSessionFactory
SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
//创建SqlSession
SqlSession sqlSession = sqlSessionFactory.openSession();
//调用SqlSession的增删改查方法
//第一个参数:表示statement的唯一标示
List<User> list = sqlSession.selectList("test.findUsersByName", "小明");
System.out.println(list);
//关闭资源
sqlSession.close();
}
插入数据,一般为插入一个对象
User.xml
<insert id="insertUser" parameterType="test.User">
INSERT INTO USER (username,birthday,sex,address) VALUE (#{username}, #{birthday},#{sex},#{address})
</insert>
@Test
public void insertUserTest() throws Exception{
//读取配置文件
//全局配置文件的路径
String resource = "SqlMapConfig.xml";
InputStream inputStream = Resources.getResourceAsStream(resource);
//创建SqlSessionFactory
SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
//创建SqlSession
SqlSession sqlSession = sqlSessionFactory.openSession();
//调用sqlsession的增删改查方法
//第一个参数:表示statement的唯一标示
User user = new User();
user.setUsername("yaoyan");
user.setAddress("beijing");
sqlSession.insert("test.insertUser", user);
// 提交事务
sqlSession.commit();
//关闭资源
sqlSession.close();
}
返回自增主键值
User.xml
<!-- 添加用户 -->
<!-- selectKey:查询主键,在标签内需要输入查询主键的sql -->
<!-- order:指定查询主键的sql和insert语句的执行顺序,相当于insert语句来说 -->
<!-- LAST_INSERT_ID:该函数是mysql的函数,获取自增主键的ID,它必须配合insert语句一起使用 -->
<insert id="insertUser1" parameterType="test.User">
<selectKey keyProperty="id" resultType="int" order="AFTER">
SELECT LAST_INSERT_ID()
</selectKey>
INSERT INTO USER
(username,birthday,sex,address)
VALUES(#{username},#{birthday},#{sex},#{address})
</insert>
@Test
public void insertUser1Test() throws Exception{
//读取配置文件
//全局配置文件的路径
String resource = "SqlMapConfig.xml";
InputStream inputStream = Resources.getResourceAsStream(resource);
//创建SqlSessionFactory
SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
//创建SqlSession
SqlSession sqlSession = sqlSessionFactory.openSession();
//调用sqlsession的增删改查方法
//第一个参数:表示statement的唯一标示
User user = new User();
user.setUsername("yaoyan");
user.setAddress("beijing");
sqlSession.insert("test.insertUser1", user);
System.out.println("user.getId() = " + user.getId());
// 提交事务
sqlSession.commit();
//关闭资源
sqlSession.close();
}
删除操作
User.xml
<!-- 根据ID删除用户 -->
<delete id="deleteUser" parameterType="int">
DELETE FROM USER WHERE id= #{id}
</delete>
@Test
public void deleTest() throws Exception{
//读取配置文件
//全局配置文件的路径
String resource = "SqlMapConfig.xml";
InputStream inputStream = Resources.getResourceAsStream(resource);
//创建SqlSessionFactory
SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
//创建SqlSession
SqlSession sqlSession = sqlSessionFactory.openSession();
//调用sqlsession的增删改查方法
//第一个参数:表示statement的唯一标示
sqlSession.delete("test.deleteUser", 28);
// 提交事务
sqlSession.commit();
//关闭资源
sqlSession.close();
}
更新操作
User.xml
<update id="updateUser" parameterType="test.User">
UPDATE USER SET username = #{username},sex=#{sex} WHERE id=#{id}
</update>
@Test
public void updateTest() throws Exception{
//读取配置文件
//全局配置文件的路径
String resource = "SqlMapConfig.xml";
InputStream inputStream = Resources.getResourceAsStream(resource);
//创建SqlSessionFactory
SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
//创建SqlSession
SqlSession sqlSession = sqlSessionFactory.openSession();
User user = new User();
user.setId(29);
user.setUsername("chaoge");
user.setAddress("shenyang");
user.setSex("1");
//调用sqlsession的增删改查方法
//第一个参数:表示statement的唯一标示
sqlSession.update("test.updateUser", user);
// 提交事务
sqlSession.commit();
//关闭资源
sqlSession.close();
}