Mybatis及与spring集成入门实例
2015-01-23 11:29
471 查看
近日学习Mybatis 3,下载了这个资源(http://download.csdn.net/detail/a499316988/5120026),发现文章写得很好,但里面的例子不是maven的,因此jar并不完整,于是把例子4(两表关联查询)和例子5(mybatis/spring集成)转换为了maven工程。文章末尾可下载工程代码,没兴趣看的同学可直接跳至文章末尾。
1. 建表及插入数据
使用的MySQL 5.5,数据库名是mybatis,共两张表,user和article
2. POM文件
使用了dbcp连接池。不是web工程,这里只有普通application包含的jar
3. spring的applicationContext.xml
4. mybatis的Configuration.xml
User.java
Article.java
User.xml
6. Mybatis的接口类IUserOperation.java
7. 测试类
MybatisTest.java(这个是非spring注入数据源的测试类)
MybatisSprintTest.java(这个是spring注入数据源的测试类)
1. 建表及插入数据
使用的MySQL 5.5,数据库名是mybatis,共两张表,user和article
Create TABLE `user` ( `id` int(11) NOT NULL AUTO_INCREMENT, `userName` varchar(50) DEFAULT NULL, `userAge` int(11) DEFAULT NULL, `userAddress` varchar(200) DEFAULT NULL, PRIMARY KEY (`id`) ) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=utf8; Insert INTO `user` VALUES ('1', 'summer', '100', 'shanghai,pudong');
Create TABLE `article` ( `id` int(11) NOT NULL auto_increment, `userid` int(11) NOT NULL, `title` varchar(100) NOT NULL, `content` text NOT NULL, PRIMARY KEY (`id`) ) ENGINE=InnoDB AUTO_INCREMENT=5 DEFAULT CHARSET=utf8; Insert INTO `article` VALUES ('1', '1', 'test_title', 'test_content'); Insert INTO `article` VALUES ('2', '1', 'test_title_2', 'test_content_2'); Insert INTO `article` VALUES ('3', '1', 'test_title_3', 'test_content_3'); Insert INTO `article` VALUES ('4', '1', 'test_title_4', 'test_content_4');
2. POM文件
使用了dbcp连接池。不是web工程,这里只有普通application包含的jar
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <groupId>spring-mybatis-test</groupId> <artifactId>spring-mybatis-test</artifactId> <version>0.0.1-SNAPSHOT</version> <packaging>jar</packaging> <name>spring-mybatis-test</name> <url>http://maven.apache.org</url> <properties> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> </properties> <dependencies> <dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <version>3.8.1</version> <scope>test</scope> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-context</artifactId> <version>3.2.9.RELEASE</version> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-jdbc</artifactId> <version>3.1.2.RELEASE</version> </dependency> <dependency> <groupId>org.mybatis</groupId> <artifactId>mybatis-spring</artifactId> <version>1.2.0</version> </dependency> <dependency> <groupId>org.mybatis</groupId> <artifactId>mybatis</artifactId> <version>3.2.2</version> </dependency> <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> <version>5.1.22</version> </dependency> <dependency> <groupId>commons-dbcp</groupId> <artifactId>commons-dbcp</artifactId> <version>1.4</version> </dependency> </dependencies> </project>
3. spring的applicationContext.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:context="http://www.springframework.org/schema/context" xmlns:aop="http://www.springframework.org/schema/aop" xmlns:tx="http://www.springframework.org/schema/tx" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.0.xsd"> <bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource"> <property name="driverClassName" value="com.mysql.jdbc.Driver" /> <property name="url" value="jdbc:mysql://127.0.0.1:3306/mybatis?characterEncoding=utf8" /> <property name="username" value="root" /> <property name="password" value="111111" /> </bean> <bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean"> <property name="dataSource" ref="dataSource" /> <property name="configLocation" value="Configuration.xml" /> </bean> <bean id="userMapper" class="org.mybatis.spring.mapper.MapperFactoryBean"> <property name="sqlSessionFactory" ref="sqlSessionFactory" /> <property name="mapperInterface" value="com.ourfuture.test.mybatis.inter.IUserOperation" /> </bean> </beans>
4. mybatis的Configuration.xml
<?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> <typeAlias alias="User" type="com.ourfuture.test.mybatis.model.User" /> <typeAlias alias="Article" type="com.ourfuture.test.mybatis.model.Article" /> </typeAliases> <!-- 使用spring管理数据源的时候,整个environments节点都可以删除 --> <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://127.0.0.1:3306/mybatis" /> <property name="username" value="root" /> <property name="password" value="111111" /> </dataSource> </environment> </environments> <mappers> <mapper resource="com/ourfuture/test/mybatis/model/User.xml" /> </mappers> </configuration>5. mybatis必须的model类及对应的xml文件。
User.java
package com.ourfuture.test.mybatis.model; public class User { private int id; private String userName; private int userAge; private String userAddress; public int getId() { return id; } public void setId(int id) { this.id = id; } public String getUserName() { return userName; } public void setUserName(String userName) { this.userName = userName; } public int getUserAge() { return userAge; } public void setUserAge(int userAge) { this.userAge = userAge; } public String getUserAddress() { return userAddress; } public void setUserAddress(String userAddress) { this.userAddress = userAddress; } }
Article.java
package com.ourfuture.test.mybatis.model; public class Article { private int id; private User user; private String title; private String content; public int getId() { return id; } public void setId(int id) { this.id = id; } public User getUser() { return user; } public void setUser(User user) { this.user = user; } public String getTitle() { return title; } public void setTitle(String title) { this.title = title; } public String getContent() { return content; } public void setContent(String content) { this.content = content; } }
User.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"> <mapper namespace="com.ourfuture.test.mybatis.inter.IUserOperation"> <!-- <mapper namespace="com.ourfuture.test.mybatis.model.User"> --> <select id="selectUserByID" parameterType="int" resultType="User"> select * from `user` where id = #{id} </select> <select id="selectUsers" parameterType="string" resultMap="resultListUser"> select * from user where userName like #{userName} </select> <resultMap type="User" id="resultListUser"> <id column="id" property="id"/> <result column="userName" property="userName"/> <result column="userAge" property="userAge"/> <result column="userAddress" property="userAddress"/> </resultMap> <insert id="addUser" parameterType="User" useGeneratedKeys="true" keyProperty="id"> insert into user(userName, userAge, userAddress) values(#{userName}, #{userAge}, #{userAddress}) </insert> <update id="updateUser" parameterType="User"> update user set userName=#{userName},userAge=#{userAge},userAddress=#{userAddress} where id=#{id} </update> <delete id="deleteUser" parameterType="int"> delete from user where id=#{id} </delete> <resultMap type="Article" id="resultUserArticleList"> <id property="id" column="aid"/> <result property="title" column="title"/> <result property="content" column="content"/> <association property="user" javaType="User"> <id property="id" column="id"/> <result property="userName" column="userName"/> <result property="userAddress" column="userAddress"/> </association> </resultMap> <select id="getUserArticles" parameterType="int" resultMap="resultUserArticleList"> select user.id, user.userName, user.userAddress, article.id aid, article.title, article.content from user, article where user.id = article.userid and user.id = #{id} </select> </mapper>
6. Mybatis的接口类IUserOperation.java
package com.ourfuture.test.mybatis.inter; import java.util.List; import com.ourfuture.test.mybatis.model.Article; import com.ourfuture.test.mybatis.model.User; public interface IUserOperation { public User selectUserByID(int id); public List<User> selectUsers(String userName); public void addUser(User user); public void updateUser(User user); public void deleteUser(int id); public List<Article> getUserArticles(int id); }
7. 测试类
MybatisTest.java(这个是非spring注入数据源的测试类)
package com.ourfuture.test.mybatis; import java.io.Reader; import java.util.List; import org.apache.ibatis.io.Resources; import org.apache.ibatis.session.SqlSession; import org.apache.ibatis.session.SqlSessionFactory; import org.apache.ibatis.session.SqlSessionFactoryBuilder; import com.ourfuture.test.mybatis.inter.IUserOperation; import com.ourfuture.test.mybatis.model.Article; import com.ourfuture.test.mybatis.model.User; public class MybatisTest { private static SqlSessionFactory sqlSessionFactory; private static Reader reader; static { try { reader = Resources.getResourceAsReader("Configuration.xml"); sqlSessionFactory = new SqlSessionFactoryBuilder().build(reader); } catch (Exception e) { e.printStackTrace(); } } public static SqlSessionFactory getSession() { return sqlSessionFactory; } public void getUserList(String userName) { SqlSession session = sqlSessionFactory.openSession(); try { IUserOperation userOperation = session .getMapper(IUserOperation.class); List<User> users = userOperation.selectUsers(userName); for (User user : users) { System.out.println(user.getId() + "\t" + user.getUserName() + "\t" + user.getUserAddress()); } } finally { session.close(); } } public void addUser() { User user = new User(); user.setUserAddress("人民广场"); user.setUserName("飞鸟"); user.setUserAge(80); SqlSession session = sqlSessionFactory.openSession(); try { IUserOperation userOperation = session .getMapper(IUserOperation.class); userOperation.addUser(user); session.commit(); System.out.println("当前增加的用户id为:" + user.getId()); } finally { session.close(); } } public void updateUser() { SqlSession session = sqlSessionFactory.openSession(); try { IUserOperation userOperation = session .getMapper(IUserOperation.class); User user = userOperation.selectUserByID(4); user.setUserAddress("魔都的浦东创新园区"); userOperation.updateUser(user); session.commit(); } finally { session.close(); } } public void deleteUser(int id) { SqlSession session = sqlSessionFactory.openSession(); try { IUserOperation userOperation = session .getMapper(IUserOperation.class); userOperation.deleteUser(id); session.commit(); } finally { session.close(); } } public void test01() { SqlSession session = sqlSessionFactory.openSession(); try { IUserOperation userOperation = session .getMapper(IUserOperation.class); User user = userOperation.selectUserByID(1); System.out.println(user.getUserAddress()); System.out.println(user.getUserName()); } finally { session.close(); } } public void getUserArticles(int userid) { SqlSession session = sqlSessionFactory.openSession(); try { IUserOperation userOperation = session.getMapper(IUserOperation.class); List<Article> articles = userOperation.getUserArticles(userid); for(Article article:articles) { System.out.println(article.getTitle()+":"+article.getContent()+ ":作者是:"+article.getUser().getUserName()+":地址:"+ article.getUser().getUserAddress()); } } finally { session.close(); } } public static void main(String[] args) { MybatisTest obj = new MybatisTest(); // obj.getUserList("%"); // obj.addUser(); // obj.updateUser(); // obj.deleteUser(13); obj.getUserArticles(1); } }
MybatisSprintTest.java(这个是spring注入数据源的测试类)
package com.ourfuture.test.mybatis; import java.util.List; import org.springframework.context.ApplicationContext; import org.springframework.context.support.ClassPathXmlApplicationContext; import com.ourfuture.test.mybatis.inter.IUserOperation; import com.ourfuture.test.mybatis.model.Article; import com.ourfuture.test.mybatis.model.User; public class MybatisSprintTest { private static ApplicationContext ctx; static { ctx = new ClassPathXmlApplicationContext("applicationContext.xml"); } public static void main(String[] args) { IUserOperation mapper = (IUserOperation) ctx.getBean("userMapper"); // 测试id=1的用户查询,根据数据库中的情况,可以改成你自己的. System.out.println("得到用户id=1的用户信息"); User user = mapper.selectUserByID(1); System.out.println(user.getUserAddress()); //得到文章列表测试 System.out.println("得到用户id为1的所有文章列表"); List<Article> articles = mapper.getUserArticles(1); for (Article article : articles) { System.out .println(article.getContent() + "--" + article.getTitle()); } } }完整代码下载地址:http://download.csdn.net/detail/zhu19774279/8389211
相关文章推荐
- ActiveMQ入门实例及与Spring集成
- SpringBoot 入门教程:集成mybatis,redis
- Spring和dwr的集成入门实例
- SpringBoot入门-20(springboot集成mybatis注解形式properties配置,利用@Provider实现动态SQL)
- SpringBoot入门-16(springboot集成mybatis注解形式)
- Mybatis入门实例(四)——MyBatis与Spring 3.X的整合
- dubbo+spring+zookeeper的集成入门实例
- Mybatis集成Spring的实例代码_动力节点Java 学院整理
- 微服务开发的入门级框架Spring Boot详解:集成Mybatis
- SpringBoot入门-19(springboot集成mybatis注解形式增删查改properties配置,利用《script》实现动态SQL)
- springboot入门(二)初步集成mybatis
- Spring Boot入门——集成Mybatis
- MyBatis快速入门(四) MyBatis和Spring集成
- spring,springmvc,mybatis集成实例--增删查改
- Spring集成Redis实例入门
- SpringBoot 入门教程:集成mybatis,redis
- SpringBoot集成mybatis实例
- springboot集成mybatis实例代码
- SpringBoot入门-17(springboot集成mybatis注解形式实现ID自动增长)
- springboot入门(三)-- springboot集成mybatis及mybatis generator工具使用