生活随笔
收集整理的這篇文章主要介紹了
mybatis dao实现 || 接口代理方式实现
小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
目錄
- 1、mybatis環(huán)境搭建
- 2、mybatis dao接口實(shí)現(xiàn)
- 3、動(dòng)態(tài)代理方式,只實(shí)現(xiàn)Mapper接口
mybatis dao層實(shí)現(xiàn)1. 實(shí)現(xiàn)dao層接口
2. 接口代理方式實(shí)現(xiàn)dao代理開發(fā)要求:? Mapper接口開發(fā)方法只需要編寫Mapper接口(相當(dāng)于dao接口),由mybatis框架根據(jù)接口定義創(chuàng)建接口的動(dòng)態(tài)代理對(duì)象,代理對(duì)象的方法體和dao方式實(shí)現(xiàn)的接口一樣。1. mapper.xml 中namespace與mapper接口中全限定名相同
2. mapper接口方法名和mapper.xml中定義的每個(gè)statement的id相同
3. mapper接口方法入?yún)㈩愋?#xff0c;和 statement的paramType相同
4. mapper接口返回值類型,和statement的resultType相同
1、mybatis環(huán)境搭建
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapperPUBLIC "-//mybatis.org//DTD Mapper 3.0//EN""http://mybatis.org/dtd/mybatis-3-mapper.dtd"><mapper namespace="cn.bitqian.dao.UserMapper"><select id="queryAllUser" resultType="user">select * from users1
</select><select id="queryUserByUserId" parameterType="int" resultType="user">select * from users1 where userid = #{id}
</select></mapper>
- mybatis-config.xml 核心配置文件
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE configurationPUBLIC "-//mybatis.org//DTD Config 3.0//EN""http://mybatis.org/dtd/mybatis-3-config.dtd"><configuration><properties resource="jdbc.properties"></properties><typeAliases><typeAlias type="cn.bitqian.entity.User" alias="user"></typeAlias></typeAliases><environments default="development"><environment id="development"><transactionManager type="JDBC"></transactionManager><dataSource type="POOLED"><property name="driver" value="${driver}"/><property name="url" value="${url}"/><property name="username" value="${username}"/><property name="password" value="${password}"/></dataSource></environment></environments><mappers><mapper resource="cn\bitqian\mapper\user-mapper.xml"></mapper></mappers></configuration>
2、mybatis dao接口實(shí)現(xiàn)
package cn
.bitqian
.dao
;import cn
.bitqian
.entity
.User
;import java
.io
.IOException
;
import java
.util
.List
;
public interface UserMapper {public List
<User> queryAllUser() throws IOException
;public User
queryUserByUserId(int userId
);}
package cn
.bitqian
.dao
.impl
;import cn
.bitqian
.dao
.UserMapper
;
import cn
.bitqian
.entity
.User
;
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 java
.io
.IOException
;
import java
.io
.InputStream
;
import java
.util
.List
;
public class UserMapperImpl implements UserMapper {@Overridepublic List
<User> queryAllUser() throws IOException
{InputStream resourceAsStream
= Resources
.getResourceAsStream("mybatis-config.xml");SqlSessionFactory sqlSessionFactory
= new SqlSessionFactoryBuilder().build(resourceAsStream
);SqlSession sqlSession
= sqlSessionFactory
.openSession();List
<User> userList
= sqlSession
.selectList("cn.bitqian.dao.UserMapper.queryAllUser");sqlSession
.close();return userList
;}@Overridepublic User
queryUserByUserId(int userId
) {return null
;}
}
3、動(dòng)態(tài)代理方式,只實(shí)現(xiàn)Mapper接口
優(yōu)點(diǎn)分析:1. 只需實(shí)現(xiàn)mapper接口,定義對(duì)應(yīng)的業(yè)務(wù)方法,注意接口名,
方法名,入?yún)?#xff0c;返回的參數(shù)和mappers的配置一致2. 無需實(shí)現(xiàn)mapper接口,mybatis通過動(dòng)態(tài)代理的方式進(jìn)行實(shí)現(xiàn)了
只需用UserMapper userMapper = sqlSession.getMapper(UserMapper.class);
getMapper api 來創(chuàng)建對(duì)象,進(jìn)行數(shù)據(jù)庫操作
package cn
.bitqian
.service
;import cn
.bitqian
.dao
.UserMapper
;
import cn
.bitqian
.dao
.impl
.UserMapperImpl
;
import cn
.bitqian
.entity
.User
;
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 java
.io
.IOException
;
import java
.io
.InputStream
;
import java
.util
.List
;
public class DemoTest {public static void main(String
[] args
) {UserMapper userMapper
= new UserMapperImpl();try {System
.out
.println(userMapper
.queryAllUser());} catch (IOException e
) {e
.printStackTrace();}test1();test2();}private static UserMapper userMapper
;static {try {InputStream resourceAsStream
= Resources
.getResourceAsStream("mybatis-config.xml");SqlSessionFactory build
= new SqlSessionFactoryBuilder().build(resourceAsStream
);SqlSession sqlSession
= build
.openSession();userMapper
= sqlSession
.getMapper(UserMapper
.class);} catch (IOException e
) {e
.printStackTrace();}}static void test1() {try {List
<User> userList
= userMapper
.queryAllUser();System
.out
.println(userList
);} catch (IOException e
) {e
.printStackTrace();}}static void test2() {User user
= userMapper
.queryUserByUserId(1);System
.out
.println(user
);}}
總結(jié)
以上是生活随笔為你收集整理的mybatis dao实现 || 接口代理方式实现的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。