一:mybatis概念1:简介 MyBatis本是apache的一个开源项目iBatis,2010年改名为 MyBatis, MyBatis 是一个基于Java的持久层框架。(操作数据库)2:优点 1:半自动化的ORM实现(实体类和SQL语句之间建立映射关系) 2:SQL代码从程序代码中彻底分离,可重用 3:与JDBC相比,减少了50%以上的代码量 4:小巧灵活、简单易学,是最简单的持久化框架 5:提供XML标签,支持编写动态SQL 6:提供映射标签,支持对象与数据库的ORM字段映射3:MyBatis缺点 1:SQL语句编写工作量大,对开发人员有一定sql技术要求 2:数据库移植性差(不同数据库,sql语句语法有所不同)
*******************************************mybatis环境搭建开始******************************************
1:导入mybatis的jar包 mybatis-3.2.2.jar mysql-connector-java-5.1.25-bin.jar
2:创建mybatis的核心配置文件(mybatis-config.xml) <configuration> <environments default="development"> <environment id="development"> <transactionManager type="JDBC" /> <dataSource type="POOLED"> <property name="driver" value="com.mysql.jdbc.Driver" /> 驱动 <property name="url" value="jdbc:mysql://localhost:3306/y2t189?useUnicode=true&characterEncoding=utf-8" /> 数据库的url <property name="username" value="root" /> 用户名 <property name="password" value="zhangjiugui" /> 密码 </dataSource> </environment> </environments> <!-- dao层的mapper映射文件(xml) --> <mappers> <mapper resource="com/accp/y2t189/dao/UserMapper.xml" /> </mappers> </configuration>
3: 实体类
4:数据访问的接口(dao)
public List<User> findUsers();
5:接口与sql语句的映射 UserMapper.xml
命名空间必须是响应接口的全路径 <mapper namespace="com.accp.y2t189.dao.UserMapper"> id必须和接口中的方法名一致 resultType返回值类型(返回集合的话,指定集合元素的类型) <select id="findUsers" resultType="com.accp.y2t189.entity.User"> SELECT * FROM users </select>
</mapper>
*******************************************************************写好的粘贴可用*************************************************************************
6:mybatis的工具类
获得SqlSession ①:读取配置文件,创建session工厂 ②:在session工厂里,获得session会话 关闭session 判断session实例是否创建,不为null,就关闭session
/** * mybatis的工具类 * 获得session */ public class MybatisUtil { public static SqlSessionFactory sf; //session工厂 //获得session工厂 static { try { Reader is= Resources.getResourceAsReader("mybatis-config.xml"); sf= new SqlSessionFactoryBuilder().build(is); } catch (Exception e) { e.printStackTrace(); } } //获得session public static SqlSession getSession(){ return sf.openSession(); } //关闭session public static void closeSession(SqlSession session){ if(session !=null){ session.close(); } } }
7: 数据操作 //获得session session=MybatisUtil.getSession(); //获得接口实例 List<User> listUser=session.getMapper(UserMapper.class).findUsers(); //关闭session
*******************************************mybatis环境搭建结束*************************************************************************************增删改开始***************************************************
/** * 查询所有数据 * @return */ public List<User> findAll();****************** <select id="findAll" resultType="entity.User"> SELECT * FROM users </select>
**************************************************
/** * 根据编号查询对象 * @param 用户表的主键 * @return 一个对象user */ public User findById(Integer userId);****************** <select id="findById" parameterType="Integer" resultType="entity.User"> select * from users where id=#{userId} </select>
**************************************************
/** * 增加用户信息 * @param 一个对象数据 * @return 数据库的影响行数 */ public Integer add(User user);****************** <insert id="add" parameterType="entity.User"> INSERT INTO users VALUES(NULL,#{userName},#{password},#{realName}) </insert>
**************************************************
/** * 根据编号删除对象 * @param 用户表的主键 * @return 数据库的影响行数 */ public Integer delete(Integer id);****************** <delete id="delete" parameterType="Integer"> delete from users where id=#{id} </delete>
**************************************************
/** * 修改用户信息 * @param 一个对象数据 * @return 数据库的影响行数 */ public Integer update(User user);****************** <!-- 根据属性的主键修改其他的属性值--> <update id="update" parameterType="entity.User"> update users set userName=#{userName} ,password=#{password},realName=#{realName} where id=#{id} </update>
**************************************************
/** * 连表查询用户信息 * 在从表的实体类中添加级联查询主表中的属性 * SELECT u.*,rolename 在用户表中添加角色表的属性-角色名称 */ public List<User> findUserAndRole(); ****************** <select id="findUserAndRole" resultType="entity.User"> SELECT u.*,rolename FROM users u INNER JOIN role r ON u.`roleid`=r.`roleid` </select>************************************************** 模糊查询
//根据角色名称,模糊查询角色列表 public List<Role> findRoleByRoleName(String rolename); <!-- <select id="findRoleByRoleName" resultMap="roleMapping"> SELECT * FROM role where roleName like concat('%',#{rolename},'%') </select> --> <select id="findRoleByRoleName" resultMap="roleMapping"> SELECT * FROM role where roleName like "%"#{rolename}"%" </select>*******************************************增删改查结束***************************************************
转载于:https://www.cnblogs.com/zhuhuibiao/p/9256731.html
相关资源:JAVA上百实例源码以及开源项目