一、MyBaits介绍
   MyBatis 是一个可以自定义SQL、存储过程和高级映射的持久层框架。MyBatis 摒除了大部分的JDBC代码、手工设置参数和结果集重获。MyBatis 只使用简单的XML 和注解来配置和映
射基本数据类型、Map 接口和POJO 到数据库记录。相对Hibernate和Apache OJB等“一站式”ORM解决方案而言,Mybatis 是一种“半自动化”的ORM实现。
   与hibernate对比,MyBatis更基础,要求使用者自己控制的东西更多。mybatis完成了基本的一些ORM概念,但是没有Hibernate那么完善。要使用mybatis,程序员的关注点更集中于SQL和数据库结构设计。mybatis没有hibernate使用起来那么面向对象,所以,在使用mybatis的时候,hibernate的一些思想和设计需要改变。

二、环境配置

  1、引入jar包

  2、配置web.xml

<!-- 加载spring的配置文件 -->
<listener>
<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>classpath:spring.xml</param-value>
</context-param>

  3、编写连接数据配置文件 jdbc.properties

  4、编写spring.xml配置文件

<!-- 数据库配置文件位置 -->
<context:property-placeholder location="classpath:jdbc.properties" /> <!-- 配置dbcp数据源 -->
<bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close">
<property name="driverClassName" value="${jdbc.driverClassName}" />
<property name="url" value="${jdbc.url}" />
<property name="username" value="${jdbc.username}" />
<property name="password" value="${jdbc.password}" />
</bean>
<!-- 配置mybitasSqlSessionFactoryBean -->
<bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
<property name="dataSource" ref="dataSource" />
<property name="configLocation" value="classpath:mybatis.xml"></property>
</bean> <!-- 配置SqlSessionTemplate -->
<bean id="sqlSessionTemplate" class="org.mybatis.spring.SqlSessionTemplate">
<constructor-arg name="sqlSessionFactory" ref="sqlSessionFactory" />
</bean> <!-- 事务配置 -->
<bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
<property name="dataSource" ref="dataSource" />
</bean> <!-- 使用注解方式 -->
<bean class="org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor"></bean> <!-- 配置dao -->
<bean id="userDao" class="com.mybaits.dao.impl.UserDaoImpl">
<property name="sqlSessionTemplate" ref="sqlSessionTemplate"></property>
</bean> <!-- 配置service --> <bean id="userService" class="com.mybaits.service.impl.UserServiceImpl">
<property name="userDao" ref="userDao"></property>
</bean>

三、CRUD操作

  1、编写实体类User  

        private int id;
private String username;
private String usernumber;
private String loginname;
private String loginpassword;
private String sex;
private Date birthday;
       //.......此处省略get/set方法

  2、Dao层接口及实现类

public interface IUserDao {

        public void addUser(User user);

        public void deleteUser(String usernumber);

        public void updateUser(User user);

        public User findUser(String usernumber);

        public List<User> findUser();
}
public class UserDaoImpl implements IUserDao{

    private SqlSessionTemplate sqlSessionTemplate;

    public void setSqlSessionTemplate(SqlSessionTemplate sqlSessionTemplate) {
this.sqlSessionTemplate = sqlSessionTemplate;
} @Override
public void addUser(User user) {
// TODO Auto-generated method stub
sqlSessionTemplate.insert("addUser", user);
} @Override
public void deleteUser(String usernumber) {
// TODO Auto-generated method stub
sqlSessionTemplate.delete("deleteUser",usernumber);
}
//........此处省略其他方法
//sqlSessionTemplate.delete("deleteUser",usernumber);其中"deleteUser"对应user.xml中,delete标签中的id,其他也类似
}

  3、创建User对象的sql语句映射文件,user.xml

<mapper namespace="com.mybaits.bean.User">
<resultMap type="com.mybaits.bean.User" id="userResult">
<id property="id" column="id" />
<result property="username" column="username"/>
<result property="usernumber" column="usernumber"/>
<result property="loginname" column="loginname"/>
<result property="loginpassword" column="loginpassword"/>
<result property="sex" column="sex"/>
<result property="birthday" column="birthday" />
</resultMap> <insert id="addUser" parameterType="User" >
insert into user (username,usernumber,loginname,loginpassword,sex,birthday) values(#{username},#{usernumber},#{loginname},#{loginpassword},#{sex},#{birthday})
</insert>
<delete id="deleteUser" parameterType="String">
delete from user where user.usernumber=#{usernumber}
</delete> <update id="updateUser" parameterType="User" >
update user set username=#{username},loginname=#{loginname},loginpassword=#{loginpassword},sex=#{sex},birthday=#{birthday} where usernumber=#{usernumber}
</update>
<select id="findUserByUsernumber" parameterType="string" resultType="User">
select * from user where usernumber = #{usernumber}
</select>
<select id="findAllUser" resultType="User">
select * from user
</select>
<select id="findUserByName" parameterType="String" resultType="User">
select * from user where usernumber like CONCAT(CONCAT('%', #{usernumber}), '%')
</select>
</mapper>
   <!-- resultType="User" 对应 <typeAlias type="com.mybaits.bean.User" alias="User"/> 中的User-->

  4、创建Mybaits的mapper配置文件mybaits.xml

  typeAliases:给类起别名

  mappers:加载实体类User的sql映射文件

<configuration>
<typeAliases>
<typeAlias type="com.mybaits.bean.User" alias="User"/>
</typeAliases>
<mappers>
<mapper resource="com/mybaits/dao/impl/user.xml" />
</mappers>
</configuration>

四、使用junit编写测试类

public class UserTest {

    private IUserService userService;
private IUserDao userDao; @Before
public void init(){
ApplicationContext ctx=new ClassPathXmlApplicationContext("spring.xml");
userService=(IUserService) ctx.getBean("userService");
userDao=(IUserDao) ctx.getBean("userDao");
} @Test
public void Test(){
User u=new User();
u.setUsername("王一飞");
u.setUsernumber("01111305");
u.setLoginname("admin");
u.setLoginpassword("admin");
u.setSex("男");
u.setBirthday(new Date());
userDao.addUser(u);
}   @Test
    public void Test3(){
        User u=userService.findUser("01111001");
        System.out.println(u.getUsername());
    }
  //.....此处省略其他测试方法
}

最新文章

  1. CozyRSS开发记录11-够用的RSS源管理
  2. Android各类权限意思祥解
  3. HTML5web存储之localStorage
  4. Node聊天程序实例05:index.html和style.css
  5. CentOS6.5个人目录下中文路径转英文路径
  6. Simple JavaScript Inheritance--一个极简JS面向对象-类库
  7. 数据结构《16》----自动补齐实现《一》----Trie 树
  8. Maven系列--pom.xml 配置详解
  9. nodejs开发阶段利器supervisor
  10. 利用FlashPaper实现类似百度文库功能
  11. IOS 后台运行
  12. 团体程序设计天梯赛-练习集L2-007. 家庭房产
  13. Python购物车的实现课程
  14. Web Service 入门例子
  15. RH133读书笔记(6) - Lab 6 Adding New Filesystems to the Filesystem Tree
  16. c++ data语意学
  17. 【模板】链式前向星+spfa
  18. Dev-C++安装第三方库boost
  19. UVA1328 Period
  20. Windows FindFirstFile利用

热门文章

  1. intellij idea之git执行打标签(tag)和删除标签
  2. ajax同步和异步的切换
  3. 使用TFS需要注意的地方
  4. 使用Vue-cli 3.x搭建Vue项目
  5. java---解析XML文件,通过反射动态将XML内容封装到一个类中
  6. python 基础篇 15 内置函数和匿名函数
  7. 为什么mysqld启动报错
  8. java设计模式之责任链模式以及在java中作用
  9. python之time和os模块
  10. POJ 3565 Ants(最佳完美匹配)