版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/linzhaoliangyan/article/details/88637862
* dao
public interface Userdao {
/**
* 根据用户sex查询用户信息
* @param sex
* @return
*/
User findUserBySex(String sex);
/**
* 查询所有的用户
* @return
*/
List<User> findUsers();
/**
* 根据用户名称模糊查询用户列表
* @param name
* @return
*/
List<User> findListUserByLikeName(String name);
/**
* 添加用户
* @param user
*/
void insert(User user);
/**
* 删除用户
* @param id
*/
void delete(int id);
/**
* 修改用户:根据id,修改用户名
* @param id
* @param username
*/
void update(int id, String username);
}
* 实现类
public class UserDaoImpl implements Userdao {
@Override
public User findUserBySex(String sex) {
SqlSession sqlSession = MyBatisUtils.getSqlSession();
User user = sqlSession.selectOne("hx.findUserBySex",sex);
MyBatisUtils.close(sqlSession);
return user;
}
@Override
public List<User> findUsers() {
SqlSession sqlSession = MyBatisUtils.getSqlSession();
List<User> users = sqlSession.selectList("hx.findUsers");
// 关闭SqlSession
MyBatisUtils.close(sqlSession);
return users;
}
@Override
public List<User> findListUserByLikeName(String name) {
SqlSession sqlSession = MyBatisUtils.getSqlSession();
List<User> users = sqlSession.selectList("hx.findUserByLikeName",name);
return users;
}
@Override
public void insert(User user) {
SqlSession sqlSession = MyBatisUtils.getSqlSession();
sqlSession.insert("hx.insertUser",user);
sqlSession.commit();
// 关闭SqlSession
MyBatisUtils.close(sqlSession);
}
@Override
public void delete(int id) {
SqlSession sqlSession = MyBatisUtils.getSqlSession();
sqlSession.delete("hx.deleteUserById",id);
sqlSession.commit();
// 关闭SqlSession
MyBatisUtils.close(sqlSession);
}
@Override
public void update(int id, String username) {
SqlSession sqlSession = MyBatisUtils.getSqlSession();
User user=new User();
user.setId(id);
user.setUsername(username);
sqlSession.update("updateUser",user);
sqlSession.commit();
// 关闭SqlSession
MyBatisUtils.close(sqlSession);
}
}
* sql配置文件
<?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="hx">
<select id="findUserNameBySex" resultType="string">
SELECT username FROM
USER WHERE sex=#{sex}
</select>
<select id="findUserBySex" resultType="string">
SELECT id,username,psw,sex FROM
USER WHERE sex=#{sex}
</select>
<select id="findUsers" resultType="com.hx.hx02.bean.User">
SELECT * FROM user;
</select>
<select id="findUserByLikeName" parameterType="string"
resultType="com.hx.hx02.bean.User">
SELECT * FROM USER WHERE username LIKE "%${value}%";
</select>
<insert id="insertUser" parameterType="com.hx.hx02.bean.User">
INSERT INTO USER(username,psw,sex) VALUES(#{username},#{psw},#{sex});
</insert>
<delete id="deleteUserById" parameterType="int">
DELETE FROM USER WHERE id=#{id};
</delete>
<update id="updateUser" parameterType="com.hx.hx02.bean.User">
UPDATE USER SET username=#{username} WHERE id=#{id};
</update>
</mapper>
*单元测试
public class UserDaoTest1 {
/**
* 查询所有user
*/
@Test
public void test1(){
Userdao userdao=new UserDaoImpl();
List<User> users = userdao.findUsers();
for(User user:users){
System.out.println(user);
}
}
/**
* 模糊查询
*/
@Test
public void test2(){
Userdao userdao=new UserDaoImpl();
List<User> users = userdao.findListUserByLikeName("xiao");
for(User user:users){
System.out.println(user);
}
}
/**
* 增加用户
*/
@Test
public void test3(){
Userdao userdao=new UserDaoImpl();
User user=new User();
user.setUsername("刘德华");
user.setPsw("123");
user.setSex('男');
userdao.insert(user);
}
/**
* 删除用户
*/
@Test
public void test4(){
Userdao userdao=new UserDaoImpl();
userdao.delete(2);
}
/**
* 更新用户
*/
@Test
public void test5(){
Userdao userdao=new UserDaoImpl();
userdao.update(3,"daming");
}
}
* mapper
Mapper代理的开发规范
1、mapper接口的全限定名要和mapper映射文件的namespace值一致。
2、mapper接口的方法名称要和mapper映射文件的statement的id一致。
3、mapper接口的方法参数类型要和mapper映射文件的statement的parameterType的值一致,而且它的参数是一个。
4、mapper接口的方法返回值类型要和mapper映射文件的statement的resultType的值一致。
public interface UserMapper {
/**
* 根据用户sex查询用户信息
* @param sex
* @return
*/
User findUserBySex(String sex);
/**
* 查询所有的用户
* @return
*/
List<User> findUsers();
/**
* 根据用户名称模糊查询用户列表
* @param name
* @return
*/
List<User> findUserByLikeName(String name);
/**
* 添加用户
* @param user
*/
void insertUser(User user);
/**
* 删除用户
* @param id
*/
void deleteUserById(int id);
/**
* 修改用户:根据id,修改用户名
*
*/
void updateUser(User user);
}
<?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="com.hx.hx02.mapper.UserMapper">
<select id="findUserNameBySex" resultType="string">
SELECT username FROM
USER WHERE sex=#{sex}
</select>
<select id="findUserBySex" resultType="string">
SELECT id,username,psw,sex FROM
USER WHERE sex=#{sex}
</select>
<select id="findUsers" resultType="com.hx.hx02.bean.User">
SELECT * FROM user;
</select>
<select id="findUserByLikeName" parameterType="string"
resultType="com.hx.hx02.bean.User">
SELECT * FROM USER WHERE username LIKE "%${value}%";
</select>
<insert id="insertUser" parameterType="com.hx.hx02.bean.User">
INSERT INTO USER(username,psw,sex) VALUES(#{username},#{psw},#{sex});
</insert>
<delete id="deleteUserById" parameterType="int">
DELETE FROM USER WHERE id=#{id};
</delete>
<update id="updateUser" parameterType="com.hx.hx02.bean.User">
UPDATE USER SET username=#{username} WHERE id=#{id};
</update>
</mapper>
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE configuration
PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-config.dtd">
<configuration>
<properties resource="dbconfig.properties"/>
<environments default="development">
<environment id="development">
<transactionManager type="JDBC" />
<dataSource type="POOLED">
<property name="driver" value="${driver}" />
<property name="url"
value="${url}" />
<property name="username" value="${username}" />
<property name="password" value="${password}" />
</dataSource>
</environment>
</environments>
<mappers>
<mapper resource="mapper/User.xml" />
<mapper resource="mapper/User1.xml" />
</mappers>
</configuration>
public class UserDaoTest2 {
/**
* 查询所有user
*/
@Test
public void test1(){
SqlSession session = MyBatisUtils.getSqlSession();
UserMapper userMapper = session.getMapper(UserMapper.class);
List<User> users = userMapper.findUsers();
for(User user:users){
System.out.println(user);
}
MyBatisUtils.close(session);
}
/**
* 模糊查询
*/
@Test
public void test2(){
SqlSession session = MyBatisUtils.getSqlSession();
UserMapper userMapper = session.getMapper(UserMapper.class);
List<User> users = userMapper.findUserByLikeName("xiao");
for(User user:users){
System.out.println(user);
}
MyBatisUtils.close(session);
}
/**
* 增加用户
*/
@Test
public void test3(){
SqlSession session = MyBatisUtils.getSqlSession();
UserMapper userMapper = session.getMapper(UserMapper.class);
User user=new User();
user.setUsername("刘德华123");
user.setPsw("123");
user.setSex('男');
userMapper.insertUser(user);
session.commit();
MyBatisUtils.close(session);
}
/**
* 删除用户
*/
@Test
public void test4(){
SqlSession session = MyBatisUtils.getSqlSession();
UserMapper userMapper = session.getMapper(UserMapper.class);
userMapper.deleteUserById(3);
session.commit();
MyBatisUtils.close(session);
}
/**
* 更新用户
*/
@Test
public void test5(){
SqlSession session = MyBatisUtils.getSqlSession();
UserMapper userMapper = session.getMapper(UserMapper.class);
User user=new User();
user.setId(6);
user.setUsername("daming123");
userMapper.updateUser(user);
session.commit();
MyBatisUtils.close(session);
}
}
* 扩展知识:代理(静态代理,动态代理, ....)
* 参考扩展代理文档