打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
Spring Mybatis

基于之前的spring项目,引入mybatis作为数据层基本框架

1. 引入mybatis依赖

3.3.0 1.2.3 org.mybatis mybatis-spring ${mybatis-spring.version} org.mybatis mybatis ${mybatis.version}
  1. <>>
  2. <>>3.3.0
  3. <>>1.2.3
  4. <>>
  5. <>>org.mybatis
  6. <>>mybatis-spring
  7. <>>${mybatis-spring.version}
  8. <>>
  9. <>>org.mybatis
  10. <>>mybatis
  11. <>>${mybatis.version}
3.3.0 1.2.3 org.mybatis mybatis-spring ${mybatis-spring.version} org.mybatis mybatis ${mybatis.version}

 2. 创建Domain类

2.1 表结构

CREATE TABLE `stock` ( `code` varchar(10) NOT NULL, `name` varchar(10) NOT NULL, `count` int(11) DEFAULT NULL, `main_business` varchar(256) DEFAULT NULL, `create_time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP, `price` decimal(10,2) DEFAULT NULL, PRIMARY KEY (`code`)) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4
  1. CREATE TABLE `stock` (
  2. `code` varchar(10) NOT NULL,
  3. `name` varchar(10) NOT NULL,
  4. `count` int(11) DEFAULT NULL,
  5. `main_business` varchar(256) DEFAULT NULL,
  6. `create_time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
  7. `price` decimal(10,2) DEFAULT NULL,
  8. PRIMARY KEY (`code`)
  9. ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4
CREATE TABLE `stock` ( `code` varchar(10) NOT NULL, `name` varchar(10) NOT NULL, `count` int(11) DEFAULT NULL, `main_business` varchar(256) DEFAULT NULL, `create_time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP, `price` decimal(10,2) DEFAULT NULL, PRIMARY KEY (`code`)) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4

2.2 Stock.java

package com.zmannotes.spring.mybatis.domain;public class Stock { private String code; private String name; private Integer count; private String mainBusiness; private Date createTime; private BigDecimal price;//setter and getter//...}
  1. package com.zmannotes.spring.mybatis.domain;
  2. public class Stock {
  3. private String code;
  4. private String name;
  5. private Integer count;
  6. private String mainBusiness;
  7. private Date createTime;
  8. private BigDecimal price;
  9. //setter and getter
  10. //...
  11. }
package com.zmannotes.spring.mybatis.domain;public class Stock { private String code; private String name; private Integer count; private String mainBusiness; private Date createTime; private BigDecimal price;//setter and getter//...}

 3. 创建Dao(Mapper)

package com.zmannotes.spring.mybatis.dao;import com.zmannotes.spring.mybatis.domain.Stock;public interface StockMapper { //根据PK删除 int deleteByPrimaryKey(String code); //插入新纪录 int insert(Stock record); //根据PK查询 Stock selectByPrimaryKey(String code);}
  1. package com.zmannotes.spring.mybatis.dao;
  2. import com.zmannotes.spring.mybatis.domain.Stock;
  3. public interface StockMapper {
  4. //根据PK删除
  5. int deleteByPrimaryKey(String code);
  6. //插入新纪录
  7. int insert(Stock record);
  8. //根据PK查询
  9. Stock selectByPrimaryKey(String code);
  10. }
package com.zmannotes.spring.mybatis.dao;import com.zmannotes.spring.mybatis.domain.Stock;public interface StockMapper { //根据PK删除 int deleteByPrimaryKey(String code); //插入新纪录 int insert(Stock record); //根据PK查询 Stock selectByPrimaryKey(String code);}

 4. 配置映射文件

//通过配置文件将 数据库表 与 对象、Dao关联起来 code, name, count, main_business, create_time, price delete from stock where code = #{code,jdbcType=VARCHAR} insert into stock (code, name, count, main_business, create_time, price ) values (#{code,jdbcType=VARCHAR}, #{name,jdbcType=VARCHAR}, #{count,jdbcType=INTEGER}, #{mainBusiness,jdbcType=VARCHAR}, #{createTime,jdbcType=TIMESTAMP}, #{price,jdbcType=DECIMAL} )
  1. //通过配置文件将 数据库表 与 对象、Dao关联起来
  2. <> namespace='com.zmannotes.spring.mybatis.dao.StockMapper' >
  3. <> id='BaseResultMap' type='com.zmannotes.spring.mybatis.domain.Stock' >
  4. <> column='code' property='code' jdbcType='VARCHAR' />
  5. <> column='name' property='name' jdbcType='VARCHAR' />
  6. <> column='count' property='count' jdbcType='INTEGER' />
  7. <> column='main_business' property='mainBusiness' jdbcType='VARCHAR' />
  8. <> column='create_time' property='createTime' jdbcType='TIMESTAMP' />
  9. <> column='price' property='price' jdbcType='DECIMAL' />
  10. <> id='Base_Column_List' >
  11. code, name, count, main_business, create_time, price
  12. <> id='selectByPrimaryKey' resultMap='BaseResultMap' parameterType='java.lang.String' >
  13. select
  14. <> refid='Base_Column_List' />
  15. from stock
  16. where code = #{code,jdbcType=VARCHAR}
  17. <> id='deleteByPrimaryKey' parameterType='java.lang.String' >
  18. delete from stock
  19. where code = #{code,jdbcType=VARCHAR}
  20. <> id='insert' parameterType='com.zmannotes.spring.mybatis.domain.Stock' >
  21. insert into stock (code, name, count,
  22. main_business, create_time, price
  23. )
  24. values (#{code,jdbcType=VARCHAR}, #{name,jdbcType=VARCHAR}, #{count,jdbcType=INTEGER},
  25. #{mainBusiness,jdbcType=VARCHAR}, #{createTime,jdbcType=TIMESTAMP}, #{price,jdbcType=DECIMAL}
  26. )
//通过配置文件将 数据库表 与 对象、Dao关联起来 code, name, count, main_business, create_time, price delete from stock where code = #{code,jdbcType=VARCHAR} insert into stock (code, name, count, main_business, create_time, price ) values (#{code,jdbcType=VARCHAR}, #{name,jdbcType=VARCHAR}, #{count,jdbcType=INTEGER}, #{mainBusiness,jdbcType=VARCHAR}, #{createTime,jdbcType=TIMESTAMP}, #{price,jdbcType=DECIMAL} )

5. 配置数据源及SessionFactory

set names utf8mb4; classpath:mybatis/stock/*.xml com.zmannotes.spring.mybatis.dao
  1. <> xmlns='http://www.springframework.org/schema/beans'
  2. xmlns:xsi='http://www.w3.org/2001/XMLSchema-instance' xmlns:tx='http://www.springframework.org/schema/tx'
  3. xsi:schemaLocation='
  4. http://www.springframework.org/schema/beans
  5. http://www.springframework.org/schema/beans/spring-beans.xsd
  6. http://www.springframework.org/schema/tx
  7. http://www.springframework.org/schema/tx/spring-tx.xsd'>
  8. <> id='stock_dataSource' class='org.apache.commons.dbcp2.BasicDataSource'
  9. destroy-method='close'>
  10. <> name='driverClassName' value='com.mysql.jdbc.Driver' />
  11. <> name='url' value='jdbc:mysql://123.57.144.1:3306/stock' />
  12. <> name='username' value='stock' />
  13. <> name='password' value='stock' />
  14. <> name='connectionInitSqls'>
  15. <>>
  16. <>>set names utf8mb4;
  17. <> id='stock_txManager'
  18. class='org.springframework.jdbc.datasource.DataSourceTransactionManager'>
  19. <> name='dataSource' ref='stock_dataSource' />
  20. <> transaction-manager='stock_txManager'
  21. mode='proxy' proxy-target-class='true' />
  22. <> id='stock_sqlSessionFactory' class='org.mybatis.spring.SqlSessionFactoryBean'>
  23. <> name='dataSource' ref='stock_dataSource' />
  24. <> name='typeAliasesPackage'
  25. value='com.zmannotes.spring.mybatis.domain' />
  26. <> name='mapperLocations'>
  27. <>>
  28. <>>classpath:mybatis/stock/*.xml
  29. <> class='org.mybatis.spring.mapper.MapperScannerConfigurer'>
  30. <> name='basePackage'>
  31. <>>
  32. com.zmannotes.spring.mybatis.dao
  33. <> name='sqlSessionFactoryBeanName' value='stock_sqlSessionFactory' />
set names utf8mb4; classpath:mybatis/stock/*.xml com.zmannotes.spring.mybatis.dao

6. 完成单测

@RunWith(SpringJUnit4ClassRunner.class)@ContextConfiguration(locations = '/spring/stock-session-factory.xml')public class StockTest { @Autowired private StockMapper stockMapper; /**插入一条数据并自动回滚*/ @Transactional @Test public void test(){ Stock stock = new Stock(); stock.setCode('900001'); stock.setName('tcl'); stockMapper.insert(stock); }}
  1. @RunWith(SpringJUnit4ClassRunner.class)
  2. @ContextConfiguration(locations = '/spring/stock-session-factory.xml')
  3. public class StockTest {
  4. @Autowired
  5. private StockMapper stockMapper;
  6. /**插入一条数据并自动回滚*/
  7. @Transactional
  8. @Test
  9. public void test(){
  10. Stock stock = new Stock();
  11. stock.setCode('900001');
  12. stock.setName('tcl');
  13. stockMapper.insert(stock);
  14. }
  15. }
@RunWith(SpringJUnit4ClassRunner.class)@ContextConfiguration(locations = '/spring/stock-session-factory.xml')public class StockTest { @Autowired private StockMapper stockMapper; /**插入一条数据并自动回滚*/ @Transactional @Test public void test(){ Stock stock = new Stock(); stock.setCode('900001'); stock.setName('tcl'); stockMapper.insert(stock); }}

源码Github

Q&A

Q:无聊的2~4步有没有快捷完成办法?

A:当然有!那就是Mybatis Generator,自动生成2~4所有代码。参考 LINK

本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
Spring Boot + Mybatis 实现动态数据源
Mybatis自动生成实体代码的 generator 插件
MyBatis学习4
mybatis 需要注意的点 MyBatis 插入空值时,需要指定JdbcType (201
ibatis和mybatis的区别
Mybatis类型转换介绍
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服