Mybatis以及 Mybatis与spring整合
来源:互联网 发布:不是小偷就是程序员 编辑:程序博客网 时间:2024/06/10 05:00
一、MyBatis的概念
MyBatis是支持定制化 SQL、存储过程以及高级映射的优秀的持久层框架。MyBatis避免了几乎所有的JDBC代码和手工设置参数以及抽取结果集。MyBatis使用简单的 XML或注解来配置和映射基本体,将接口和 Java 的 POJOs(Plain Old Java Objects,普通的 Java对象)映射成数据库中的记录。二、MyBatis的简单实现Demo
1、前期准备工作:
准备mysql-connector-java.jar、mybatis-3.2.7.jar、log4j.jar 这三个必要的开发包,在mysql数据库中新建一张t_user表有id username password email 四个字段
create table t_user(id int not null AUTO_INCREAMENT, username varchar(45) null, password varchar(45) null, email varchar(45) null, primary key(id));
2、编写数据库表对应的实体类:
package com.mybatis.domain;public class User{ private Integer id; private String username; private String password; private String email; ....set和get方法.....}
3、编写数据库表操作的接口
package com.mybatis.dao;import com.mybatis.domain.User;import java.util.List;public interface UserDaoMapper{ public List<User> getAllUser();/*得到所有的User*/ public User getUserById(Integer id);/*根据Id得到一个User*/ public void addUser(User user);/*添加一个User*/ public void deleteUser(Integer id);/*根据id删除一个User*/}
4、编写接口对应的映射文件xml,命名为UserDaoMapper.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="com.mybatis.dao.UserMapper"> <!-- 这里定义一个复杂的结果类型可供后面查询语句select中的resultMap 使用,这里由于我们使用了构造函数,所以不需要使用jdbcType来指定类型--> <resultMap type="User" id="usermap"> <result property="id" column="id" /> <result property="username" column="username"/> <result property="password" column="password" /> <result property="email" column="email" /> </resultMap> <select id="getAllUser" resultType="User"> select * from t_user </select> <!-- 根据Id得到一个User --> <select id="getUserById" parameterType="Integer" resultType="User"> select * from t_user where id=#{id} </select> <!-- 添加用户 --> <insert id="addUser" parameterType="User" useGeneratedKeys="true" keyColumn="id"> insert into t_user(username,password,email) values(#{username},#{password},#{email}) </insert> <!-- 根据id删除一个用户 --> <delete id="deleteUser" parameterType="Integer"> delete from t_user where id=#{id} </delete></mapper>
5、编写mybatis的配置文件mybatis-config.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><!-- 这里是一个全局配置,可以设置各种属性,如懒加载、使用缓存 --> <settings> <setting name="lazyLoadingEnabled" value="false" /> <setting name="cacheEnabled" value="true" /> </settings><!-- 这里是可以为类设置别名,这样就可以在引用时可以不写类的全路径 --> <typeAliases> <typeAlias alias="User" type="com.mybatis.domain.User" /> <typeAlias alias="UserDaoMapper" type="com.mybatis.dao.UserDaoMapper" /> </typeAliases> <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/mybaits" /><!-- 数据库名为mybaits --> <property name="username" value="root" /><!--用户名 --> <property name="password" value="root" /><!-- 密码--> </dataSource> </environment> </environments><!-- 这里配置一些使用sql查询语句的xml文件,而其中mapper有class,resource,url三种属性--> <mappers> <mapper resource="com/mybatis/dao/UserMapper.xml" /> </mappers></configuration>
6、编写一个测试类
package com.mybatis.test;import com.mybatis.domain.User;public class UserDaoMapperTest{ public static void main(String[] args) { String resource="mybatis-config.xml"; InputStream input=Resources.getResourceAsStream(resource);/*加载配置文件*/ SqlSessionFactory ssf=new SqlSessionFactoryBuilder().build(input);/*构建sqlSession工厂*/ SqlSession session=ssf.openSession();/*拿到一个session*/ UserDaoMapper userDaoMapper=session.getMapper(UserDaoMapper.class);/*拿到接口并进行初始化*/ User user=userDaoMapper.getUserById(1); }}
三、spring整合mybatis
1、spring整合mybatis时候,除了要保留来的mybatis开发包以外,我们还需要加入spring的开发包,特别是注意要加入mybatis-spring.jar的整合包。2、我们在MyBatis的简单实现Demo上进行整合。这里我们要保持User,UserDaoMapper,UserDaoMapper.xml这三个文件不变,去掉mybatis-config.xml文件,加入一个spring
的配置文件bean.xml。
<?xml version="1.0" encoding="UTF-8"?><beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:util="http://www.springframework.org/schema/util" xmlns:tx="http://www.springframework.org/schema/tx" xmlns:context="http://www.springframework.org/schema/context" xmlns:aop="http://www.springframework.org/schema/aop" xsi:schemaLocation=" http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-3.0.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.0.xsd http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-3.0.xsd http://www.springframework.org/schema/util http://www.springframework.org/schema/util/spring-util-3.0.xsd"> <!-- 1. 数据源 : DriverManagerDataSource --> <bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource"> <property name="driverClassName" value="com.mysql.jdbc.Driver"/> <property name="url" value="jdbc:mysql://localhost:3306/mybaits"/><!-- 数据库名为mybaits --> <property name="username" value="root"/><!-- 用户名 --> <property name="password" value="root"/><!-- 密码 --> </bean> <!-- 2. mybatis的SqlSession的工厂: SqlSessionFactoryBean dataSource / typeAliasesPackage--> <bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean"> <property name="dataSource" ref="dataSource"/> <!-- 扫描与数据库对应的实体类 --> <property name="typeAliasesPackage" value="com.mybatis.domain"/> </bean> <!-- 3. mybatis自动扫描加载Sql映射文件 : MapperScannerConfigurer sqlSessionFactory / basePackage--> <bean class="org.mybatis.spring.mapper.MapperScannerConfigurer"> <!-- 这里的value是指的是放映射文件的包 ,这个property是必须的--> <property name="basePackage" value="com.mybatis.dao"/> <property name="sqlSessionFactory" ref="sqlSessionFactory"/> </bean> <!-- 4. 事务管理 : DataSourceTransactionManager --> <bean id="txManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager"> <property name="dataSource" ref="dataSource"/> </bean> <!-- 5. 使用声明式事务 --> <tx:annotation-driven transaction-manager="txManager" /></beans>
3、编写一个junit测试类,这里用到了spring框架自带的测试框架
//这里用的是spring自带的一个测试框架@RunWith(SpringJUnit4ClassRunner.class)@ContextConfiguration("/beans.xml")public class spring_mybatis_Test{ @Autowired private UserDaoMapper userDaoMapper; @Test public void findAllUser(){ List<User> users=userDaoMapper.getAllUser(); for (User user :users ) { System.out.println(user); } }}
0 0
- Mybatis以及 Mybatis与spring整合
- spring mvc,以及与mybatis整合
- spring与mybatis整合
- 整合spring与myBatis
- mybatis 与 spring 整合
- mybatis与spring整合
- mybatis与spring整合
- mybatis与spring整合
- spring与mybatis整合
- spring与mybatis整合
- Spring与Mybatis整合
- Mybatis与Spring整合
- spring与mybatis整合
- mybatis与spring整合
- spring与mybatis整合
- Mybatis与Spring整合
- MyBatis与Spring整合
- Spring与MyBatis整合
- Android跑指定包Monkey脚本
- 使用MulticastSocket进行手机之间的多播消息发送
- SSH系类(三)struts国际化(I18N)
- java foreach 使用
- The connection to adb is down, and a severe error has occured.(解决adb server didn't ACK问题)
- Mybatis以及 Mybatis与spring整合
- Django doc part2 note (django==1.7.1)
- c++primer第五版课后练习答案(第六章)
- 【Jsp】使用AjaxFileUploader与jspsmartupload完成不刷新的Ajax文件上传系统
- Apple移动设备处理器指令集 armv6、armv7、armv7s及arm64
- shell将脚本输出结果记录到日志文件
- HDU2549(字符串有趣题)
- The web application [/path registered the JDBC driver [oracle.jdbc.driver.OracleDriver] but fail
- Nginx简单安装配置(V1.7.8)