一、Mybatis的查询所有和保存用户信息
1.1 映射配置文件IUserMapper.xml代码如下:
<?xml version
="1.0" encoding
="UTF-8"?>
<!DOCTYPE mapper
PUBLIC
"-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace
="cn.lhh.dao.IUserDao">
<!--查询所有用户信息
-->
<select id
="findAll" resultType
="cn.lhh.domain.User">
select
* from user
;
</select
>
<!--保存用户信息
-->
<insert id
="saveUser" parameterType
="cn.lhh.domain.User">
insert into
user(username
,birthday
,gender
) values(#
{username
},#
{birthday
},#
{gender
})
</insert
>
</mapper
>
1.2 测试代码如下
package cn
.lhh
.test
;
import cn
.lhh
.dao
.IUserDao
;
import cn
.lhh
.domain
.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
.After
;
import org
.junit
.Before
;
import org
.junit
.Test
;
import java
.io
.InputStream
;
import java
.util
.Date
;
import java
.util
.List
;
public class MybatisTest {
private InputStream is
;
private SqlSessionFactory factory
;
private SqlSession sqlSession
;
private IUserDao dao
;
@Before
public void init() throws Exception
{
is
= Resources
.getResourceAsStream("SqlMapConfig.xml");
factory
= new SqlSessionFactoryBuilder().build(is
);
sqlSession
= factory
.openSession();
dao
= sqlSession
.getMapper(IUserDao
.class);
}
@After
public void destroy() throws Exception
{
sqlSession
.commit();
sqlSession
.close();
is
.close();
}
@Test
public void testFindAll(){
List
<User> users
= dao
.findAll();
for (User user
: users
) {
System
.out
.println(user
);
}
}
@Test
public void testSave() {
User user
= new User();
user
.setUsername("李四");
user
.setBirthday(new Date());
user
.setGender("男");
dao
.saveUser(user
);
}
}
注意: 当要获取保存数据的id时,可以进行如下操作:
把保存数据的代码代码改为:
<!--保存用户信息
-->
<insert id
="saveUser" parameterType
="cn.lhh.domain.User">
<!-- keyProperty
:user中数据
,keyColumn
:数据库中数据
-->
<selectKey keyProperty
="id" keyColumn
="id" resultType
="int" order
="AFTER">
select
last_insert_id();
</selectKey
>
insert into
user(username
,birthday
,gender
) values(#
{username
},#
{birthday
},#
{gender
})
</insert
>
测试代码:
@Test
public void testSave() {
User user
= new User();
user
.setUsername("李四");
user
.setBirthday(new Date());
user
.setGender("男");
System
.out
.println("保存操作之前:" + user
);
dao
.saveUser(user
);
System
.out
.println("保存操作之后:" + user
);
}
二、Mybatis的更新和删除用户信息
2.1 映射配置文件IUserMapper.xml代码如下
<!--跟新用户信息
-->
<update id
="updateUser" parameterType
="cn.lhh.domain.User">
update user set username
=#
{username
},birthday
=#
{birthday
},gender
=#
{gender
} where id
=#
{id
}
</update
>
<!--根据用户id删除用户信息
-->
<delete id
="deleteUser" parameterType
="integer">
delete from user where id
=#
{uid
}
</delete
>
2.2 测试代码如下
@Test
public void testUpdate() {
User user
= new User();
user
.setId(5);
user
.setUsername("王五");
user
.setBirthday(new Date());
user
.setGender("女");
dao
.updateUser(user
);
}
@Test
public void testDelete() {
User user
= new User();
dao
.deleteUser(5);
}
三、Mybatis的模糊查询
第一种方法(推荐)
3.1 映射配置文件IUserMapper.xml代码如下
<!--根据名字模糊查询用户
-->
<select id
="findByName" parameterType
="string" resultType
="cn.lhh.domain.User">
select
* from user where username like #
{uName
}
</select
>
3.2 测试代码如下
@Test
public void testFindByName() {
List
<User> users
= dao
.findByName("%王%");
for (User user
: users
) {
System
.out
.println(user
);
}
}
第二种方法(不推荐)
3.3 映射配置文件IUserMapper.xml代码如下
<!--根据名字模糊查询用户
-->
<select id
="findByName" parameterType
="string" resultType
="cn.lhh.domain.User">
<!-- value是个固定值,不可以改变
-->
select
* from user where username like
'%${value}%'
</select
>
3.2 测试代码如下
@Test
public void testFindByName() {
List
<User> users
= dao
.findByName("王");
for (User user
: users
) {
System
.out
.println(user
);
}
}