------------恢复内容开始------------
1、实体类配置文件解释:
<?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"> <!--命名空间:绑定UserDao相当于实现这个接口--> <mapper namespace="com.zhixi.dao.IUserDao"> <!--不需要再写接口的实现类,在配置文件里写sql即可--> <select id="getUserList" resultType="com.zhixi.pojo.User"> select * from mybatis.user; </select> <insert id=""></insert> </mapper>
在配置文件中写CRUD代码即可
1、namespace
namespace中的包名要和Dao/mapper接口的包名- -致!
2、select
选择,查询语句;
- id:就是对应的namespace中的方法名;
- resultType: Sq|语句执行的返回值类型!
- parameterType :参数类型!
2、编写代码
1、根据id查询用户
1、在dao层接口编写业务类型
public interface IUserDao {/** * 根据用户id查询用户 */ User getUserById(int id); }
2、编写实现类(.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"> <!--命名空间:绑定UserDao相当于实现这个接口--> <mapper namespace="com.zhixi.dao.IUserDao"> <!--不需要再写接口的实现类,在配置文件里写sql即可--> <select id="getUserById" resultType="com.zhixi.pojo.User" parameterType="int"> select * from mybatis.user where id = #{id} </select> </mapper>
3、测试类
package com.zhixi.Dao; import com.zhixi.dao.IUserDao; import com.zhixi.pojo.User; import com.zhixi.util.MybatisUtils; import org.apache.ibatis.session.SqlSession; import org.junit.Test; import java.util.List; public class IUserDaoTest { @Test public void getUserByIdTest(){ //1、获取SQLSession对象 SqlSession sqlSession = MybatisUtils.getSqlSession(); //2、获取映射器接口 IUserDao mapper = sqlSession.getMapper(IUserDao.class); //3、调用接口中根据id查询用户的方法 User user = mapper.getUserById(1); System.out.println(user); sqlSession.close(); } }
2、增删改查:增删改需要提交事务
IUserDao:编写业务功能
package com.zhixi.dao; import com.zhixi.pojo.User; import java.util.List; /** * @author zhangzhixi */ public interface IUserDao { /** * 查询所有的用户 */ List<User> getUserList(); /** * 根据用户id查询用户 */ User getUserById(int id); /** * 添加用户 */ int addUser(User user); /** * 删除用户 */ int delUser(int id); /** * 修改用户 */ int updateUser(User user); }
UserMapper.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"> <!--命名空间:绑定UserDao相当于实现这个接口--> <mapper namespace="com.zhixi.dao.IUserDao"> <!--不需要再写接口的实现类,在配置文件里写sql即可--> id是接口中的方法名 <select id="getUserList" resultType="com.zhixi.pojo.User"> /*查询所有用户*/ select * from mybatis.user; </select> <select id="getUserById" resultType="com.zhixi.pojo.User" parameterType="int"> /*根据id查询用户*/ select * from mybatis.user where id = #{id}; </select> <!--对象中的属性可以直接取出来--> <insert id="addUser" parameterType="com.zhixi.pojo.User"> /*插入用户*/ insert into mybatis.user(id,name,pwd) values (#{id},#{name},#{pwd}); </insert> <delete id="delUser" parameterType="int"> /*删除用户*/ delete from mybatis.user where id = #{id}; </delete> <update id="updateUser" parameterType="com.zhixi.pojo.User"> /*修改用户*/ update mybatis.user set name=#{name},pwd=#{pwd} where id = #{id}; </update> </mapper>
测试类:添加背景的就是固定代码
package com.zhixi.Dao; import com.zhixi.dao.IUserDao; import com.zhixi.pojo.User; import com.zhixi.util.MybatisUtils; import org.apache.ibatis.session.SqlSession; import org.junit.Test; import java.util.List; public class IUserDaoTest { @Test public void test() { //1、获取SQLSession对象 SqlSession sqlSession = MybatisUtils.getSqlSession(); IUserDao userDao = sqlSession.getMapper(IUserDao.class); List<User> userList = userDao.getUserList(); for (User user : userList) { System.out.println(user); } //关闭流 sqlSession.close(); } @Test public void getUserByIdTest() { //1、获取SQLSession对象 SqlSession sqlSession = MybatisUtils.getSqlSession(); //2、获取映射器接口 IUserDao mapper = sqlSession.getMapper(IUserDao.class); //3、调用接口中根据id查询用户的方法 User user = mapper.getUserById(1); System.out.println(user); sqlSession.close(); } @Test public void addUserTest() { //1、获取SQLSession对象 SqlSession sqlSession = MybatisUtils.getSqlSession(); //2、获取映射器接口 IUserDao mapper = sqlSession.getMapper(IUserDao.class); //3、插入 int demo = mapper.addUser(new User(6, "demo", "123")); sqlSession.commit(); if (demo > 0) { System.out.println("插入用户成功!"); } sqlSession.close(); } @Test public void delUserTest() { //1、获取SQLSession对象 SqlSession sqlSession = MybatisUtils.getSqlSession(); //2、获取映射器接口 IUserDao mapper = sqlSession.getMapper(IUserDao.class); //3、插入 int i = mapper.delUser(6); //提交事务 sqlSession.commit(); if (i > 0) { System.out.println("删除用户成功!"); } sqlSession.close(); } @Test public void updateUserTest() { //1、获取SQLSession对象 SqlSession sqlSession = MybatisUtils.getSqlSession(); //2、获取映射器接口 IUserDao mapper = sqlSession.getMapper(IUserDao.class); //3、修改 int i = mapper.updateUser(new User(4, "zhangzhixi", "zhixi158")); if (i > 0) { System.out.println("修改数据成功!"); } //提交事务 sqlSession.commit(); sqlSession.close(); } }
3、模糊查询
IUserDao:
public interface IUserDao { /** * 模糊查询 */ List<User> getUserLike(String value); }
UserMapper:
<?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"> <!--命名空间:绑定UserDao相当于实现这个接口--> <mapper namespace="com.zhixi.dao.IUserDao"> <select id="getUserLike" resultType="com.zhixi.pojo.User" parameterType="String"> /*模糊查询*/ select * from mybatis.user where name like "%"#{value}"%"; </select> </mapper>
测试:
public void selUserLikeTest() { //1、获取SQLSession对象 SqlSession sqlSession = MybatisUtils.getSqlSession(); //2、获取映射器接口 IUserDao mapper = sqlSession.getMapper(IUserDao.class); List<User> userLike = mapper.getUserLike("z"); for (User user : userLike) { System.out.println(user); } sqlSession.close(); }
找到名字中带有z的人、这种字符串拼接的方式容易造成SQL注入,需要注意,在使用时候常用:
/*模糊查询*/
select * from mybatis.user where name like #{value};
List<User> userLike = mapper.getUserLike("%z%");