jdbc与mybatis及spring
来源:互联网 发布:淘宝直播卖的东西质量 编辑:程序博客网 时间:2024/05/21 20:26
java中做数据库查询最直接的是用jdbc来做,有了mybatis之后,对象的映射关系就可以通过mybatis的xml文件来配置,
spring又提供了良好的框架,集成mybatis,使得使用更方便,但同时spring也可以直接支持jdbc的对象数据映射
如下就分别以jdbc,mybatis,spring-jdbc, spring-mybatis来做一个查询
如数据库中有一个表
我们引入junit来做代码测试,导入junit-4.7.jar,spring-test-3.2.8.RELEASE.jar
1、如果只用jdbc的话,我们只需要引入mysql驱动包,如mysql-connector-java-5.1.31.jar
然后代码如下:
private Connection conn = null; @Before public void before() { try { conn = DriverManager.getConnection( "jdbc:mysql://localhost:3306/press?useUnicode=true&characterEncoding=UTF-8", "test", "test"); } catch (SQLException e) { e.printStackTrace(); } } @Test public void testJdbcQuery() throws SQLException { String sql = "select * from user where id=1"; Statement stmt = conn.createStatement(); ResultSet rs = stmt.executeQuery(sql); ResultSetMetaData meta = rs.getMetaData(); int count = meta.getColumnCount(); int cnt = 0; while (rs.next()) { cnt ++; for (int i = 1; i <= count; i++) { System.out.println(meta.getColumnName(i) + ":" + rs.getString(i)); } } Assert.assertTrue(cnt >= 0);; } @After public void after() { if (conn != null) { try { conn.close(); } catch (SQLException e) { e.printStackTrace(); } } }
结果为:
id:1uid:13uname:lucyrole:0
2、如果用mybatis,则需要加入依赖mybatis-3.2.7.jar
在classpath下面配置文件:
<?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> <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/press?useUnicode=true&characterEncoding=UTF-8" /> <property name="username" value="test" /> <property name="password" value="test" /> </dataSource> </environment> </environments> <mappers> <mapper resource="mybatis/user_mapper.xml" /> </mappers></configuration>在classpath/mybatis下面配置文件user_mapper.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="User"><select id="selectUser" parameterType="java.lang.String"resultType="java.util.Map"><![CDATA[ select * from user where id = #{id} ]]></select><select id="selectUsers" resultType="java.util.Map"><![CDATA[ select * from user; ]]></select></mapper>然后代码如下:
private SqlSession session; @Before public void before() { String resource = "mybatis.xml"; try { Reader reader = Resources.getResourceAsReader(resource); SqlSessionFactory ssf = new SqlSessionFactoryBuilder().build(reader); session = ssf.openSession(); } catch (IOException e) { e.printStackTrace(); } } @Test public void getMap() { Map<String, Object> map = session.selectOne("selectUser", "1"); System.out.println(map); Assert.assertNotNull(map); } @Test public void getMaps() { List<Object> maps = session.selectList("selectUsers"); System.out.println(maps); Assert.assertNotNull(maps); } @After public void after() { if (session != null) { session.close(); } }结果为:
{uid=13, role=0, uname=lucy, id=1}[{uid=13, role=0, uname=lucy, id=1}, {uid=12, role=1, uname=sam, id=2}]
接下来要引入spring框架,spring关于数据库的操作都需要Datasource的支持,spring框架也需要core, context, tx的支持
因此先引入
aopalliance-1.0.jar,commons-logging-1.1.1.jar,mysql-connector-java-5.1.31.jar,spring-aop-3.1.1.RELEASE.jar,spring-asm-3.1.1.RELEASE.jar,spring-beans-3.1.1.RELEASE.jar,spring-context-3.1.1.RELEASE.jar,spring-core-3.1.1.RELEASE.jar,spring-expression-3.1.1.RELEASE.jar,spring-jdbc-3.1.1.RELEASE.jar,spring-tx-3.1.1.RELEASE.jar
3、再看看spring-jdbc写法:
先配置dataSource.xml,这里用的是spring-jdbc的DriverManagerDataSource,当然也可以用dbcpCommonDatasource
<?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: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.1.xsd http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-3.0.xsd"default-autowire="byType"><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/press?useUnicode=true&characterEncoding=UTF-8"/><property name="username" value="test"/><property name="password" value="test"/></bean></beans>然后配置spring-jdbc.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: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.1.xsd http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-3.0.xsd"default-autowire="byType"><import resource="classpath:datasource.xml" /><bean id="jdbcTemplate" class="org.springframework.jdbc.core.JdbcTemplate"><constructor-arg index="0" ref="dataSource"/></bean></beans>然后就可以写测试代码了:
@RunWith(SpringJUnit4ClassRunner.class)@ContextConfiguration(locations = {"classpath:spring-jdbc.xml"})public class SpringJdbcTest { @Autowired private JdbcTemplate jdbcTemplate; @Test public void testJdbcSelect() { jdbcTemplate.query("select * from job_user where id=?", new Object[] {1}, new RowMapper<String>() { public String mapRow(ResultSet rs, int rowNum) throws SQLException { ResultSetMetaData meta = rs.getMetaData(); int count = meta.getColumnCount(); for (int i = 1; i <= count; i++) { System.out.println(meta.getColumnName(i) + ":" + rs.getString(i)); } return null; } }); }}输出结果为:
id:1uid:13uname:lucyrole:0
如果是用spring整合mybatis的话,我们只需要再加入mybatis-spring-1.2.2.jar
然后配置spring-mybatis.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: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.1.xsd http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-3.0.xsd"default-autowire="byType"><import resource="classpath:datasource.xml" /><bean id="sessionTemplate" class="org.mybatis.spring.SqlSessionTemplate"><constructor-arg index="0"><bean class="org.mybatis.spring.SqlSessionFactoryBean"><property name="dataSource" ref="dataSource" /><property name="mapperLocations" value="classpath:mybatis/*_mapper.xml"></property></bean></constructor-arg></bean></beans>然后再写测试代码:
@RunWith(SpringJUnit4ClassRunner.class)@ContextConfiguration(locations = {"classpath:spring-mybatis.xml"})public class SpringMybatisTest { @Autowired private SqlSessionTemplate sqlSession; @Test public void testSelect() { Object ret = sqlSession.selectOne("User.selectUser", "1"); System.out.println(ret); } @Test public void testBatch() { Object ret = sqlSession.selectList("User.selectUsers"); System.out.println(ret); }}结果为:
{uid=13, role=0, uname=lucy, id=1}[{uid=13, role=0, uname=lucy, id=1}, {uid=12, role=1, uname=sam, id=2}]
- jdbc与mybatis及spring
- spring+mybatis+sharding-jdbc
- spring与mybatis整合及事务控制
- spring与mybatis整合及事务控制
- Mybatis及与spring集成入门实例
- spring与mybatis整合及事务控制
- spring与mybatis整合及事务控制
- spring与mybatis整合及事务控制
- spring与mybatis整合及事务控制
- JDBC 与 MyBatis
- Mybatis 与 JDBC 比较
- mybatis与jdbc比较
- JDBC/Spring/MyBatis性能比较
- JDBC / Spring / MyBatis 性能比较
- jdbc,mybatis,mybatis+spring新的理解
- Spring Jdbc Template 与 MyBatis 的比较 开发效率与优缺点
- MyBatis与JDBC的比较
- mybatis与jdbc的比较
- Codeforces 577E Ann and Half-Palindrome 字典树
- 算法导论 第十四章:区间树
- instanceof和getClass()的区别
- 有效检查Java代码的工具:5款调试工具
- 劳累的一天啊
- jdbc与mybatis及spring
- 极光推送使用后初总结
- C语言编程基础7.8
- LeetCode---(50)Pow(x, n)
- 例题3-5 生成元(Digit Generator)
- 以Java属性文件的格式创建Hibernate的配置文件和DTD特殊符号作用
- nodejs的模块机制
- c++ vector push_back 出错或者错误
- HDU 2571-----简单的DP