MyBatis+Spring实现基本CRUD操作
一、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());
}
//.....此处省略其他测试方法
}
MyBatis+Spring实现基本CRUD操作的更多相关文章
- mybatis升级案例之CRUD操作
mybatis升级案例之CRUD操作 一.准备工作 1.新建maven工程,和入门案例一样 主要步骤如下,可参考mybatis入门实例 a.配置pom.xml文件 b.新建实例类User.DAO接口类 ...
- SSM框架之Mybatis(2)CRUD操作
Mybatis(2)CRUD 1.基于代理Dao实现CRUD操作 使用要求: 1.持久层接口(src\main\java\dao\IUserDao.java)和持久层接口的映射配置(src\main\ ...
- MyBatis 对数据库进行CRUD操作
1.update修改 uodate修改也可以使用之前的机制在配置文件中直接编写sql 但是update语句的set字句中是根据传入的值决定的, 此时可以通过Mybatis提供的标签实现判断动态拼接up ...
- spring jdbcTemplate的CRUD操作
一.jdbcTemplate准备 1.导入与jdbcTemplate相关的jar包 2.设置数据库信息 3.创建jdbcTemplate对象,设置数据源 二.添加操作 1.代码 2.结果 三.修改操作 ...
- mybatis学习:mybatis的注解开发CRUD操作
Dao层: public interface IUserDao { /** * 查询所有结果 * @return */ @Select("select * from user") ...
- Spring Boot整合Mybatis并完成CRUD操作
MyBatis 是一款优秀的持久层框架,被各大互联网公司使用,本文使用Spring Boot整合Mybatis,并完成CRUD操作. 为什么要使用Mybatis?我们需要掌握Mybatis吗? 说的官 ...
- MyBatis学习存档(4)——进行CRUD操作
使用MyBatis进行数据库的CRUD操作有2种方式:一种如之前所说的接口+xml,而另一种是通过对接口上的方法加注解(@Select @Insert @Delete @Update) 但是通常情况下 ...
- Spring Boot整合Mybatis完成级联一对多CRUD操作
在关系型数据库中,随处可见表之间的连接,对级联的表进行增删改查也是程序员必备的基础技能.关于Spring Boot整合Mybatis在之前已经详细写过,不熟悉的可以回顾Spring Boot整合Myb ...
- Spring boot 入门四:spring boot 整合mybatis 实现CRUD操作
开发环境延续上一节的开发环境这里不再做介绍 添加mybatis依赖 <dependency> <groupId>org.mybatis.spring.boot</grou ...
随机推荐
- AWS安装CDH5.3-CentOS6.4
1.下载CM启动文件 [root@ip-172-31-23-107 ec2-user]# wget http://archive.cloudera.com/cm5/installer/latest/c ...
- web开发微信文章目录
Web开发微信文章目录 2015-12-13 Web开发 本文是Web开发微信的文章目录.通过目录查看文章编号,回复文章编号就能查看文章全文. 回复编号查看全文,搜索分类名可以获得该分类下的文章. ...
- Anytime项目开发记录4
做事情列表,我在程序中命名为“正在做”. 这是一个Fragment,应用的主页面,由一个MainActivity加上DoingListFragment和PersonFragment组成.PersonF ...
- zabbix 语音告警
之前的文章中已经实现了zabbix 邮件告警和微信告警,生产环境上测试出消息抵达很及时,但是!万一服务器在大半夜突发故障微信.邮件这些通知都是废物了,大晚上还能听到微信通知吗?显然不可能(我的某朋友就 ...
- BZOJ 3925 ZJOI2015 地震后的幻想乡 状压dp+期望
题目链接:http://www.lydsy.com/JudgeOnline/problem.php?id=3925 题意概述: 给出一张N点M边的最小生成树,其中每条边的长度为[0,1]的实数,求最小 ...
- Java 访问权限控制 小结
总所周知,Java提供了访问权限修饰词,以供类库开发人员向客户端程序员指明哪些是可用的,哪些是不可用的. 访问权限控制的等级,从最大权限到最小权限依次为:public.protected.包访问权限( ...
- c#form界面情况下显示console窗体
使用console.write()前后加上AllocConsole()和FreeConsole()方法. 注意:如果在使用之前有console输出(不带有这两个方法),则会无效. 这两个方法: [Dl ...
- SourceTree git的管理工具使用教程1
1SourceTree是一个window系统下的Git管理工具 2设置Git 工具——选项——Git设置 3拷贝远程的项目 新建/克隆(输入远程项目的url地址) 4验证(填写用户信息) 工具——选项 ...
- ASP.NET程序中设置相对路径的方法
如图所示,这是个绝对路径. 改为相对路径的方法是:AppDomain.CurrentDomain.BaseDirectory. 如下图所示:
- PokeCats开发者日志(二)
现在是PokeCats游戏开发的第四天的上午,来记录一下昨天做的事情吧. day3 day3主要是添加音效和优化界面,本以为添加个音效1~2个小时就够了吧,没想到贼不顺,弄了一个下午才搞好. ...