mybatis 增删改查操作
2015-08-04 16:16
405 查看
主要目标:对数据库进行CRUD的操作
1.javaBean User
其中sqlSession.方法中的sqlSession.selectOne("test.findById", id); 第一个参数是user.xml中的命名空间+对应的id值
1.javaBean User
package cn.itcast.domain; import java.util.Date; public class User { private int id; private String username; private Date birthday; private String sex; //省略getter setter方法 private String address; }2.UserDao 主要定义接口
package cn.itcast.dao; import java.util.List; import cn.itcast.domain.User; public interface UserDao { public User findUserById(int id);//根据用户id查询数据库 public List<User> findUserByName(String name);//模糊查询 public void deleteUser(int id);//根据id删除用户 public void updateUser(User user);//更新用户 public void inserUser(User user);//向数据库中插入一条数据 }3.UserDaoImpl 实现上述定义的接口--对于创建SqlSessionFactory用来创建SqlSession的工厂类进行构造方法注入
其中sqlSession.方法中的sqlSession.selectOne("test.findById", id); 第一个参数是user.xml中的命名空间+对应的id值
package cn.itcast.dao.impl; import java.util.List; import org.apache.ibatis.session.SqlSession; import org.apache.ibatis.session.SqlSessionFactory; import cn.itcast.dao.UserDao; import cn.itcast.domain.User; public class UserDaoImpl implements UserDao { //必须注入SqlSessionFactory private SqlSessionFactory sqlSessionFactory; public UserDaoImpl(SqlSessionFactory sqlSessionFactory){ this.sqlSessionFactory=sqlSessionFactory; } public User findUserById(int id) { SqlSession sqlSession = sqlSessionFactory.openSession(); User user=sqlSession.selectOne("test.findById", id); sqlSession.close(); return user; } public List<User> findUserByName(String name) { SqlSession sqlSession=sqlSessionFactory.openSession(); List<User> users = sqlSession.selectList("test.findUserByName", name); sqlSession.close(); return users; } public void updateUser(User user) { SqlSession sqlSession=sqlSessionFactory.openSession(); sqlSession.update("test.updateUser", user); sqlSession.commit(); sqlSession.close(); } public void deleteUser(int id) { SqlSession sqlSession=sqlSessionFactory.openSession(); sqlSession.delete("test.deleteUser", id); sqlSession.commit(); sqlSession.close(); } public void inserUser(User user) { SqlSession sqlSession=sqlSessionFactory.openSession(); sqlSession.insert("test.insertUser", user); sqlSession.commit(); sqlSession.close(); } }4.User.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="test"> <!-- 在映射文件中配置很多sql语句 --> <!-- 需求:通过id查询用户表的记录 --> <!-- 通过select执行数据库查询 --> <!-- id:标识 映射文件中的sql 将sql语句封装到mappedStatement对象中,因此将id称为statement的id parameterType:指定输入参数的类型,这里指定int类型 #{} 标识一个占位符 #{id}其中的id标识接受输入的参数,参数名称就是id,如果输入类型参数是简单类型#{id}的id可以是value或者其他任意值 resultType:指定sql输出结果的所映射的java对象类型,select 指定resultType将表中的单条记录封装成一个java对象 --> <select id="findById" parameterType="int" resultType="cn.itcast.domain.User"> select * from user where id=#{id} </select> <!--根据用户名模糊查询 可以返回多条记录 --> <!-- resultType:指定就是单条记录所映射的java对象类型 --> <!-- ${}:表示拼接sql串,将接受到参数的内容不加任何修饰拼接在sql中 使用${}拼接sql,引起sql注入 ${value}:接受输入参数的内容,如果传入类型是简单类型,${}中只能使用value --> <select id="findUserByName" parameterType="java.lang.String" resultType="cn.itcast.domain.User"> select * from user where username like "%${value}%" </select> <update id="updateUser" parameterType="cn.itcast.domain.User"> update user set username=#{username},birthday=#{birthday},sex=#{sex},address=#{address} where id=#{id} </update> <delete id="deleteUser" parameterType="int"> delete from user where id=#{id} </delete> <insert id="insertUser" parameterType="cn.itcast.domain.User"> insert into user(username,birthday,sex,address) value(#{username},#{birthday},#{sex},#{address}); </insert> </mapper>测试数据
package cn.itcast.test; import java.io.IOException; import java.io.InputStream; import java.util.Date; import org.apache.ibatis.io.Resources; import org.apache.ibatis.session.SqlSessionFactory; import org.apache.ibatis.session.SqlSessionFactoryBuilder; import org.junit.Before; import org.junit.Test; import cn.itcast.dao.UserDao; import cn.itcast.dao.impl.UserDaoImpl; import cn.itcast.domain.User; public class UserDaoImplTest { private static SqlSessionFactory sqlSessionFactory; static InputStream in; static{ //mybatis的配置文件 String resource="SqlMapConfig.xml"; try { //得到配置文件流 in = Resources.getResourceAsStream(resource); } catch (IOException e) { throw new RuntimeException(); } //1.创建回话工厂,传入的配置文件信息 sqlSessionFactory=new SqlSessionFactoryBuilder().build(in); } @Test public void testFindUserById() { UserDao userDao=new UserDaoImpl(sqlSessionFactory); User user = userDao.findUserById(1); System.out.println(user); } @Test public void testFindUserByName() { } @Test public void testUpdateUser() { } @Test public void testDeleteUser() { UserDao userDao=new UserDaoImpl(sqlSessionFactory); userDao.deleteUser(1); } @Test public void testInserUser() { UserDao userDao=new UserDaoImpl(sqlSessionFactory); User user=new User(); user.setUsername("程崇树"); user.setBirthday(new Date()); user.setSex("男"); user.setAddress("广西北海"); userDao.inserUser(user); } }
相关文章推荐
- Linux命令之find
- UVa1605 - Building for UN(构造法)
- GPL和AGPLv3的区别
- 多态引用类型转换
- Windows下Core Audio APIS 音频应用开发(四)
- 【Unity技巧】统一管理回调函数——观察者模式
- 央妈的新规让我无法证明我是我
- 杭电 2553 N皇后问题 递归回溯 打表 附解题思路
- make menuconfig提示'make menuconfig' requires the ncurses libraries.
- HashBiMap源码解析
- 一个插件让你在chrome直接运行apk
- android缓存框架SimpleCache
- ubuntu oracle jdk
- 《ES6基础教程》之 map、forEach、filter indexOf 用法
- python socket编程
- iOS中几种数据持久化方案-1
- Android4.4深入浅出之SurfaceFlinger与Client通信框架(一)
- memcached for windows 修改端口和最大内存,以及常用命令
- c++ const关键字至少有下列n个作用
- xcode 中的LLDB常用调试命令