{"id":38,"date":"2018-03-10T18:47:16","date_gmt":"2018-03-10T10:47:16","guid":{"rendered":"http:\/\/chenhaitao.me\/?p=38"},"modified":"2018-03-10T18:47:16","modified_gmt":"2018-03-10T10:47:16","slug":"springboot%e6%95%b4%e5%90%88mybatis","status":"publish","type":"post","link":"https:\/\/chenhaitao.com\/.wp-toolkit_I\/2018\/03\/10\/springboot%e6%95%b4%e5%90%88mybatis\/","title":{"rendered":"SpringBoot\u6574\u5408Mybatis"},"content":{"rendered":"<h2 id=\"h2_2\"><strong>\u65b9\u5f0f\u4e00\uff1a\u4f7f\u7528Annotation\u81ea\u52a8\u5316\u96c6\u6210<\/strong><\/h2>\n<h2 id=\"h2_3\"><\/h2>\n<p>\u5f53\u6211\u6309\u7167\u7f51\u4e0a\u7684\u6559\u7a0b\u914d\u7f6e\u540e\uff0c\u5f88\u7b80\u5355\u561b\uff0c\u57fa\u672c\u4e0a\u5565\u4e5f\u4e0d\u7528\u5e72\uff0c\u914d\u7f6e\u4e2a<\/p>\n<pre class=\"hljs less\"><code class=\"language-ini hljs\"><span class=\"hljs-attribute\">server<\/span>:\r\n  <span class=\"hljs-attribute\">address<\/span>: localhost\r\n  <span class=\"hljs-attribute\">port<\/span>: <span class=\"hljs-number\">7777<\/span>\r\n\r\n<span class=\"hljs-comment\"><span class=\"hljs-number\">#db<\/span><\/span>\r\n\r\n<span class=\"hljs-attribute\">spring<\/span>:\r\n  <span class=\"hljs-attribute\">datasource<\/span>:\r\n    <span class=\"hljs-attribute\">driver-class-name<\/span>: com.mysql.jdbc.Driver\r\n    <span class=\"hljs-attribute\">url<\/span>: <span class=\"hljs-attribute\">jdbc<\/span>:<span class=\"hljs-attribute\">mysql<\/span>:<span class=\"hljs-comment\">\/\/localhost:3306\/test2<\/span>\r\n    <span class=\"hljs-attribute\">username<\/span>: root\r\n    <span class=\"hljs-attribute\">password<\/span>: zhw\r\n    <span class=\"hljs-attribute\">type<\/span>: com.alibaba.druid.pool.DruidDataSource\r\n\r\n\r\n\r\n<span class=\"hljs-comment\">#mybatis<\/span>\r\n<span class=\"hljs-attribute\">mybatis<\/span>:\r\n  <span class=\"hljs-attribute\">type-aliases-package<\/span>: org.rana.example.annotation.entity\r\n<\/code><\/pre>\n<p>\u5c31\u5b8c\u4e8b\u4e86\u3002<\/p>\n<p>\u7136\u800c\uff0c\u63d0\u793a<\/p>\n<pre class=\"hljs groovy\"><code class=\"language-java hljs\">Caused <span class=\"hljs-string\">by:<\/span> java.lang.<span class=\"hljs-string\">IllegalArgumentException:<\/span> Property <span class=\"hljs-string\">'sqlSessionFactory'<\/span> or <span class=\"hljs-string\">'sqlSessionTemplate'<\/span> are required\r\n<\/code><\/pre>\n<p>\u539f\u56e0\u662fmybatis\u5728\u67d0\u4e2a\u7248\u672c\u540e\u53d6\u6d88\u4e86sqlSessionFactory\u7684\u81ea\u52a8\u6ce8\u5165\uff0c\u9700\u8981\u663e\u793a\u6ce8\u5165\u3002<\/p>\n<p>\u7136\u800c\u8bbe\u7f6e\u8fd9\u73a9\u610f\u513f\u662f\u9700\u8981\u8bbe\u7f6edataSource\u7684\uff0c\u4e8e\u662fdataSource\u4e5f\u5f97\u663e\u793a\u58f0\u660e<\/p>\n<pre class=\"hljs less\"><code class=\"language-java hljs\"><span class=\"hljs-meta\"><span class=\"hljs-variable\">@Configuration<\/span><\/span>\r\n<span class=\"hljs-keyword\">public<\/span> <span class=\"hljs-class\"><span class=\"hljs-keyword\">class<\/span> <span class=\"hljs-title\">MybatisConfig<\/span> <\/span>{\r\n\r\n\r\n    <span class=\"hljs-meta\"><span class=\"hljs-variable\">@Autowired<\/span><\/span>\r\n    <span class=\"hljs-keyword\">private<\/span> DataSourceProperties dataSourceProperties;\r\n\r\n\r\n    <span class=\"hljs-meta\"><span class=\"hljs-variable\">@Bean<\/span><\/span>(name = <span class=\"hljs-string\">\"dataSource\"<\/span>)\r\n    <span class=\"hljs-function\"><span class=\"hljs-keyword\">public<\/span> DataSource <span class=\"hljs-title\">dataSource<\/span><span class=\"hljs-params\">()<\/span> <\/span>{\r\n\r\n        DruidDataSource dataSource = <span class=\"hljs-keyword\">new<\/span> DruidDataSource();\r\n        dataSource<span class=\"hljs-selector-class\">.setUrl<\/span>(dataSourceProperties.getUrl());\r\n        System<span class=\"hljs-selector-class\">.out<\/span><span class=\"hljs-selector-class\">.println<\/span>(dataSourceProperties.getUrl());\r\n        dataSource<span class=\"hljs-selector-class\">.setDriverClassName<\/span>(dataSourceProperties.getDriverClassName());\r\n        dataSource<span class=\"hljs-selector-class\">.setUsername<\/span>(dataSourceProperties.getUsername());\r\n        dataSource<span class=\"hljs-selector-class\">.setPassword<\/span>(dataSourceProperties.getPassword());\r\n\r\n        <span class=\"hljs-keyword\">return<\/span> dataSource;\r\n\r\n    }\r\n\r\n    <span class=\"hljs-function\"><span class=\"hljs-keyword\">public<\/span> SqlSessionFactory <span class=\"hljs-title\">sqlSessionFactory<\/span><span class=\"hljs-params\">()<\/span> <span class=\"hljs-keyword\">throws<\/span> Exception <\/span>{\r\n        SqlSessionFactoryBean sqlSessionFactoryBean = <span class=\"hljs-keyword\">new<\/span> SqlSessionFactoryBean();\r\n        sqlSessionFactoryBean<span class=\"hljs-selector-class\">.setDataSource<\/span>(dataSource());\r\n        <span class=\"hljs-keyword\">return<\/span> sqlSessionFactoryBean<span class=\"hljs-selector-class\">.getObject<\/span>();\r\n    }\r\n}<\/code><\/pre>\n<p>\u8fd9\u6837\u5b50\u57fa\u672c\u7684\u914d\u7f6e\u5c31\u5b8c\u6210\u4e86<\/p>\n<pre class=\"hljs java\"><code class=\"language-java hljs\"><span class=\"hljs-meta\">@Mapper<\/span>\r\n<span class=\"hljs-keyword\">public<\/span> <span class=\"hljs-class\"><span class=\"hljs-keyword\">interface<\/span> <span class=\"hljs-title\">UserMapper<\/span> <\/span>{\r\n\r\n\r\n    <span class=\"hljs-meta\">@Insert<\/span>(<span class=\"hljs-string\">\"INSERT INTO user (username,email) VALUES (#{username},#{email})\"<\/span>)\r\n    <span class=\"hljs-function\"><span class=\"hljs-keyword\">int<\/span> <span class=\"hljs-title\">insert<\/span><span class=\"hljs-params\">(User user)<\/span><\/span>;\r\n\r\n    <span class=\"hljs-meta\">@Select<\/span>(<span class=\"hljs-string\">\"SELECT * FROM user WHERE id = #{id}\"<\/span>)\r\n    <span class=\"hljs-function\">User <span class=\"hljs-title\">selectById<\/span><span class=\"hljs-params\">(<span class=\"hljs-keyword\">int<\/span> id)<\/span><\/span>;\r\n\r\n}\r\n<\/code><\/pre>\n<p>\u53ea\u9700\u8981\u518dMapper\u4e0a\u52a0\u4e0a@Mapper\u7684Annotation\uff0c\u7136\u540e\u5728Application\u4e2d\u80fd\u591f\u8ba9MapperScan\u626b\u5230\u5c31\u884c\u4e86\u3002<\/p>\n<p>\u8fd9\u65f6\uff0c\u6211\u60f3\u628a\u4e8b\u52a1\u4e5f\u52a0\u4e0a\u53bb\uff0c\u7136\u800c\u7ecf\u8fc7\u6211\u7684\u6d4b\u8bd5\uff0c\u4e8b\u52a1\u9ed8\u8ba4\u4e5f\u81ea\u52a8\u6ce8\u5165\u4e86\u3002\u53ea\u9700\u8981\u518d\u4f60\u60f3\u8981\u7528\u4e8b\u52a1\u7684\u5730\u65b9\u4f7f\u7528@Transactional\u5373\u53ef\u3002<\/p>\n<h2 id=\"h2_4\">\u65b9\u5f0f\u4e8c\uff1a\u4f7f\u7528\u4f20\u7edf\u65b9\u5f0f\u96c6\u6210<\/h2>\n<p>\u4f20\u7edf\u65b9\u5f0f\u5c31\u6ca1\u4ec0\u4e48\u597d\u8bf4\u7684\u4e86\uff0c\u9664\u4e86\u56e0\u4e3a\u6ca1\u6709\u5f15\u5165mybatis-spring-boot-starter\uff0c\u9700\u8981\u624b\u52a8\u6dfb\u52a0\u8bb8\u591a\u5305\u4e4b\u5916\uff0c\u8ddf\u7528Spring\u96c6\u6210\u662f\u4e00\u6bdb\u4e00\u6837\u7684\u3002<\/p>\n<pre class=\"hljs less\"><code class=\"language-java hljs\"><span class=\"hljs-meta\"><span class=\"hljs-variable\">@SpringBootApplication<\/span><\/span>\r\n<span class=\"hljs-meta\"><span class=\"hljs-variable\">@ComponentScan<\/span><\/span>(<span class=\"hljs-string\">\"org.rana.example.annotation\"<\/span>)\r\n<span class=\"hljs-meta\"><span class=\"hljs-variable\">@ImportResource<\/span><\/span>(locations = {<span class=\"hljs-string\">\"applicationContext*.xml\"<\/span>})\r\n<span class=\"hljs-keyword\">public<\/span> <span class=\"hljs-class\"><span class=\"hljs-keyword\">class<\/span> <span class=\"hljs-title\">Application<\/span> <span class=\"hljs-keyword\">implements<\/span> <span class=\"hljs-title\">EmbeddedServletContainerCustomizer<\/span> <\/span>{\r\n\r\n    <span class=\"hljs-function\"><span class=\"hljs-keyword\"><span class=\"hljs-selector-tag\">public<\/span><\/span> <span class=\"hljs-keyword\"><span class=\"hljs-selector-tag\">static<\/span><\/span> <span class=\"hljs-keyword\"><span class=\"hljs-selector-tag\">void<\/span><\/span> <span class=\"hljs-title\"><span class=\"hljs-selector-tag\">main<\/span><\/span><span class=\"hljs-params\">(String[] args)<\/span> <\/span>{\r\n        SpringApplication<span class=\"hljs-selector-class\">.run<\/span>(Application.class, args);\r\n    }\r\n\r\n    <span class=\"hljs-meta\"><span class=\"hljs-variable\">@Override<\/span><\/span>\r\n    <span class=\"hljs-function\"><span class=\"hljs-keyword\">public<\/span> <span class=\"hljs-keyword\">void<\/span> <span class=\"hljs-title\">customize<\/span><span class=\"hljs-params\">(ConfigurableEmbeddedServletContainer container)<\/span> <\/span>{\r\n        container<span class=\"hljs-selector-class\">.setPort<\/span>(<span class=\"hljs-number\">7777<\/span>);\r\n    }\r\n}\r\n<\/code><\/pre>\n<p>\u53ea\u9700\u8981\u518dApplication\u6216\u662f\u5176\u4ed6\u914d\u7f6e\u7c7b\u4e2d\u4f7f\u7528@ImportResource\u5f15\u5165spring\u914d\u7f6e\u6587\u4ef6\u5373\u53ef\u3002<\/p>\n","protected":false},"excerpt":{"rendered":"<p>\u65b9\u5f0f\u4e00\uff1a\u4f7f\u7528Annotation\u81ea\u52a8\u5316\u96c6\u6210 \u5f53\u6211\u6309\u7167\u7f51\u4e0a\u7684\u6559\u7a0b\u914d\u7f6e\u540e\uff0c\u5f88\u7b80\u5355\u561b\uff0c\u57fa\u672c\u4e0a\u5565\u4e5f\u4e0d\u7528\u5e72\uff0c\u914d\u7f6e\u4e2a server: address: localhost &#8230;<\/p>\n<p class=\"read-more\"><a class=\"btn btn-default\" href=\"https:\/\/chenhaitao.com\/.wp-toolkit_I\/2018\/03\/10\/springboot%e6%95%b4%e5%90%88mybatis\/\"> Read More<span class=\"screen-reader-text\">  Read More<\/span><\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"jetpack_post_was_ever_published":false,"_jetpack_newsletter_access":"","_jetpack_dont_email_post_to_subs":false,"_jetpack_newsletter_tier_id":0,"_jetpack_memberships_contains_paywalled_content":false,"_jetpack_memberships_contains_paid_content":false,"footnotes":"","jetpack_publicize_message":"","jetpack_publicize_feature_enabled":true,"jetpack_social_post_already_shared":false,"jetpack_social_options":{"image_generator_settings":{"template":"highway","default_image_id":0,"font":"","enabled":false},"version":2}},"categories":[2],"tags":[6,12],"class_list":["post-38","post","type-post","status-publish","format-standard","hentry","category-2","tag-mybatis","tag-spring-boot"],"jetpack_publicize_connections":[],"jetpack_featured_media_url":"","jetpack_sharing_enabled":true,"jetpack_shortlink":"https:\/\/wp.me\/p9HWWB-C","jetpack-related-posts":[{"id":21,"url":"https:\/\/chenhaitao.com\/.wp-toolkit_I\/2018\/03\/05\/spring%e4%ba%8b%e5%8a%a1%e9%85%8d%e7%bd%ae%e7%9a%84%e4%ba%94%e7%a7%8d%e6%96%b9%e5%bc%8f\/","url_meta":{"origin":38,"position":0},"title":"Spring\u4e8b\u52a1\u914d\u7f6e\u7684\u4e94\u79cd\u65b9\u5f0f","author":"\u6770\u514b\u9648","date":"2018\u5e743\u67085\u65e5","format":false,"excerpt":"Spring\u914d\u7f6e\u6587\u4ef6\u4e2d\u5173\u4e8eSpring\u4e8b\u52a1\u914d\u7f6e\u603b\u662f\u7531\u4e09\u4e2a\u7ec4\u6210\u90e8\u5206\uff0c\u5206\u522b\u662fDataSource\u3001Tra\u2026","rel":"","context":"\u5728\u201c\u6280\u672f\u201d\u4e2d","block_context":{"text":"\u6280\u672f","link":"https:\/\/chenhaitao.com\/.wp-toolkit_I\/category\/%e6%8a%80%e6%9c%af\/"},"img":{"alt_text":"Spring\u4e8b\u52a1\u914d\u7f6e (2)","src":"https:\/\/i0.wp.com\/s1.51cto.com\/wyfs02\/M02\/A3\/BC\/wKioL1mk8N6h1y_wAADWVNHoRj827.jpeg-wh_651x-s_660001656.jpeg?resize=350%2C200&ssl=1","width":350,"height":200,"srcset":"https:\/\/i0.wp.com\/s1.51cto.com\/wyfs02\/M02\/A3\/BC\/wKioL1mk8N6h1y_wAADWVNHoRj827.jpeg-wh_651x-s_660001656.jpeg?resize=350%2C200&ssl=1 1x, https:\/\/i0.wp.com\/s1.51cto.com\/wyfs02\/M02\/A3\/BC\/wKioL1mk8N6h1y_wAADWVNHoRj827.jpeg-wh_651x-s_660001656.jpeg?resize=525%2C300&ssl=1 1.5x"},"classes":[]},{"id":49,"url":"https:\/\/chenhaitao.com\/.wp-toolkit_I\/2018\/03\/15\/centos7%e4%b8%8bsvn%e7%9a%84%e5%ae%89%e8%a3%85%e4%b8%8e%e9%85%8d%e7%bd%ae\/","url_meta":{"origin":38,"position":1},"title":"centos7\u4e0bsvn\u7684\u5b89\u88c5\u4e0e\u914d\u7f6e","author":"\u6770\u514b\u9648","date":"2018\u5e743\u670815\u65e5","format":false,"excerpt":"1.\u73af\u5883 centos7 2.\u5b89\u88c5svn yum -y install subversion 3.\u914d\u2026","rel":"","context":"\u5728\u201c\u8fd0\u7ef4\u201d\u4e2d","block_context":{"text":"\u8fd0\u7ef4","link":"https:\/\/chenhaitao.com\/.wp-toolkit_I\/category\/%e8%bf%90%e7%bb%b4\/"},"img":{"alt_text":"","src":"","width":0,"height":0},"classes":[]},{"id":71,"url":"https:\/\/chenhaitao.com\/.wp-toolkit_I\/2018\/04\/04\/centos7%e4%b8%8brabbitmq%e6%9c%8d%e5%8a%a1%e5%ae%89%e8%a3%85%e9%85%8d%e7%bd%ae\/","url_meta":{"origin":38,"position":2},"title":"CentOS7\u4e0bRabbitMQ\u670d\u52a1\u5b89\u88c5\u914d\u7f6e","author":"\u6770\u514b\u9648","date":"2018\u5e744\u67084\u65e5","format":false,"excerpt":"RabbitMQ\u662f\u6d41\u884c\u7684\u5f00\u6e90\u6d88\u606f\u961f\u5217\u7cfb\u7edf\uff0c\u662fAMQP\uff08Advanced Message Queuin\u2026","rel":"","context":"\u5728\u201c\u8fd0\u7ef4\u201d\u4e2d","block_context":{"text":"\u8fd0\u7ef4","link":"https:\/\/chenhaitao.com\/.wp-toolkit_I\/category\/%e8%bf%90%e7%bb%b4\/"},"img":{"alt_text":"","src":"","width":0,"height":0},"classes":[]},{"id":62,"url":"https:\/\/chenhaitao.com\/.wp-toolkit_I\/2018\/03\/26\/%e8%bd%acoracle11g-for-centos6-5%e5%ae%89%e8%a3%85\/","url_meta":{"origin":38,"position":3},"title":"[\u8f6c]Oracle11g for CentOS6.5\u5b89\u88c5","author":"\u6770\u514b\u9648","date":"2018\u5e743\u670826\u65e5","format":false,"excerpt":"\u4e00 . \u521b\u5efa\u865a\u62df\u673a 1. \u865a\u62df\u673a\u521b\u5efa\u5411\u5bfc \u81ea\u5b9a\u4e49--\u300b\u7a0d\u540e\u5b89\u88c5\u64cd\u4f5c\u7cfb\u7edf--\u300bCentOS 64\u4f4d--\u2026","rel":"","context":"\u5728\u201c\u8fd0\u7ef4\u201d\u4e2d","block_context":{"text":"\u8fd0\u7ef4","link":"https:\/\/chenhaitao.com\/.wp-toolkit_I\/category\/%e8%bf%90%e7%bb%b4\/"},"img":{"alt_text":"","src":"","width":0,"height":0},"classes":[]},{"id":23,"url":"https:\/\/chenhaitao.com\/.wp-toolkit_I\/2018\/03\/06\/springboot-schedule-%e9%85%8d%e7%bd%ae\/","url_meta":{"origin":38,"position":4},"title":"SpringBoot Schedule \u914d\u7f6e","author":"\u6770\u514b\u9648","date":"2018\u5e743\u67086\u65e5","format":false,"excerpt":"1. \u5b9a\u65f6\u4efb\u52a1\u5b9e\u73b0\u65b9\u5f0f \u5b9a\u65f6\u4efb\u52a1\u5b9e\u73b0\u65b9\u5f0f\uff1a Java\u81ea\u5e26\u7684java.util.Timer\u7c7b\uff0c\u8fd9\u4e2a\u7c7b\u5141\u2026","rel":"","context":"\u5728\u201c\u6280\u672f\u201d\u4e2d","block_context":{"text":"\u6280\u672f","link":"https:\/\/chenhaitao.com\/.wp-toolkit_I\/category\/%e6%8a%80%e6%9c%af\/"},"img":{"alt_text":"","src":"","width":0,"height":0},"classes":[]},{"id":12,"url":"https:\/\/chenhaitao.com\/.wp-toolkit_I\/2018\/03\/04\/centos-%e7%ae%80%e5%8d%95%e5%ae%89%e8%a3%85vsftpd-%e6%9c%8d%e5%8a%a1%e5%8f%8a%e9%85%8d%e7%bd%ae%e5%8d%b8%e8%bd%bd\/","url_meta":{"origin":38,"position":5},"title":"centos \u7b80\u5355\u5b89\u88c5vsftpd \u670d\u52a1\u53ca\u914d\u7f6e\u5378\u8f7d","author":"\u6770\u514b\u9648","date":"2018\u5e743\u67084\u65e5","format":false,"excerpt":"\u4e00\u3001\u5b89\u88c5 \u9996\u5148\u7528root\u7528\u6237\u767b\u5f55 1\u3001\u68c0\u6d4b\u7cfb\u7edf\u662f\u5426\u5b89\u88c5\u8fc7vsftpd\uff0c\u547d\u4ee4\u5982\u4e0b\uff1a rpm\u00a0 -qa|\u2026","rel":"","context":"\u5728\u201c\u8fd0\u7ef4\u201d\u4e2d","block_context":{"text":"\u8fd0\u7ef4","link":"https:\/\/chenhaitao.com\/.wp-toolkit_I\/category\/%e8%bf%90%e7%bb%b4\/"},"img":{"alt_text":"","src":"","width":0,"height":0},"classes":[]}],"_links":{"self":[{"href":"https:\/\/chenhaitao.com\/.wp-toolkit_I\/wp-json\/wp\/v2\/posts\/38","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/chenhaitao.com\/.wp-toolkit_I\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/chenhaitao.com\/.wp-toolkit_I\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/chenhaitao.com\/.wp-toolkit_I\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/chenhaitao.com\/.wp-toolkit_I\/wp-json\/wp\/v2\/comments?post=38"}],"version-history":[{"count":1,"href":"https:\/\/chenhaitao.com\/.wp-toolkit_I\/wp-json\/wp\/v2\/posts\/38\/revisions"}],"predecessor-version":[{"id":39,"href":"https:\/\/chenhaitao.com\/.wp-toolkit_I\/wp-json\/wp\/v2\/posts\/38\/revisions\/39"}],"wp:attachment":[{"href":"https:\/\/chenhaitao.com\/.wp-toolkit_I\/wp-json\/wp\/v2\/media?parent=38"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/chenhaitao.com\/.wp-toolkit_I\/wp-json\/wp\/v2\/categories?post=38"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/chenhaitao.com\/.wp-toolkit_I\/wp-json\/wp\/v2\/tags?post=38"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}