构建mybatis项目全网最详细

mybaits
创建步骤:
1建个项目
2将需要的包导入主要是mybaits 和mysql-conn包 buid path
3新建mb.xml

<?xml version="1.0" encoding="UTF-8" ?>
<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/user?characterEncoding=utf8" />
			<property name="username" value="root" />
			<property name="password" value="123456" />
		</dataSource>
	</environment>
</environments>
<mappers>
	
	<mapper resource="com/baidu/mapper/StudentMapper.xml"/>
</mappers>

4件util类用来创建session和读取mb.xml(mb.xml最好要放到src下)
private static ThreadLocal local;
private static SqlSessionFactory factory;

static{
local = new ThreadLocal();
InputStream in = null;
try {
in = Resources.getResourceAsStream(“mb.xml”);
factory = new SqlSessionFactoryBuilder().build(in);
} catch (Exception e) {
e.printStackTrace();
}finally{
if(in!=null){
try {
in.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
public static SqlSession getSession(){
SqlSession session = local.get();

	if(session==null){
		session = factory.openSession();
		local.set(session);
	}
	return session;
}	
public static void closeSession(){
	SqlSession session = local.get();
	if(session!=null){
		session.close();
		local.remove();
		local.set(null);
	}
}

5创建pojo
可以加入log4j打印日志 log4j.propertie:加入log4j的jar包会自动读取无需配置
log4j.rootLogger=DEBUG,A3,STDOUT

log4j.appender.STDOUT=org.apache.log4j.ConsoleAppender
log4j.appender.STDOUT.layout=org.apache.log4j.PatternLayout
log4j.appender.STDOUT.layout.ConversionPattern=[%p] [%l] %10.10c - %m%n

log4j.appender.A3=org.apache.log4j.RollingFileAppender
log4j.appender.A3.file=logs/server.log
log4j.appender.A3.MaxFileSize=1024KB
log4j.appender.A3.MaxBackupIndex=10
log4j.appender.A3.layout=org.apache.log4j.PatternLayout
log4j.appender.A3.layout.ConversionPattern=\n\n[%-5p] %d{yyyy-MM-dd HH:mm:ss,SSS} method:%l%n%m%n
6创建mapper.xml映射文件 要与接口同名并且路径要一致

<?xml version="1.0" encoding="UTF-8" ?> insert into student(sname) values(#{sname})
<select id="findall" resultType="com.baidu.entity.Student" statementType="CALLABLE">
	select * from student
</select>
<select id="findbyid" parameterType="int" resultType="com.baidu.entity.Student">
select * from student where id=#{id}
</select>

7编写测试类
//添加学生

SqlSession session=MbSessionFactory.getSession();
try {
	 
	StudentMapper sm=session.getMapper(StudentMapper.class);
	Student s=new Student();
	s.setSex("男");
	s.setSid(5);
	s.setSname("小三");
	sm.addstudent(s);
	session.commit();
	System.out.println("插入成功");
} catch (Exception e) {
	// TODO: handle exception
	System.out.println( "插入失败");
	session.rollback();
}
finally{
	
session.close();
}

tips
#是占位符相当于prepstatement中的?
写法#({类的属性})
如果参数为单值参数,里面可以随便写
#和$的区别
使用模糊查询时 list=sm.finduserbytitle("%s%");
( ) 里 面 只 能 用 v a l u e 而 且 外 面 要 加 ‘ ’ < s e l e c t i d = " f i n d u s e r b y t i t l e 2 " p a r a m e t e r T y p e = " S t r i n g " r e s u l t T y p e = " S t u d e n t " > s e l e c t ∗ f r o m s t u d e n t w h e r e s n a m e l i k e ′ ()里面只能用value 而且外面要加‘’ <select id="finduserbytitle2" parameterType="String" resultType="Student"> select * from student where sname like ' value<selectid="finduserbytitle2"parameterType="String"resultType="Student">selectfromstudentwheresnamelike{value}’

并且jdbc打印的sql语句不带占位符?
select * from student where sname like ‘%s%’
所以为了防止注入尽量不用$

列名与类属性名称不一致的情况:
1使用别名 select id as sid,sname,sex from student
2使用resultmap

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值