mybatis入门

来源:互联网 发布:dsd播放软件 编辑:程序博客网 时间:2024/06/03 19:16

一:简介

MyBatis是一个优秀的持久层框架,它对jdbc的操作数据库的过程进行封装,使开发者只需要关注 SQL 本身,而不需要花费精力去处理例如注册驱动、创建connection、创建statement、手动设置参数、结果集检索等jdbc繁杂的过程代码。Mybatis通过xml或注解的方式将要执行的各种statement(statement、preparedStatemnt、CallableStatement)配置起来,并通过java对象和statement中的sql进行映射生成最终执行的sql语句,最后由mybatis框架执行sql并将结果映射成java对象并返回。

二:原理

三:环境搭建

1:开发jar包:

2.SqlMapConfig.xml

<?xml version="1.0" encoding="UTF-8" ?><!DOCTYPE configurationPUBLIC "-//mybatis.org//DTD Config 3.0//EN""http://mybatis.org/dtd/mybatis-3-config.dtd"><configuration><!-- 和spring整合后 environments配置将废除,要用到第三方的数据源配置--><!-- mybatis运行环境配置 --><environments default="development"><environment id="development"><!-- 使用jdbc事务管理--><transactionManager type="JDBC" /><!-- mybatis自身的数据库连接池--><dataSource type="POOLED"><property name="driver" value="${jdbc.driver}" /><property name="url" value="${jdbc.url}" /><property name="username" value="${jdbc.username}" /><property name="password" value="${jdbc.password}" /></dataSource></environment></environments><!-- mapper映射配置 --><mappers><mapper resource="sqlmap/User.xml"/></mappers></configuration>
3.User.xml

<?xml version="1.0" encoding="UTF-8" ?><!DOCTYPE mapperPUBLIC "-//mybatis.org//DTD Mapper 3.0//EN""http://mybatis.org/dtd/mybatis-3-mapper.dtd"><mapper namespace="test"><select id="findUserById" parameterType="int" resultType="cn.itcast.mybatis.po.User">select * from user where id=#{id}</select><select id="findUserByName" parameterType="java.lang.String" resultType="cn.itcast.mybatis.po.User">select * from user where username like '%${value}%'</select><insert id="insertUser" parameterType="cn.itcast.mybatis.po.User"><selectKey order="AFTER" resultType="int" keyProperty="id"  >select last_insert_id()</selectKey>insert into user(username,birthday,sex,address) values(#{username},#{birthday},#{sex},#{address})</insert><!-- 删除用户 --><delete id="deleteUser"  parameterType="int" >delete from user where id=#{value}</delete><update id="updateUser" parameterType="cn.itcast.mybatis.po.User">update user set username=#{username},birthday=#{birthday},sex=#{sex},address=#{address} where id=#{id}</update></mapper>
4.dao实现类

public class UserDaoImpl implements UserDao {private SqlSessionFactory sqlSessionFactory;//通过构造 方法进行注入//将来和spring整合后,通过set方法进行注入public UserDaoImpl(SqlSessionFactory sqlSessionFactory){this.sqlSessionFactory = sqlSessionFactory;}@Overridepublic User findUserById(int id) throws Exception {SqlSession sqlSession = null;User user = null;try {sqlSession = sqlSessionFactory.openSession();// 通过sqlsession操作数据库// 第一个参数:statemnet的id,是namespace+"."+statemnet的id// 第二个参数:输入 参数user = sqlSession.selectOne("test.findUserById", 1);System.out.println(user);} catch (Exception e) {// TODO: handle exception}finally{if(sqlSession!=null){sqlSession.close();}}return user;}@Overridepublic List<User> findUserByName(String name) throws Exception {SqlSession sqlSession = null;List<User> list = null;try {sqlSession = sqlSessionFactory.openSession();list = sqlSession.selectList("test.findUserByName", name);} catch (Exception e) {// TODO: handle exception}finally{if(sqlSession!=null){sqlSession.close();}}return list;}@Overridepublic void insertUser(User user) throws Exception {SqlSession sqlSession = null;try {sqlSession = sqlSessionFactory.openSession();sqlSession.insert("test.insertUser", user);//得到用户新记录的idSystem.out.println(user.getId());// 提交sqlSession.commit();} catch (Exception e) {// TODO: handle exception}finally{if(sqlSession!=null){sqlSession.close();}}}@Overridepublic void updateUser(User user) throws Exception {SqlSession sqlSession = null;try {sqlSession = sqlSessionFactory.openSession();sqlSession.update("test.updateUser", user);// 提交sqlSession.commit();} catch (Exception e) {// TODO: handle exception}finally{if(sqlSession!=null){sqlSession.close();}}}}

5.单元测试

// 根据用户id查询用户信息@Testpublic void findUserById() throws IOException {// 全局配置文件String resource = "SqlMapConfig.xml";// 创建配置文件的流InputStream inputStream = Resources.getResourceAsStream(resource);// 根据配置文件创建sqlSessionFactorySqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);// 创建SqlSessionSqlSession sqlSession = sqlSessionFactory.openSession();// 通过sqlsession操作数据库// 第一个参数:statemnet的id,是namespace+"."+statemnet的id// 第二个参数:输入 参数User user = sqlSession.selectOne("test.findUserById", 1);System.out.println(user);// 关闭sqlsessionsqlSession.close();}// 根据用户名称询用户信息@Testpublic void findUserByName() throws IOException {// 全局配置文件String resource = "SqlMapConfig.xml";// 创建配置文件的流InputStream inputStream = Resources.getResourceAsStream(resource);// 根据配置文件创建sqlSessionFactorySqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);// 创建SqlSessionSqlSession sqlSession = sqlSessionFactory.openSession();// 通过sqlsession操作数据库// 第一个参数:statemnet的id,是namespace+"."+statemnet的id// 第二个参数:输入 参数List<User> list = sqlSession.selectList("test.findUserByName", "张");System.out.println(list);// 关闭sqlsessionsqlSession.close();}// 添加用户@Testpublic void insertUser() throws IOException {// 全局配置文件String resource = "SqlMapConfig.xml";// 创建配置文件的流InputStream inputStream = Resources.getResourceAsStream(resource);// 根据配置文件创建sqlSessionFactorySqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);// 创建SqlSessionSqlSession sqlSession = sqlSessionFactory.openSession();// 通过sqlsession操作数据库// 构造 一个user对象作为输入 参数User user = new User();user.setUsername("燕青");user.setAddress("河南郑州");sqlSession.insert("test.insertUser", user);//得到用户新记录的idSystem.out.println(user.getId());// 提交sqlSession.commit();// 关闭sqlsessionsqlSession.close();}// 删除@Testpublic void deleteUser() throws IOException {// 全局配置文件String resource = "SqlMapConfig.xml";// 创建配置文件的流InputStream inputStream = Resources.getResourceAsStream(resource);// 根据配置文件创建sqlSessionFactorySqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);// 创建SqlSessionSqlSession sqlSession = sqlSessionFactory.openSession();// 通过sqlsession操作数据库sqlSession.delete("test.deleteUser", 44);// 提交sqlSession.commit();// 关闭sqlsessionsqlSession.close();}// 更新// 添加用户@Testpublic void updateUser() throws IOException {// 全局配置文件String resource = "SqlMapConfig.xml";// 创建配置文件的流InputStream inputStream = Resources.getResourceAsStream(resource);// 根据配置文件创建sqlSessionFactorySqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);// 创建SqlSessionSqlSession sqlSession = sqlSessionFactory.openSession();// 通过sqlsession操作数据库// 构造 一个user对象作为输入 参数,这里更新用户id必须设置User user = new User();user.setId(45);user.setUsername("苗润土");user.setAddress("河南郑州");sqlSession.update("test.updateUser", user);// 提交sqlSession.commit();// 关闭sqlsessionsqlSession.close();}


四:总结

这样就做了一个简单的入门,入门很简单,后续一些的内容就略微复杂了。

0 0
原创粉丝点击