spring 集成 mybatis 及mybatis 的 crud 操作
2013-09-27 14:30
716 查看
今天有空学习了一下mybatis,这个orm框架和jdbctemplate很相似,都需要自己写sql语句,都可以对sql进行优化控制。有点不同的mybatis不需要再一个mapper的实体来映射结果集,只需要配置是指定一下实体对象即可,它会自动帮你映射到该实体上;而jdbctemplate则需要自己另外写一个实现rowmapper借口的结果集映射对象。
还有其他的mybatis详细使用方法可以去官网看看,我这里贴下spring 集成mybatis及简单的crud操作的代码。
mybatis学习的传送门:http://mybatis.github.io/mybatis-3/zh/dynamic-sql.html
spring的配置文件applicationContext.xml,配置数据源和mybatis的sqlSessionFactory,
configuration.xm
bookMapper.xml
com.yang.dao.BookMapper,dao接口,上面的mapper是这个dao接口的实现
service层的接口
service层的实现
上面的实现类里需要在spring配置文件中注入bookMapper
bookMapper配置
最后junit单元测试一下
结果:
也附上目录结构
还有其他的mybatis详细使用方法可以去官网看看,我这里贴下spring 集成mybatis及简单的crud操作的代码。
mybatis学习的传送门:http://mybatis.github.io/mybatis-3/zh/dynamic-sql.html
spring的配置文件applicationContext.xml,配置数据源和mybatis的sqlSessionFactory,
<bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource"> <property name="driverClassName" value="${jdbc.driverClassName}"></property> <property name="url" value="${jdbc.url}"></property> <property name="username" value="${jdbc.username}"></property> <property name="password" value="${jdbc.password}"></property> <property name="maxActive" value="${jdbc.maxActive}"></property> <property name="maxIdle" value="${jdbc.maxIdle}"></property> <property name="maxWait" value="${jdbc.maxWait}"></property> <property name="defaultAutoCommit" value="${jdbc.defaultAutoCommit}"></property> </bean> <bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean"> <property name="configLocation" value="classpath:configuration.xml" /> <property name="dataSource" ref="dataSource" /> </bean>
configuration.xm
<?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE configuration PUBLIC "-//mybatis.org//DTD Config 3.0//EN" "http://mybatis.org/dtd/mybatis-3-config.dtd"> <configuration> <typeAliases> <!--给实体类起一个别名 user ,userMapper.xml中的就可以这样定义resultType="User" --> <!--就无需这样写路径了 resultType="com.forum.po.User" --> <typeAlias type="com.yang.model.User" alias="User" /> <typeAlias type="com.yang.model.Books" alias="Books" /> </typeAliases> <mappers> <!--userMapper.xml装载进来 同等于把“dao”的实现装载进来 --> <mapper resource="com/yang/dao/impl/userMapper.xml" /> <mapper resource="com/yang/dao/impl/bookMapper.xml" /> </mappers> </configuration>
bookMapper.xml
<?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> <!--这块等于dao接口的实现 namespace必须和接口的类路径一样 --> <mapper namespace="com.yang.dao.BookMapper"> <!-- id必须和接口中的方法名一样 返回一个Books 就是刚才的别名 如果不弄别名要连类路径一起写 麻烦 --> <select id="findById" parameterType="int" resultType="Books"> select * from books where book_id=#{book_id} </select> <select id="findByName" parameterType="string" resultType="Books"> select * from books where book_name like #{book_name} </select> <insert id="save" parameterType="Books" useGeneratedKeys="true" keyProperty="book_id"> insert into books(book_name,book_author,book_date) values(#{book_name},#{book_author},#{book_date}) </insert> <update id="update" parameterType="Books"> update books set book_name=#{book_name},book_author=#{book_author},book_date=#{book_date} where book_id=#{book_id} </update> <delete id="delete" parameterType="int"> delete from books where book_id=#{book_id} </delete> <select id="findByArgs" parameterType="map" resultType="Books"> select * from books where book_name like #{book_name} <if test="book_publish!=null"> and book_publish like #{book_publish} </if> </select> </mapper>
com.yang.dao.BookMapper,dao接口,上面的mapper是这个dao接口的实现
public interface BookMapper { public Books findById(int book_id); public List<Books> findByName(String book_name); public int save(Books books); public int update(Books books); public int delete(int book_id); public List<Books> findByArgs(Map<String, String> map); }
service层的接口
public interface IBookService { public Books findById(int book_id); public List<Books> findByName(String book_name); public int save(Books books); public int update(Books books); public int delete(int book_id); public List<Books> findByArgs(Map<String, String> map); public void testTransaction(Books books, int deleteId); }
service层的实现
public class BookServiceImpl implements IBookService { private BookMapper bookMapper; public void setBookMapper(BookMapper bookMapper) { this.bookMapper = bookMapper; } public Books findById(int book_id) { return this.bookMapper.findById(book_id); } public List<Books> findByName(String book_name) { return this.bookMapper.findByName(book_name); } public int save(Books books) { return this.bookMapper.save(books); } public int update(Books books) { return this.bookMapper.update(books); } public int delete(int book_id) { return this.bookMapper.delete(book_id); } public List<Books> findByArgs(Map<String, String> map) { return this.bookMapper.findByArgs(map); } public void testTransaction(Books books, int deleteId) { this.bookMapper.save(books); this.bookMapper.delete(deleteId); throw new RuntimeException(" ------- 事务测试"); } }
上面的实现类里需要在spring配置文件中注入bookMapper
<bean id="bookService" class="com.yang.service.impl.BookServiceImpl"> <property name="bookMapper" ref="bookMapper" /> </bean>
bookMapper配置
<bean id="bookMapper" class="org.mybatis.spring.MapperFactoryBean"> <property name="mapperInterface" value="com.yang.dao.BookMapper" /> <property name="sqlSessionFactory" ref="sqlSessionFactory" /> </bean>
最后junit单元测试一下
private ApplicationContext applicationContext; private IUserService userService; private IBookService bookService; @Before public void before() { String[] xmls = new String[] { "applicationContext.xml", "applicationContext-mapper.xml", "applicationContext-service.xml", "applicationContext-transaction.xml" }; applicationContext = new ClassPathXmlApplicationContext(xmls); userService = (IUserService) applicationContext.getBean("userService"); bookService = (IBookService) applicationContext.getBean("bookService"); }
@Test public void findByArgs() { Map<String, String> map = new HashMap<String, String>(); map.put("book_name", "%bbb%"); map.put("book_publish", null); List<Books> books = this.bookService.findByArgs(map); for (Books b : books) { System.out.println(b.getBook_id() + " --- " + b.getBook_name() + " --- " + b.getBook_publish() + " --- " + b.getBook_date()); } }
结果:
也附上目录结构
相关文章推荐
- mybatis集成spring操作数据库(注解方式)
- mybatis集成spring操作数据库(以注解的方式)
- Spring Boot(六)集成 MyBatis 操作 MySQL 8
- mybatis集成spring操作数据库(注解方式
- mybatis集成spring操作数据库(注解方式)
- Spring和hibernate集成写API进行CRUD操作
- spring MongoDB 集成crud操作(简单封装)
- 用maven项目mybatis集成spring+springmvc无刷新实现crud
- mybatis集成spring操作数据库
- 用maven项目mybatis集成spring+springmvc无刷新实现crud
- Spring Boot 集成Mybatis操作数据库
- 使用MyBatis对表执行CRUD操作——基于注解的实现
- 使用MyBatis对表执行CRUD操作——基于XML的实现
- springboot+dubbo+mybatis集成
- MyBatis学习总结(二)——使用MyBatis对表执行CRUD操作
- mybatis学习笔记四(与spring3集成)
- Spring + Springmvc + Mybatis 基本框架搭建集成教程
- Spring+SpringMVC+Mybatis集成一个小的案例
- easyui 1.5+spring 4.2+mybatis 3.4 Web示例(七) 单表操作之页面层
- Spring+SpringMVC+Mybatis集成一个小的案例